Обсуждение статьи "DoEasy. Элементы управления (Часть 32): горизонтальный "ScrollBar", прокрутка колесиком мышки"

 

Опубликована статья DoEasy. Элементы управления (Часть 32): горизонтальный "ScrollBar", прокрутка колесиком мышки:

В статье завершим разработку функционала объекта-горизонтальной полосы прокрутки. Сделаем возможность прокрутки содержимого контейнера перемещением ползунка полосы прокрутки и вращением колёсика мышки. Также внесём дополнения в библиотеку с учётом появившейся в терминале новой политики исполнения ордеров и новых кодов ошибок времени выполнения в MQL5.

Для теста возьмём советник из прошлой статьи без каких либо его изменений. Скомпилируем его и запустим на графике, задав в настройках при запуске "No" для режима автоматического изменения размеров контейнера под его содержимое:



Проверим работу всех составляющих созданного функционала горизонтальной полосы прокрутки:


Всё работает так, как и планировалось.

Автор: Artyom Trishkin

 
Артём, так а что библиотека, дальше будет развиваться? Имхо, нужно копать дальше. Анатолий например свою биб-ку перестал публично поддерживать по известным причинам ((
 
Denis Kirichenko #:
Артём, так а что библиотека, дальше будет развиваться? Имхо, нужно копать дальше. Анатолий например свою биб-ку перестал публично поддерживать по известным причинам ((

Да, конечно же будет. Взял паузу в публикациях. Есть визуальный баг, который очень неприятен на глаз - обрезанные области иногда прорисовываются с мельканием. Где-то есть лишняя преждевременная перерисовка графика. Пока не нашёл место - много взаимосвязей - одно лечишь, другое калечишь...

Как найду, исправлю, так и продолжу.

 
Artyom Trishkin #:

Да, конечно же будет. Взял паузу в публикациях. Есть визуальный баг, который очень неприятен на глаз - обрезанные области иногда прорисовываются с мельканием. Где-то есть лишняя преждевременная перерисовка графика. Пока не нашёл место - много взаимосвязей - одно лечишь, другое калечишь...

Как найду, исправлю, так и продолжу.

Тоже столкнулся с этой проблемой, решил так:

class CCanvas_my:public CCanvas
  {
public:
   bool              Resize(const int width,const int height);
  };

bool CCanvas_my::Resize(const int width,const int height)
  {
   if(m_rcname!=NULL && width>0 && height>0)
      if(ArrayResize(m_pixels,width*height)>0)
        {
         m_width =width;
         m_height=height;
        }
   return true;
  }

Замена стандартной функции изменения размеров канваса. Если в вашем коде всё в порядке, то лишних перерисовок не будет.

У меня такого уровня графический интерфейс, используется 10 объектов CCanvas(наследники):


 
Aliaksandr Hryshyn #:

Тоже столкнулся с этой проблемой, решил так:

Замена стандартной функции изменения размеров канваса. Если в вашем коде всё в порядке, то лишних перерисовок не будет.

У меня такого уровня графический интерфейс, используется 10 объектов CCanvas(наследники):


Спасибо. У меня дело нее в изменении размеров. Это в моих методах ошибка.

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