Убрать смену показателей при смене ТФ - страница 2

 
Nikolay Khrushchev:

обратие внимание на его функцию Button. Все завязано на ObjectCreate,
если ObjectCreate выполнился, то обьекту задаются параметры, если нет - не задаются.
Если обьект уже есть на графике, то ObjectCreate не выполнится, вернет false.
Т.е. добавлять эти проверки не имеет смысла.

ObjectCreate будет выполнятся всегда

лучше сделать как предложил Виталий 

только не в ините, а в самой функции 

bool Button(const long              chart_ID=0,               // ID графика 
                       const string            name="BmpLabel",          // имя метки 
                       const int               sub_window=0,             // номер подокна 
                       const int               x=0,                      // координата по оси X 
                       const int               y=0,                      // координата по оси Y 
                       const string            file_on="",               // картинка в режиме On 
                       const string            file_off="",              // картинка в режиме Off 
                       const int               width=0,                  // X-координата области видимости 
                       const int               height=0,                 // Y-координата области видимости 
                       const int               x_offset=10,              // смещение области видимости по X 
                       const int               y_offset=10,              // смещение области видимости по Y 
                       const bool              state=false,              // нажата/отжата 
                       const ENUM_BASE_CORNER  corner=CORNER_LEFT_UPPER, // угол графика для привязки 
                       const ENUM_ANCHOR_POINT anchor=ANCHOR_LEFT_UPPER, // способ привязки  
                       const color             clr=clrRed,               // цвет рамки при выделении 
                       const ENUM_LINE_STYLE   style=STYLE_SOLID,        // стиль линии при выделении 
                       const int               point_width=1,            // размер точки перемещения 
                       const bool              back=false,               // на заднем плане 
                       const bool              selection=false,          // выделить для перемещений 
                       const bool              hidden=true,              // скрыт в списке объектов 
                       const long              z_order=0)                // приоритет на нажатие мышью 
  {
//--- сбросим значение ошибки 
   ResetLastError();
//--- создадим графическую метку 
 

   if(if(ObjectFind(0,"LOGO")<0))
     {
      ObjectCreate(chart_ID,name,OBJ_BITMAP_LABEL,sub_window,0,0)


      //--- установим картинки для режимов On и Off 
      ObjectSetString(chart_ID,name,OBJPROP_BMPFILE,0,file_on);

      ObjectSetString(chart_ID,name,OBJPROP_BMPFILE,1,file_off);

      //--- установим координаты метки 
      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_XOFFSET,x_offset);
      ObjectSetInteger(chart_ID,name,OBJPROP_YOFFSET,y_offset);
      //--- установим, в каком сотоянии находится метка (нажатом или отжатом) 
      ObjectSetInteger(chart_ID,name,OBJPROP_STATE,state);
      //--- установим угол графика, относительно которого будут определяться координаты точки 
      ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
      //--- установим способ привязки 
      ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor);
      //--- установим цвет рамки при включенном режиме выделения объекта 
      ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
      //--- установим стиль линии рамки при включенном режиме выделения объекта 
      ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
      //--- установим размер точки привязки, с помощью которой можно перемещать объект 
      ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,point_width);
      //--- отобразим на переднем (false) или заднем (true) плане 
      ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
      //--- включим (true) или отключим (false) режим перемещения метки мышью 
      ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
      ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
      //--- скроем (true) или отобразим (false) имя графического объекта в списке объектов 
      ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
      //--- установим приоритет на получение события нажатия мыши на графике 
      ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
      //--- успешное выполнение 
      return(true);
     }
   return false;
  }
//+------------------------------------------------------------------+
 
Alekseu Fedotov:

ObjectCreate будет выполнятся всегда

лучше сделать как предложил Виталий 

только не в ините, а в самой функции 

ох как я люблю тех кто спорит не только не проверив элементарные вещи, но даже не открыв справку. прям хочется высказаться, но..
в общем или читайте справку или проверяйте прежде чем спорить )
поставьте этот скрипт дважды на график. Потом посмотрите на функцию Button топик стартера:

if(ObjectCreate(chart_ID,name,OBJ_BITMAP_LABEL,sub_window,0,0))

а потом ответте себе на вопрос, будут ли выполнены функции внутри этого if если обьект уже есть на графике? НЕТ, НЕ БУДУТ. Так же как и в скрипте предложенном мной.
значит если не делать удаление обьектов при деинициализации по причине смены ТФ, новые свойства для обьектов заданы не будут, останутся старые.

Файлы:
 
Nikolay Khrushchev:

ох как я люблю тех кто спорит не только не проверив элементарные вещи, но даже не открыв справку. прям хочется высказаться, но..
в общем или читайте справку или проверяйте прежде чем спорить )
поставьте этот скрипт дважды на график. Потом посмотрите на функцию Button топик стартера:

а потом ответте себе на вопрос, будут ли выполнены функции внутри этого if если обьект уже есть на графике? НЕТ, НЕ БУДУТ. Так же как и в скрипте предложенном мной.
значит если не делать удаление обьектов при деинициализации по причине смены ТФ, новые свойства для обьектов заданы не будут, останутся старые.

Мужики, Спасибо вам больше что вообще откликнулись и помогаете
вот сами кнопки:
https://yadi.sk/d/Nd87BssVX3cGFQ

 
не много не понял, при чем тут скрипт, если это индикатор
 
vebster005:

Мужики, Спасибо вам больше что вообще откликнулись и помогаете
вот сами кнопки:
https://yadi.sk/d/Nd87BssVX3cGFQ

как я советовал, так и работает )

Файлы:
123.mq4  17 kb
 
Nikolay Khrushchev:

как я советовал, так и работает )

ОГРОМНОЕ вам спасибо!!! я не понимаю почему у меня не работало, могли бы вы еще помочь:
1) хотелось бы у вас узнать почему когда показывается меню, далее если закрыть терминал и заново открыть все на стоковом состоянии, можно ли это как то исправить? чтобы было как до закрытия
2) не менее важное но всё же... моли бы помочь сделать так чтобы какие то кнопки в меню были красные(я имею ввиду не просто поменять цвет, как я делал) а именно чтобы что-то было активно а что-то нет

 
Nikolay Khrushchev:

как я советовал, так и работает )

Плюнул вверх и не отошел... 

 
vebster005:

ОГРОМНОЕ вам спасибо!!! я не понимаю почему у меня не работало, могли бы вы еще помочь:
1) хотелось бы у вас узнать почему когда показывается меню, далее если закрыть терминал и заново открыть все на стоковом состоянии, можно ли это как то исправить? чтобы было как до закрытия
2) не менее важное но всё же... моли бы помочь сделать так чтобы какие то кнопки в меню были красные(я имею ввиду не просто поменять цвет, как я делал) а именно чтобы что-то было активно а что-то нет

1) терминал перезапускается. этот случай мы не прописывали.
вот так подойдет if(reason != REASON_CHARTCHANGE && reason != REASON_CLOSE)  {
2) вам нужно лучше освоить работу с объектами ) начните с малого )

Алексей Тарабанов:

Плюнул вверх и не отошел... 

держите нас в курсе )
 
Заметано. Кого в курсе держать? 
 
Nikolay Khrushchev:

1) терминал перезапускается. этот случай мы не прописывали.
вот так подойдет if(reason != REASON_CHARTCHANGE && reason != REASON_CLOSE)  {
2) вам нужно лучше освоить работу с объектами ) начните с малого )

держите нас в курсе )

Пожалуйста добавьте любой текст сверху на кнопку, я добавляю текст и у меня кнопка становится некативной если нажимать на этот текст, работает если скраю нажать на неё

Причина обращения: