错误、漏洞、问题 - 页 1376

 
Vladimir Pastushak:

我们设置了所有的参数,除了脂肪类型外,所有的参数都被保存下来...

重新加载后颜色大小都被保存,只有脂肪类型被删除...

是的,正确。 当终端关闭 时,OBJPROP_TOOLTIP被删除。但物体本身仍然存在。当你试图直接创建这样一个对象时,你不能创建它,因此,你不能改变它的参数,尤其是OBJPROP_TOOLTIP。
 
Vladimir Pastushak:

我们设置了所有的参数,除了脂肪类型外,所有的参数都被保存下来...

重新加载后,颜色大小都被保存,只有Tol类型被删除...

做同样的事,像做恶梦一样忘记它;)

//+------------------------------------------------------------------+
//| Создает кнопку                                                   |
//+------------------------------------------------------------------+
   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:

做同样的事,像做恶梦一样忘记它;)

使用这种方法,按钮的属性将在每次打勾 时发生变化...
 
Vladimir Pastushak:
使用这种方法,按钮的属性将在每次打勾时发生变化...
而且你必须创建一次按钮--在OnInit。
 
Vladimir Pastushak:
使用这种方法,按钮的属性将在每次打勾时发生变化...

这很奇怪。在我的例子中,它们不会在每次打钩 时都发生变化,而是根据我的需要保持,并由我来设置,而且我总是在需要时才创建按钮,而不是像Vladimir建议的那样在OnInit()中创建。

当我需要时,我总是向按钮发送我想要的属性类型。

 
Karputov Vladimir:
创建一次按钮 - 在OnInit。
如果按钮的数量是动态的呢?
 
Vladimir Pastushak:
如果按钮的数量是动态的呢?

在你需要的时候创造--它将永远是你想要的时候。你不需要编造问题--查看它们。所有这些,你将能够根据情况,即时改变工具提示。但按钮不会被重新创建,但它的参数将根据传递给函数的新参数而改变。

我可以给你录一段视频,说明一个对象的描述(工具提示)如何根据其他对象的状态而变化。

 
Artyom Trishkin:

在你需要的时候创造--它将永远是你想要的时候。你不需要编造问题--查看它们。所有这些,你将能够根据情况,即时改变工具提示。但按钮不会被重新创建,但它的参数会根据传递给函数的新参数而改变。

我可以给你录一段视频,说明一个对象的描述(工具提示)如何根据其他对象的状态而变化。

我很乐意观看。
 
Vladimir Pastushak:
我很想看到它。
嗯,今晚不行--已经很晚了。睡觉时间到了。
 
Vladimir Pastushak:

我创建了一些带有按钮的界面,当我创建它时,我设置了一个工具提示。 当我重新启动终端时,工具提示被删除,我必须重新写进去......

这里有一个简单的代码,可以创建一个带有工具提示的按钮,在你重新启动后,工具提示就会消失,试试吧...

下面是它的工作原理。

   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");

这已经在服务台中向你指出了...