Новая статья: Графические интерфейсы III - Простые и многофункциональные кнопки (Глава 1):

 

На сайте mql5.com опубликована статья Графические интерфейсы III: Простые и многофункциональные кнопки (Глава 1):

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

На этот раз рассмотрим такой элемент управления,  как кнопка.

Кнопка — самый простой элемент управления в графическом интерфейсе, с которым может взаимодействовать пользователь. Однако здесь можно предложить несколько различных вариантов реализации. В этой статье создадим три класса для создания кнопок разной сложности (см. перечисление ниже).

  • Обычная кнопка (simple button). Класс CSimpleButton.
  • Кнопка с картинкой (icon button). Класс CIconButton.
  • Сдвоенная кнопка с несколькими функциями (split button). Класс CSplitButton.

Кроме этого, реализуем ещё три класса, с помощью которых можно будет создавать группы взаимосвязанных между собой кнопок:

  • Группа из простых кнопок. Класс CButtonsGroup.
  • Группа из кнопок с картинками. Класс CIconButtonsGroup.
  • Группа радио-кнопок. Класс CRadioButtons.

Кроме этого, будут внесены дополнения для расширения функционала контекстного меню ещё одним режимом. А также в класс формы (CWindow) добавим ещё одно поле с методом, которые позволят однозначно определять, какой именно элемент управления заблокировал форму в момент своей активации. Это позволит создавать условия, когда разблокировать форму может только тот элемент, который её заблокировал.


После компиляции файлов и загрузки тестового эксперта на график вы увидите результат, как показано на скриншоте ниже:

Рис. 4. Тест элемента управления «Кнопка с картинкой».


Автор: Anatoli Kazharski

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