Erreurs, bugs, questions - page 1376

 
Vladimir Pastushak:

Nous avons réglé tous les paramètres et tous les paramètres sont enregistrés sauf le type de graisse...

La taille des couleurs est sauvegardée après le rechargement, seul le type Tol est supprimé...

Faites de même et oubliez-le comme un mauvais rêve ;)

//+------------------------------------------------------------------+
//| Создает кнопку                                                   |
//+------------------------------------------------------------------+
   void CGraphClass::ButtonCreate(const long chart_id=0,               // ID графика
                     const string            name="Button",            // имя кнопки
                     const int               sub_window=0,             // номер подокна
                     const int               x=0,                      // координата по оси X
                     const int               y=0,                      // координата по оси Y
                     const int               width=50,                 // ширина кнопки
                     const int               height=18,                // высота кнопки
                     const ENUM_BASE_CORNER  corner=CORNER_LEFT_UPPER, // угол графика для привязки
                     const string            text="Button",            // текст
                     const string            font="Arial",             // шрифт
                     const int               font_size=10,             // размер шрифта
                     const color             clr=clrBlack,             // цвет текста
                     const color             back_clr=C'236,233,216',  // цвет фона
                     const color             border_clr=clrNONE,       // цвет границы
                     const string            tooltip="\n",             // описание объекта
                     const bool              state=false,              // нажата/отжата
                     const bool              back=false,               // на заднем плане
                     const bool              selection=false,          // выделить для перемещений
                     const bool              hidden=true,              // скрыт в списке объектов
                     const long              z_order=0)                // приоритет на нажатие мышью
     {
      if(ObjectFind(name)<0) ObjectCreate(chart_id,name,OBJ_BUTTON,sub_window,0,0);
      ObjectSetInteger(chart_id,name,OBJPROP_XDISTANCE,x);
      ObjectSetInteger(chart_id,name,OBJPROP_YDISTANCE,y);
      ObjectSetInteger(chart_id,name,OBJPROP_XSIZE,width);
      ObjectSetInteger(chart_id,name,OBJPROP_YSIZE,height);
      ObjectSetInteger(chart_id,name,OBJPROP_CORNER,corner);
      ObjectSetString(chart_id,name,OBJPROP_TEXT,text);
      ObjectSetString(chart_id,name,OBJPROP_FONT,font);
      ObjectSetInteger(chart_id,name,OBJPROP_FONTSIZE,font_size);
      ObjectSetInteger(chart_id,name,OBJPROP_COLOR,clr);
      ObjectSetInteger(chart_id,name,OBJPROP_BGCOLOR,back_clr);
      ObjectSetInteger(chart_id,name,OBJPROP_BORDER_COLOR,border_clr);
      ObjectSetInteger(chart_id,name,OBJPROP_BACK,back);
      ObjectSetInteger(chart_id,name,OBJPROP_STATE,state);
      ObjectSetInteger(chart_id,name,OBJPROP_SELECTABLE,selection);
      ObjectSetInteger(chart_id,name,OBJPROP_SELECTED,selection);
      ObjectSetInteger(chart_id,name,OBJPROP_HIDDEN,hidden);
      ObjectSetString(chart_id,name,OBJPROP_TOOLTIP,tooltip);
      ObjectSetInteger(chart_id,name,OBJPROP_ZORDER,z_order);
     }
//+------------------------------------------------------------------+
 
Artyom Trishkin:

Faites de même et oubliez-le comme un mauvais rêve ;)

Avec cette approche, les propriétés du bouton changeront à chaque tic...
 
Vladimir Pastushak:
Avec cette approche, les propriétés du bouton changeront à chaque tic...
Et vous devez créer le bouton une fois - à OnInit.
 
Vladimir Pastushak:
Avec cette approche, les propriétés du bouton changeront à chaque tic...

C'est étrange. Dans mon cas, ils ne changent pas à chaque tic, mais restent comme je le veux et sont définis par moi, et je crée toujours le bouton quand j'en ai besoin, pas dans OnInit(), comme le conseille Vladimir.

J'envoie toujours au bouton le type de propriété que je veux quand j'en ai besoin.

 
Karputov Vladimir:
Créez un bouton une fois - à OnInit.
Que faire si le nombre de boutons est dynamique ?
 
Vladimir Pastushak:
Et si le nombre de boutons est dynamique ?

Créez quand vous en avez besoin - ce sera toujours quand vous le voulez. Vous n'avez pas besoin d'inventer des problèmes - vérifiez-les. Vous pourrez tout de même modifier les infobulles à la volée, en fonction de la situation. Mais le bouton ne sera pas recréé, mais ses paramètres seront modifiés en fonction des nouveaux paramètres passés à la fonction.

ZS. Je peux vous enregistrer une vidéo montrant comment les descriptions (tooltips) d'un objet changent en fonction de l'état des autres objets.

 
Artyom Trishkin:

Créez quand vous en avez besoin - ce sera toujours quand vous le voulez. Vous n'avez pas besoin d'inventer des problèmes - vérifiez-les. Vous pourrez tout de même modifier les infobulles à la volée, en fonction de la situation. Mais le bouton ne sera pas créé à nouveau, mais ses paramètres changeront en fonction des nouveaux paramètres passés à la fonction.

SZZ. Je peux vous enregistrer une vidéo montrant comment les descriptions (tooltips) d'un objet changent en fonction de l'état des autres objets.

Je serais heureux de le regarder.
 
Vladimir Pastushak:
J'aimerais bien le voir.
Eh bien, pas ce soir - il est tard. C'est l'heure de se coucher.
 
Vladimir Pastushak:

Je crée une interface, avec des boutons, lorsque je crée une infobulle. Lorsque je redémarre le terminal, l'infobulle est supprimée et je dois la réécrire...

Voici un code simple qui crée un bouton avec une info-bulle et après avoir redémarré, l'info-bulle disparaît, essayez-le...

Voici comment cela fonctionne.

   if(ObjectCreate(chart_ID,name,OBJ_BUTTON,sub_window,0,0))
     {
      ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
      ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
      ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
      ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
      ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
      ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);
      ObjectSetString(chart_ID,name,OBJPROP_FONT,font);
      ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size);
      ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
      ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr);
      ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_COLOR,border_clr);
      ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
      ObjectSetInteger(chart_ID,name,OBJPROP_STATE,state);
      ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
      ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
      ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
      ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
     }
   ObjectSetString(chart_ID,name,OBJPROP_TOOLTIP,"ROP_TOOLTIP");

Cela vous a déjà été signalé dans Service Desk...

 
Slawa:

C'est comme ça qu'il faut faire.

Le service d'assistance vous l'a déjà signalé...

Merci, je le comprends déjà.