Коллеги, подскажите как сделать так что бы в обработчик событий приходило событие при клике по OBJ_LABEL расположенному на OBJ_RECTANGLE_LABEL? Что я только не пытался и в фоне создавать OBJ_RECTANGLE_LABEL и OBJPROP_ZORDER менять, при клике по OBJ_LABEL, в обработчик приходит событие от OBJ_RECTANGLE_LABEL
создание объекта не стал выкладывать, там кода много и смасла в нем помоему нет, если OBJ_LABEL создавать на OBJ_RECTANGLE то все нормально
Там имя объекта передается, вот пример. На будущее - пиши такое в раздел индюков плз, тут раздел юмора ))
void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { bool stateSell = false, stateBuy = false; if(id == CHARTEVENT_OBJECT_CLICK) { if(StringFind(sparam, "btnSellEnable") != -1) { if(TrButtons.GetPressedState(sparam, stateSell)) { if(TrButtons.GetPressedState("btnBuyEnable", stateBuy)) { if(stateBuy && stateSell) TradeState = EnableAll; if(stateBuy && !stateSell) TradeState = EnableBuy; if(!stateBuy && stateSell) TradeState = EnableSell; if(!stateBuy && !stateSell) TradeState = DisableAll; SmartDsp.SetTradeEnable(TradeState); } } }
Там имя объекта передается, вот пример. На будущее - пиши такое в раздел индюков плз, тут раздел юмора ))
Напиши код создания этих лейблов плз, что-то там не так
Это и так понятно, что имя передается, оно то мне как раз и нужно, но имя передается не OBJ_LABEL по которому я кликаю, а имя OBJ_RECTANGLE_LABEL и в разном порядке создавал и OBJPROP_ZORDER игрался, хоть закликайся, а клик приходит от OBJ_RECTANGLE_LABEL
если я рисую OBJ_LABEL на OBJ_RECTANGLE , то по клику на OBJ_LABEL, передается имя объекта OBJ_LABEL, а с OBJ_RECTANGLE_LABEL все не так и в фоне его рисовал и не в фоне, все равно клик на себя забирет
Вообще мне это нужно, что бы скрыть разделители периодов в подокне индикатора, там и индкатора то нет, просто нужно подокно без разделителей периодов, но что бы они были в основном окне, все это дело хорошо прячется OBJ_RECTANGLE_LABEL даже когда он в фоне, но объекты на нем не кликабельны
свойство
CHART_SHOW_PERIOD_SEP Отображение вертикальных разделителей между соседними периодами bool
с указанием подокна, вкл./выкл. периоды все равно на всем графике
Задает значение соответствующего свойства в указанном подокне указанного графика:
bool ChartSetInteger( |
- docs.mql4.com
свойство
CHART_SHOW_PERIOD_SEP Отображение вертикальных разделителей между соседними периодами bool
с указанием подокна, вкл./выкл. периоды все равно на всем графике
Задает значение соответствующего свойства в указанном подокне указанного графика:
bool ChartSetInteger( |
Я тебя четко прошу по русски - код создания лейблов. А ты мне пишешь, что тебе нужно )) Тут раздел юмора, но не настолько же )) У тебя этот код секретный, что ли? ))
#property indicator_chart_window void OnInit() { // OBJ_RECTANGLE_LABEL string name = "OBJ_RECTANGLE_LABEL"; ObjectCreate(name, OBJ_RECTANGLE_LABEL, 0, 0, 0); ObjectSetInteger(0, name, OBJPROP_CORNER, 0); ObjectSetInteger(0, name, OBJPROP_XDISTANCE, 10); ObjectSetInteger(0, name, OBJPROP_YDISTANCE, 10); ObjectSetInteger(0, name, OBJPROP_XSIZE, 200); ObjectSetInteger(0, name, OBJPROP_YSIZE, 200); ObjectSetInteger(0, name, OBJPROP_BGCOLOR, Gray); ObjectSetInteger(0, name, OBJPROP_WIDTH, 0); ObjectSetInteger(0, name, OBJPROP_SELECTED, 0); // Выделенность объекта 0 - нет, 1 - да ObjectSetInteger(0, name, OBJPROP_SELECTABLE, 0); // Доступность объекта для редактирования 0 - нет, 1 - да ObjectSetInteger(0, name, OBJPROP_HIDDEN, 1); // Запрет на показ имени графического объекта в списке объектов 0 - нет, 1 - да ObjectSetInteger(0, name, OBJPROP_BACK, 1); // Рисовать объект в фоне 0 - нет, 1 - да ObjectSetInteger(0, name, OBJPROP_ZORDER, 0); // OBJ_LABEL name = "OBJ_LABEL"; ObjectCreate (name, OBJ_LABEL, 0, 0, 0); ObjectSetText(name, "OBJ_LABEL", 20, "Arial Black", Red); ObjectSetInteger(0, name, OBJPROP_CORNER, 0); ObjectSetInteger(0, name, OBJPROP_XDISTANCE, 100); ObjectSetInteger(0, name, OBJPROP_YDISTANCE, 40); ObjectSetInteger(0, name, OBJPROP_SELECTED, 0); // Выделенность объекта 0 - нет, 1 - да ObjectSetInteger(0, name, OBJPROP_SELECTABLE, 0); // Доступность объекта для редактирования 0 - нет, 1 - да ObjectSetInteger(0, name, OBJPROP_HIDDEN, 1); // Запрет на показ имени графического объекта в списке объектов 0 - нет, 1 - да ObjectSetInteger(0, name, OBJPROP_BACK, 0); // Рисовать объект в фоне 0 - нет, 1 - да ObjectSetInteger(0, name, OBJPROP_ZORDER, 1); } void start(){} void OnChartEvent(const int id, // идентификатор события const long& lparam, // параметр события типа long const double& dparam, // параметр события типа double const string& sparam // параметр события типа string ) { // Клик по объекту if (id == CHARTEVENT_OBJECT_CLICK) { Print(sparam); // Выведем в журнал имя объекта по которому кликнули } }
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Коллеги, подскажите как сделать так что бы в обработчик событий приходило событие при клике по OBJ_LABEL расположенному на OBJ_RECTANGLE_LABEL? Что я только не пытался и в фоне создавать OBJ_RECTANGLE_LABEL и OBJPROP_ZORDER менять, при клике по OBJ_LABEL, в обработчик приходит событие от OBJ_RECTANGLE_LABEL
создание объекта не стал выкладывать, там кода много и смасла в нем помоему нет, если OBJ_LABEL создавать на OBJ_RECTANGLE то все нормально