Обсуждение статьи "Рецепты MQL5 - Элементы управления в подокне индикатора - Кнопки" - страница 8

 
C-4:
В МТ5 асинхронное обновление свойств чарта. Т.е. то что мы установили свойство, еще не говорит о том, что терминал его тут же подобрал. Для того, что бы все свойства перечитались терминалом заново и используется функция ChartRedraw(). Также можно использовать функции ChartGet... ObjectGet, в этом случае свойства также будут перечитаны.
Нигде не встречал этой информации. Наткнулся, решение нашел, теперь буду знать.
 
komposter:
Нигде не встречал этой информации. Наткнулся, решение нашел, теперь буду знать.

Что именно? Вот в начале раздела Операции с графиками :

Функции для работы с графиками. Все операции с графиками применимы только в экспертах и скриптах.

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

По этой причине не следует ожидать немедленного визуального обновления графика после вызова данных функций. В общем случае обновление графика производится терминалом автоматически по событиям изменения - поступление новой котировки, изменения размера окна графика и т.д. Для принудительного обновления внешнего вида графика используйте команду на перерисовку графика ChartRedraw().

 
komposter:
Нигде не встречал этой информации. Наткнулся, решение нашел, теперь буду знать.
Разумеется, потому что этой информации нигде нет (оказывается есть, см. выше:))). Сам мучился с этой проблемой, пока не обратился в сервис деск. Там-то мне и подсказали, что изменения свойств объектов на чарте происходит асинхронно. А судя по Вашему примеру это касается свойств и самого чарта.
 
Rosh:

Что именно? Вот в начале раздела Операции с графиками :

Я не говорил, что ее там нет, просто я не встречался (или забыл). Спасибо.

 

Как на счет моего предложения по генерации события CHART_CHANGE при изменении таких свойств графика, как флаг отслеживания событий мыши? Может, сделаете?

 
C-4:
Разумеется, потому что этой информации нигде нет (оказывается есть, см. выше:))). Сам мучился с этой проблемой, пока не обратился в сервис деск. Там-то мне и подсказали, что изменения свойств объектов на чарте происходит асинхронно. А судя по Вашему примеру это касается свойств и самого чарта.

Еще в разделе Графические объекты :

Группа функций, предназначенных для работы с графическими объектами, относящимися к любому указанному графику.

Функции, задающие свойства графических объектов, а также операции создания ObjectCreate() и перемещения ObjectMove() объектов на графике фактически служат для отправки команд графику. При успешном выполнении этих функций команда попадает в общую очередь событий графика. Визуальное изменение свойств графических объектов производится в процессе обработки очереди событий данного графика.

По этой причине не следует ожидать немедленного визуального обновления графических объектов после вызова данных функций. В общем случае обновление графических объектов на чарте производится терминалом автоматически по событиям изменения - поступление новой котировки, изменения размера окна графика и т.д. Для принудительного обновления графических объектов используйте команду на перерисовку графика ChartRedraw().

 
Rosh:

Еще в разделе Графические объекты :

С объектами понятно и привычно, а вот от свойств графика я ожидал другого.

Мне мое предложение больше не повторять? Или в сервис-деск оформить?

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

Как решить вот такую проблему: есть событие CHARTEVENT_MOUSE_MOVE с нажатой левой кнопкой мыши, событие получаю, необходимые действия выполняются - перемещаю объект, но при этом двигается график.

Вот собственно сам вопрос: как сделать так чтоб график не затрагивался?
 
Oleksandr Skrynditsa:
Доброго времени суток. Вижу что последнее сообщение давно было но все же спрошу.

Как решить вот такую проблему: есть событие CHARTEVENT_MOUSE_MOVE с нажатой левой кнопкой мыши, событие получаю, необходимые действия выполняются - перемещаю объект, но при этом двигается график.

Вот собственно сам вопрос: как сделать так чтоб график не затрагивался?

CHART_MOUSE_SCROLL

Документация по MQL5: Константы, перечисления и структуры / Константы графиков / Свойства графиков
Документация по MQL5: Константы, перечисления и структуры / Константы графиков / Свойства графиков
  • www.mql5.com
Признак отрисовки ценового графика. Если установлено значение false, то отключается отрисовка любых атрибутов ценового графика и устраняются все отступы по краям графика: шкалы времени и цены, строка быстрой навигации, метки событий Календаря, значки сделок, тултипы индикаторов и баров, подокна индикаторов, гистограммы объёмов и т.д...