Мигание объекта на графике. - страница 2

 

Я не пойму почему в mql5 функция   ObjectGetInteger вызывает сложности, в mql4 Делаю так же в OnTimer() при перемещении линии Кнопка перемещается за ней. По идее эта функция не должна перерисовывать объект а только менять координаты.

2. Да использую функции  ChartTimePriceToXY, но так же как и в mql4. 

3. Бывает что кнопки подтягиваются с опозданием, но никак не мерцают, а здесь постоянная идет перерисовка объекта(как я понимаю, или не так)

4. Проверил по такой же схеме создание текста OBJ_TEXT, текст работает нормально не мерцает а двигается за линией.

 
 
 int X=ChartGetInteger(0,CHART_WIDTH_IN_PIXELS); 
            int x,y;               
    ChartTimePriceToXY(0,0,TimeCurrent(),price,x,y);//price == Здесь принимается цена из движущейся линии
                                                      
    ButtonMove( 0,name,X-15, y );// сейчас Использую стандартную функцию  ButtonMove y= полученное значение пикселей от времени и цены
  


 X == ширина в пикселях отнимаю дистанцию 15
 
Обнаружил что мерцание происходит даже не связанных объектов. Т.е любую линию на графике двигаю и кнопка мигает.
 
Igor Petrov #:
Обнаружил что мерцание происходит даже не связанных объектов. Т.е любую линию на графике двигаю и кнопка мигает.

перемещения объектов отслеживают в OnChartEvent 

событие CHARTEVENT_OBJECT_DRAG

там уже смотрите тот-ли объект перемещался (по sparam), у него уже считываете координаты и двигаете связанные объекты.

НЕ В OnTimer

проблемы с ObjectGetInteger связаны с тем что он "синхронный" - если его вызвали, то он подвесит программу пока чарт не перерисуется. Поэтому в OnTimer (который может быть частым) его вызывать осмотрительно.

 
Maxim Kuznetsov #:

ObjectGetInteger лучше не трогать в OnTimer и вообще пореже.

Это синхронный вызов и чреват неожиданными тормозами

Так о том и говорю. Не лучше ли смотреть ни изменился ли график?

 

Да согласен, думал еще одну задачу выполнить, динамическое изменение текста а это можно было сделать только в   OnTimer,

но как видно с кнопками эта идея не выполнима только с текстом, который двигается в   OnTimer нормально.  

 
Igor Petrov #:

Да согласен, думал еще одну задачу выполнить, динамическое изменение текста а это можно было сделать только в   OnTimer,

но как видно с кнопками эта идея не выполнима только с текстом, который двигается в   OnTimer нормально.  

Не знаю, что это означает. Но еще есть ChartEvent. Там тож можно ништяки такие кодить. Но вам уже неоднократно подсказывали, что операции с объектами не быстрые (как и ChartTimePriceToXY).