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

 

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

Продолжим изучение элементов управления и на этот раз рассмотрим полосу прокрутки (scrollbar). Так же, как и в предыдущей статье "Рецепты MQL5 - Элементы управления в подокне индикатора - Кнопки", будем работать в подокне индикатора. Упомянутую статью необходимо изучить, так как в ней подробно изложена работа с событиями в функции OnChartEvent(), а здесь о них будет только поверхностное упоминание. В этой статье в качестве примера мы создадим вертикальную полосу прокрутки для большого списка всех показателей финансового инструмента, которые возможно получить средствами MQL5.

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

Полосу прокрутки сделаем максимально простой. Обычно к ней приделывают кнопки со стрелками, но здесь они будут исключены. Прокрутка будет состоять только из фона и ползунка (scroll box или thumb). Ползунок при наведении на него курсора мыши будет менять свой цвет. При нажатии мышью на ползунке цвет также будет меняться, давая пользователю понять, что захват произведен, и ползунок можно перетаскивать. Для создания элементов скроллинга будем использовать графические объекты типа OBJ_RECTANGLE_LABEL (прямоугольная метка).

Рецепты MQL5 - Элементы управления в подокне индикатора - Полоса прокрутки (scrollbar)

Автор: Anatoli Kazharski

 
В последнее время я слежу за всеми статьями Анатолия и должен сказать, что он отличный кодер. Более того, он делится своими знаниями с другими новичками в языке программирования МТ5, такими как я, что я считаю очень щедрым шагом. Я надеюсь, что в будущем Анатолий будет публиковать больше статей.
 

Анатолий, спасибо за Вашу работу и труд!

такой вопрос, есть ли какой-нибудь пример по использованию класса CScroll? из стандартной библиотеки Scrolls.mqh

 
thejobber:

Анатолий, спасибо за Вашу работу и труд!

такой вопрос, есть ли какой-нибудь пример по использованию класса CScroll? из стандартной библиотеки Scrolls.mqh

Спасибо.

Я не использую стандартную библиотеку для разработки интерфейсов с элементами управления.

 
thejobber:

Анатолий, спасибо за Вашу работу и труд!

такой вопрос, есть ли какой-нибудь пример по использованию класса CScroll? из стандартной библиотеки Scrolls.mqh

Есть пример в стандартной поставке


 
спасибо, ещё крутил этот пример... не заметил, тупанул одним словом ))
 
немного прийдётся переделать логику визуализации... я создавал label, и их количество за ранее не было извесно, думал к форме прикрутить скрол, теперь будет ещё проще, будет один объект CListView. натолкнули меня на хорошую мысль ))
 
в CListView у отдельного item'a можно цвет менять?
 

Здравствуйте

Здравствуйте Анатолий Кажарский

Хоть тема и старая, но я хотел поблагодарить вас за отличную и полезную работу.

Мне нужна была полоса прокрутки, но я только мог найти ее использование в ListViews, но здесь я смог вытащить функции полосы прокрутки и использовать их.

Я только заметил, что, хотя эта часть логически может всегда работать, но может быть не тем, что вы хотели написать:

//+------------------------------------------------------------------+
//| Изменение цвета поля прокрутки при наведении курсора |
//+------------------------------------------------------------------+
void ChangeScrollbarThumbColorOnHover(int x,int y)
  {
//--- Если курсор находится в области поля прокрутки, сделайте цвет темнее
   if(x>scrollbar_thumb_x1 && x<scrollbar_thumb_x2 && y>scrollbar_thumb_y1 && y<scrollbar_thumb_x2)

      SetScrollbarThumbColor(scrollbar_thumb_color_on_hover);
//--- Если курсор находится за пределами границ поля прокрутки
   else
     {
      //--- Если кнопка мыши отпущена, установите стандартный цвет поля прокрутки
      if(!mouse_button_state)
         SetScrollbarThumbColor(scrollbar_thumb_color);
     }
  }

Еще раз спасибо за отличную работу.