Как сделать собственный графический объект "непрозрачным" для двойного клика мыши? - страница 3

 
foxmag:

1. Есть мой собственный графический объект OBJ_LABEL с именем my_object, обладающий свойством невыделяемости:

2. Под ним находится линия какого-нибудь индикатора, например, простая средняя (все равно, что именно)

3. Я делаю два последовательных клика мышью по моему объекту my_object с промежутком между ними менее 500 миллисекунд (например, чтобы нарастить на 2 значение некоторой переменной, что управляется как раз нажатием на my_object). При этом нижняя линия воспринимает два моих клика как двойной клик и открывает окно со свойствами линии, что мне совсем не нужно и что делает невозможным дальнейшее кликанье по моему объекту. Я вынужден закрывать появившееся окно, а потом кликать по моему объекту нужное мне количество раз, соблюдая между кликаньями необходимый временной интервал не менее 500 миллисекунд (т.е. сравнительно медленно), чтобы не допустить двойной щелчок, который опять откроет окно со свойствами линии, находящейся под моим объектом my_object.

Посмотрите мое видео на стр. 1, надеюсь, поможет. Мой вопрос собственно состоял в том, не пропустил ли я чего у разработчиков МТ. Вдруг они уже защитили пользовательские графические объекты от сквозного кликанья, чтобы все, что находится под ними, не реагировало на щелканье мышью.

На момент наведения курсора на ваш объект, ставьте:

ObjectSetInteger(0,"my_object",OBJPROP_SELECTABLE,true);

В момент ухода с вашего объекта, ставьте:

ObjectSetInteger(0,"my_object",OBJPROP_SELECTABLE,false);

Вопрос решен.

 
Также можно менять значение свойства OBJPROP_ZORDER (приоритет на получение события нажатия) при наведении курсора на ваш объект.
 
foxmag:

Вряд ли можно считать Ваши оба предложения желанными решениями проблемы. поскольку уже существующее решение - нажимать на мышь достаточно редко, чтобы не вызывать двойной щелчок - по моему мнению, лучше. И все же спасибо за участие.

Я намекнул, что есть и другие события мышки, которые можно использовать для взаимодействия с объектами. Не только клик, но и кастомный дабл-клик (как Вы используете) и клик правой кнопкой мышки с предварительной дизактивацией штатного меню.

Есть также свойство

OBJPROP_SELECTED


которым можно убирать ненужную выделенность объекта.

 

Также, можно пользоваться этими функциями:

      ChartSetInteger(0,CHART_DRAG_TRADE_LEVELS,0);  

      ChartSetInteger(0,CHART_SHOW_OBJECT_DESCR,0); 

Первая включает/отключает перемещение торговых уровней.

Вторая включает/отключает всплывающие подсказки объектов.

Для правильного использования нужно определять текущую область курсора и включать/отключать эти опции при пересечении польз.объектов.

Настройки платформы - Начало работы - Справка по MetaTrader 5
Настройки платформы - Начало работы - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая платформа обладает множеством настроек, что позволяет организовать работу в ней так, как это удобно именно вам. Выполните команду " Настройки" меню "Сервис" или нажмите "Ctrl+O". Графики — общая настройка отображения ценовых графиков, а также настройка параметров управления объектами: выделение объектов после их создания, немедленная...
 
Реter Konow:

На момент наведения курсора на ваш объект, ставьте:

В момент ухода с вашего объекта, ставьте:

Вопрос решен.

Не, Peter там совсем другая проблема. Объект по которому надо тыкать работает как инкремент, а под него может попасть другой объект или отображение индикатора. Вот свойства ненужного объекта или индикатора и отображаются.
 
Alexey Viktorov:
Не, Peter там совсем другая проблема. Объект по которому надо тыкать работает как инкремент, а под него может попасть другой объект или отображение индикатора. Вот свойства ненужного объекта или индикатора и отображаются.

Ок. А почему OBJPROP_ZORDER не помогает?

Давно не работал с МТ-объектами и не помню всех нюансов.

 
Реter Konow:

Ок. А почему OBJPROP_ZORDER не помогает?

Давно не работал с МТ-объектами и не помню всех нюансов.

Я с этим вообще не связывался. Ну, как минимум к индикатору это никак не прицепить.

 
Реter Konow:

Ок. А почему OBJPROP_ZORDER не помогает?

Давно не работал с МТ-объектами и не помню всех нюансов.

Вообще, странно. Если расположить простую МТ-шную кнопку на графике и нажимать ее, объекты на заднем фоне будут реагировать?? Тут, что то не так...

Я столько работаю с канвасом, что МТ-объекты вообще вылетили из головы...

Рецепты MQL5 - Элементы управления в подокне индикатора - Кнопки
Рецепты MQL5 - Элементы управления в подокне индикатора - Кнопки
  • www.mql5.com
В этой статье мы рассмотрим пример разработки пользовательского интерфейса с такими элементами управления, как кнопки. В качестве подсказки пользователю о том, что с элементом можно взаимодействовать, сделаем так, чтобы кнопка при наведении на нее курсора мыши меняла цвет. При наведении курсора мыши на кнопку цвет будет немного затеняться, а...
 
Реter Konow:

Вообще, странно. Если расположить простую МТ-шную кнопку на графике и нажимать ее, объекты на заднем фоне будут реагировать??

Будут реагировать в моем случае, т.к мой объект НЕВЫДЕЛЯЕМ. И первый на реагирование на очереди ровнехонько под ним.

 
Простите, господа, я самоликвидируюсь ). Всем спасибо.
Причина обращения: