Как нажать на кнопку, не нажимая на других объектах

 

Привет всем!

Есть пользовательский интерфейс индикатора, состоящий из нескольких кнопок, висящих поверх основного графика.

У меня включена опция в MetaTrader "Выделять объект по одиночному клику" - очень удобно, так как работаю со множеством графических построений. Не могу от этого отказаться. 

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


Подскажите, плз, как это можно решить?

1) Перехватить клик в коде и отменить выделение? Если такое возможно, то как?

2) При mouse-over над областью интерфейса, принимать клик только по кнопкам. Как это можно реализовать?

3) ... другие идеи?


Заранее спасибо!

 

Сервис - Объекты - Примагничивание 

Уменьшить значение 

 
Yevgen Drumachyk:

Привет всем!

Есть пользовательский интерфейс индикатора, состоящий из нескольких кнопок, висящих поверх основного графика.

Попробуйте добавить приоритет кнопкам.

ObjectSetInteger(0, name, OBJPROP_ZORDER, 1);
 

Спасибо за идеи! 

Вот что получается:

1. На кнопках у меня давно стоит ZORDER = 100

2. Любой создаваемый графический объект имеет ZORDER = 0, что является более низким приоритетом, как я понял из документации.

3. На обработку события "CHARTEVENT_OBJECT_CLICK" я поставил такую команду:

Print("Object clicked: " + sparam + " | ZORDER = " + ObjectGetInteger(0,sparam,OBJPROP_ZORDER)); 


4. Нажимаю на кнопку 1 раз (рядом есть линия). Результат в логе:

2021.11.07 08:34:59.262 ... Object clicked: CustomColor_Button2_1 | ZORDER = 100

И ВСЕ! То есть клик получила ТОЛЬКО кнопка! Но не линия. Линия при этом перекрасилась! То есть ZORDER работает правильно.

Вопрос: каким образом линия всё же выделилась до того, как кнопка получила клик?..

Есть ли идеи?

P.S. Поправка! Эта проблема есть только в MQL4. В MQL5 работает правильно (соседняя линия не выделяется и не перекрашивается)! Мне теперь как-то перенести этот топик в MQL4-форум?

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