Скачать MetaTrader 5

Использование свойства CHART_BRING_TO_TOP

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
khorosh
10089
khorosh  
Есть у меня одно небольшое окно графика, которое я использую как информационное табло. Хочу, чтобы оно всегда было поверх остальных окон. Вставляю в шаблон индикатора команду ChartSetInteger(0,CHART_BRING_TO_TOP,true); и вешаю индикатор на график этого табло. По каждому тику это окно вылазит наружу. Однако это мешает работе с другими графиками. Например, открываю контекстное меню другого графика, но по приходу тика на график табло окно контекстного меню тут же закрывается. Что посоветуете?
Igor Volodin
4189
Igor Volodin  
khorosh:
Есть у меня одно небольшое окно графика, которое я использую как информационное табло. Хочу, чтобы оно всегда было поверх остальных окон. Вставляю в шаблон индикатора команду ChartSetInteger(0,CHART_BRING_TO_TOP,true); и вешаю индикатор на график этого табло. По каждому тику это окно вылазит наружу. Однако это мешает работе с другими графиками. Например, открываю контекстное меню другого графика, но по приходу тика на график табло окно контекстного меню тут же закрывается. Что посоветуете?
Делать bringtotop по наведению
khorosh
10089
khorosh  
Igor Volodin:
Делать bringtotop по наведению
А  как это, ссылку не можете дать, где почитать?
Artyom Trishkin
Модератор
89199
Artyom Trishkin  
khorosh:
А  как это, ссылку не можете дать, где почитать?
Для большего понимания - CHART_BRING_TO_TOP делает этот график активным. Соответственно, с каждым тиком он перетягивает фокус на себя.
khorosh
10089
khorosh  
Artyom Trishkin:
Для большего понимания - CHART_BRING_TO_TOP делает этот график активным. Соответственно, с каждым тиком он перетягивает фокус на себя.
Это я понял. Меня интересует может ли быть окно графика неактивным и быть поверх других окон. К примеру как окно котировок.
Igor Volodin
4189
Igor Volodin  
khorosh:
А  как это, ссылку не можете дать, где почитать?
пример из справки:
//+------------------------------------------------------------------+ 
//| Expert initialization function                                   | 
//+------------------------------------------------------------------+ 
void OnInit() 
  { 
//--- включение сообщений о перемещении мыши по окну чарта 
   ChartSetInteger(0,CHART_EVENT_MOUSE_MOVE,1); 
  } 
//+------------------------------------------------------------------+ 
//| MouseState                                                       | 
//+------------------------------------------------------------------+ 
string MouseState(uint state) 
  { 
   string res; 
   res+="\nML: "   +(((state& 1)== 1)?"DN":"UP");   // mouse left 
   res+="\nMR: "   +(((state& 2)== 2)?"DN":"UP");   // mouse right  
   res+="\nMM: "   +(((state&16)==16)?"DN":"UP");   // mouse middle 
   res+="\nMX: "   +(((state&32)==32)?"DN":"UP");   // mouse first X key 
   res+="\nMY: "   +(((state&64)==64)?"DN":"UP");   // mouse second X key 
   res+="\nSHIFT: "+(((state& 4)== 4)?"DN":"UP");   // shift key 
   res+="\nCTRL: " +(((state& 8)== 8)?"DN":"UP");   // control key 
   return(res); 
  } 
//+------------------------------------------------------------------+ 
//| ChartEvent function                                              | 
//+------------------------------------------------------------------+ 
void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam) 
  { 
   if(id==CHARTEVENT_MOUSE_MOVE) 
      Comment("POINT: ",(int)lparam,",",(int)dparam,"\n",MouseState((uint)sparam)); 

//вот тут проверяете принадлежность координат курсора к области, а также уход из нее и реализуете нужное поведение


  }
khorosh
10089
khorosh  
Igor Volodin:
пример из справки:
Спасибо, но как пользоваться функцией OnChartEvent я знаю. Меня интересует как сделать окно графика, чтобы оно было поверх всех остальных графиков и было неактивным.
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий