Обсуждение статьи "Компоненты View и Controller для таблиц в парадигме MVC на MQL5: Контейнеры"

 

Опубликована статья Компоненты View и Controller для таблиц в парадигме MVC на MQL5: Контейнеры:

В статье рассмотрим создание элемента управления "Контейнер" с возможностью прокрутки его содержимого. В процессе будут доработаны уже готовые классы элементов управления графической библиотеки.

В рамках разработки элемента управления TableView в парадигме MVC (Model-View-Controller) мы уже создали компонент Model — модель таблицы, и приступили к созданию компонентов View и Controller. В прошлой статье были созданы простые, но достаточно функциональные элементы управления. Из таких элементов и будут собираться сложные элементы управления. Сегодня напишем классы элементов управления Panel, GroupBox и Container — все три элемента являются контейнерами для размещения на них различных элементов управления.

  • Элемент управления Panel — это панель, позволяющая размещать на себе иные элементы управления в любом количестве. При перемещении панели на новые координаты, все расположенные на ней элементы управления, также перемещаются совместно с панелью. Таким образом, панель является контейнером для расположенных на ней элементов управления. Но этот элемент не имеет полос прокрутки, позволяющих прокручивать содержимое контейнера в случае, если оно выходит за границы панели. Такое содержимое просто обрезается по границам контейнера.
  • Элемент управления GroupBox — набор элементов, организованный в одну группу. Унаследован от панели и предоставляет возможность сгруппировать элементы по какому-либо их общему назначению, например — группа элементов RadioButton, где может быть выбран лишь один элемент из всей группы, а с остальных элементов группы при этом выделение снимается.
  • Элемент управления Container — контейнер. Позволяет прикрепить к себе только один элемент управления. Если прикреплённый элемент выходит за пределы контейнера, то у контейнера появляются полосы прокрутки, позволяющие прокручивать содержимое контейнера. Чтобы разместить любое количество элементов управления в контейнере, необходимо в нём разместить панель, и уже к панели прикреплять необходимое количество элементов управления. Таким образом контейнер будет прокручивать панель, а уже она будет смещать своё содержимое вслед за прокруткой.

Таким образом нам потребуется создать, кроме трёх указанных основных элементов управления, классы для создания полос прокрутки — класс ползунка (Thumb) и класс полосы прокрутки (ScrollBar). Таких классов будет по два — для вертикальной и для горизонтальной полос прокрутки.

Скомпилируем индикатор и запустим его на графике:


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

Автор: Artyom Trishkin