Библиотека "Easy And Fast GUI" для создания графических интерфейсов на MQL

С этой статьи я начинаю еще одну серию, относящуюся к разработке графических интерфейсов. На текущий момент нет ни одной библиотеки кода, которая позволяла бы легко и быстро создавать качественные графические интерфейсы в MQL-приложениях. Я имею в виду графические интерфейсы, к которым мы все привыкли в известных операционных системах.

Цель проекта — дать конечному пользователю такую возможность и научить это делать с помощью моей библиотеки. Я постарался сделать ее максимально понятной в изучении, с возможностями дальнейшего развития.

Что получит читатель при прочтении этой серии статей?

1. Цель проекта — дать возможность создавать максимально интуитивно понятные интерфейсы для конечного пользователя. А тем, кто будет эти интерфейсы создавать — максимально понятную в изучении и использовании библиотеку кода, которую можно будет развивать дальше.

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

3. Более опытные получат еще одну реализацию библиотеки для построения графических интерфейсов и смогут сразу приступить к реализации своих идей. Хорошо, когда есть из чего выбирать.

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

Я назвал метод изложения, который будет использоваться в этой серии статей — «попытка имитации идеальной последовательности». Дело в том, что в процессе реальной разработки больших проектов, последовательность действий и ход мыслей намного более беспорядочны и состоят из множества экспериментов, проб и ошибок. Здесь же все эти сложности останутся за кадром. Тем, кто впервые сталкивается с проектами такого масштаба, рекомендуется повторять все действия для лучшего закрепления материала при изучении этой библиотеки, а точнее процесса ее создания. Ведь серия этих статей дает возможность представить весь ход мыслей в идеальной последовательности, когда все ответы на большинство вопросов уже есть и все части проекта создаются по мере возникновения их необходимости.


Список статей (глав) первой части:

Графические интерфейсы I: Подготовка структуры библиотеки (Глава 1)
  • - Список элементов управления
  • - Базовые классы стандартной библиотеки в качестве объектов-примитивов
  • - Производные классы объектов-примитивов с дополнительными методами
  • - Базовый класс для всех элементов управления
  • - Тест обработчиков событий библиотеки и класса приложения

Графические интерфейсы I: Форма для элементов управления (Глава 2)
  • - Класс формы для элементов управления
  • - Методы для создания формы
  • - Установка формы на график

Графические интерфейсы I: "Оживление" графического интерфейса (Глава 3)
  • - Управление графическим интерфейсом
  • - Функционал для возможности перемещения формы
  • - Тест перемещения формы на графике
  • - Изменение внешнего вида элементов интерфейса при наведении курсора

Графические интерфейсы I: Функции для кнопок формы и удаление элементов интерфейса (Глава 4)
  • - Функции для кнопок формы
  • - Удаление элементов интерфейса

Графические интерфейсы I: Тестируем библиотеку в программах разных типов и в терминале MetaTrader 4 (Глава 5)
  • - Использование формы в индикаторах
  • - Использование формы в скриптах
  • - Использование библиотеки в Metatrader 4



Список статей (глав) второй части:

Графические интерфейсы II: Элемент «Пункт меню» (Глава 1)
  • - Главное меню программы
  • - Разработка класса для создания пункта меню
  • - Тест установки пункта меню
  • - Доработка главных классов библиотеки

Графические интерфейсы II: Элементы «Разделительная линия» и «Контекстное меню» (Глава 2)
  • - Разработка класса для создания разделительной линии.
  • - Тест установки разделительной линии
  • - Разработка класса для создания контекстного меню.
  • - Тест установки контекстного меню
  • - Доработка класса для хранения указателей на все элементы

Графические интерфейсы II: Настройка обработчиков событий библиотеки (Глава 3)

  • - Персональные массивы элементов
  • - Управление состоянием графика
  • - Идентификаторы для внешнего и внутреннего использования
  • - Доработка класса контекстного меню
  • - Доработка класса пункта меню
  • - Доработка главного класса обработки событий графического интерфейса
  • - Предварительный тест обработчиков событий
  • - Тест нескольких контекстных меню и тонкая настройка
  • - Тест прихода сообщений в пользовательский класс приложения

Графические интерфейсы II: Элемент «Главное меню» (Глава 4)
  • - Разработка класса для создания главного меню
  • - Тест установки главного меню
  • - Блокировка неактивных элементов управления
  • - Методы для взаимодействия с главным меню
  • - Финальный тест главного меню



Список статей (глав) третьей части:

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

Графические интерфейсы III: Группы простых и многофункциональных кнопок (Глава 2)
  • - Разработка класса для создания групп простых кнопок
  • - Разработка класса для создания групп радио-кнопок
  • - Разработка класса для создания групп кнопок с картинками



Список статей (глав) четвёртой части:

Графические интерфейсы IV: Информационные элементы интерфейса (Глава 1)
  • - Элемент «Статусная строка»
  • - Тест строки состояния
  • - Элемент «Всплывающая подсказка»
  • - Тест всплывающих подсказок
  • - Персональный массив для всплывающих подсказок

Графические интерфейсы IV: Многооконный режим и система приоритетов (Глава 2)
  • - Многооконный режим
  • - Тест многооконного режима
  • - Доработка системы приоритетов на нажатие левой кнопкой мыши



Список статей (глав) пятой части:


Графические интерфейсы V: Вертикальная и горизонтальная полоса прокрутки (Глава 1)
  • - Элемент «Полоса прокрутки»
  • - Базовый класс элемента
  • - Производные классы элемента

Графические интерфейсы V: Элемент «Список» (Глава 2)
  • - Элемент «Список»
  • - Разработка класса для создания элемента
  • - Тест установки списка
  • - Методы для управления элементом
  • - Ускоренная перемотка списка

Графические интерфейсы V: Элемент «Комбинированный список» (Глава 3)
  • - Элемент «Комбинированный список»
  • - Разработка класса для создания элемента
  • - Методы для обработки событий элемента
  • - Связывание класса элемента с движком библиотеки
  • - Тест элемента в графическом интерфейсе пользовательского приложения



Список статей (глав) шестой части:


Графические интерфейсы VI: Чекбоксы, поля ввода и их смешанные типы (Глава 1)
  • - Элемент «Чекбокс»
  • - Разработка класса для создания элемента «Чекбокс»
  • - Тест элемента «Чекбокс»
  • - Элемент «Поле ввода»
  • - Разработка класса для создания элемента «Поле ввода»
  • - Тест элемента «Поле ввода»
  • - Другие элементы управления с чекбоксами

Графические интерфейсы VI: Элементы "Слайдер" и "Двухсторонний слайдер" (Глава 2)
  • - Элемент «Слайдер»
  • - Разработка класса для создания элемента «Слайдер»
  • - Тест элемента «Слайдер»
  • - Элемент «Двухсторонний слайдер»
  • - Разработка класса для создания элемента «Двухсторонний слайдер»
  • - Тест элемента «Двухсторонний слайдер»



Список статей (глав) седьмой части:


Графические интерфейсы VII: Элементы «Таблицы» (Глава 1)
  • - Элемент «Таблица из текстовых меток»
  • - Разработка класса CLabelsTable
  • - Тест таблицы из текстовых меток
  • - Элемент «Таблица из полей ввода»
  • - Разработка класса CTable
  • - Тест таблицы из полей ввода
  • - Элемент «Нарисованная таблица»
  • - Разработка класса CCanvasTable
  • - Тест нарисованной таблицы

Графические интерфейсы VII: Элементы «Вкладки» (Глава 2)
  • - Элемент «Вкладки»
  • - Разработка класса для создания элемента «Вкладки»
  • - Тест элемента «Вкладки»



Список статей (глав) восьмой части:


Графические интерфейсы VIII: Элементы «Календари» (Глава 1)
  • - Элемент «Календарь»
  • - Описание структуры CDateTime
  • - Разработка класса CCalendar
  • - Обработчики событий календаря
  • - Тест элемента «Календарь»
  • - Элемент «Выпадающий календарь»
  • - Класс CDropCalendar
  • - Тест элемента «Выпадающий календарь»

Графические интерфейсы VIII: Элемент «Древовидный список» (Глава 2)
  • - Элемент «Древовидный список»
  • - Разработка класса CTreeItem для создания пункта древовидного списка
  • - Класс CPointer для создания указателя курсора мыши
  • - Разработка класса CTreeView для создания древовидного списка
  • - Параметры для формирования списков элемента
  • - Методы для управления списками элемента
  • - Управление шириной областей списков
  • - Режим пунктов-вкладок
  • - Методы для обработки событий
  • - Интеграция элемента в движок библиотеки
  • - Тест элемента «Древовидный список»

Графические интерфейсы VIII: Элемент «Файловый навигатор» (Глава 3)
  • - Элемент «Файловый навигатор»
  • - Разработка класса CFileNavigator
  • - Тест файлового навигатора




Список статей (глав) девятой части:


Графические интерфейсы IX: Элемент "Цветовая палитра для выбора цвета" (Глава 1)

  • - Элемент «Цветовая палитра для выбора цвета»
  • - Разработка класса CColorPicker
  • - Методы для обработки событий элемента
  • - Кнопка для вызова цветовой панели
  • - Тест элементов


Графические интерфейсы IX: Элементы "Индикатор выполнения" и "Линейный график" (Глава 2)
  • - Элемент «Индикатор выполнения»
  • - Разработка класса CProgressBar
  • - Тест индикатора выполнения
  • - Элемент «Линейный график»
  • - Доработка классов из стандартной библиотеки
  • - Разработка класса CLineGraph
  • - Пишем приложение для теста линейного графика



Список статей (глав) десятой части:


Графические интерфейсы X: Обновления для библиотеки Easy And Fast (build 2)
  • - Список обновлений
  • - Приложение для теста обновлений

Графические интерфейсы X: Обновления для библиотеки Easy And Fast (build 3)
  • - Список обновлений
  • - Приложение для теста обновлений

  • - Разработка класса для создания элемента «Стандартный график»
  • - Приложение для теста элемента
  • - Оптимизация таймера и обработчика событий движка библиотеки
  • - Оптимизация элементов "Древовидный список" и "Файловый навигатор"
  • - Новые ярлыки для папок и файлов в файловом навигаторе

  • - Элемент "Текстовое поле ввода"
  • - Класс для создания элемента "Текстовое поле ввода"
  • - Элемент "Слайдер картинок"
  • - Класс для создания элемента "Слайдер картинок"
  • - Элементы "Текстовая метка" и "Картинка"
  • - Класс CFonts для работы со шрифтами
  • - Список дополнительных обновлений библиотеки
  • - Приложение для теста элемента

  • - Элемент "Время"
  • - Класс для создания элемента "Время"
  • - Элемент "Список с чекбоксами"
  • - Класс для создания списка из чекбоксов
  • - Сортировка таблицы
  • - Другие обновления библиотеки
  • - Приложение для теста элемента

  • - Изменения в схеме библиотеки и оптимизация кода
  • - Программное управление полосой прокрутки
  • - Программное управление списками
  • - Оптимизация кода таблицы типа CTable
  • - Программное управление таблицей типа CTable
  • - Приложение для теста элемента

  • - Группы клавиш и клавиатурные раскладки
  • - Обработка события нажатия клавиш
  • - ASCII-коды символов и управляющих клавиш
  • - Скан-коды клавиш
  • - Вспомогательный класс для работы с клавиатурой
  • - Элемент 'Многострочное текстовое поле ввода'
  • - Разработка класса CTextBox для создания элемента
  • - Свойства и внешний вид
  • - Управление текстовым курсором
  • - Ввод символа
  • - Обработка нажатия клавиши 'Backspace'
  • - Обработка нажатия клавиши 'Enter'
  • - Обработка нажатия клавиш 'Left' и 'Right'
  • - Обработка нажатия клавиш 'Up' и 'Down'
  • - Обработка нажатия клавиш 'Home' и 'End'
  • - Обработка одновременного нажатия клавиш в сочетании с клавишей 'Ctrl'
  • - Интеграция элемента в движок библиотеки
  • - Приложение для теста элемента

Графические интерфейсы X: Новые возможности для нарисованной таблицы (build 9)
  • - Форматирование в стиле "Зебра"
  • - Выделение и снятие выделения строк таблицы
  • - Заголовки для столбцов
  • - Корректировка длины строки относительно ширины столбца
  • - Обработка событий


Графические интерфейсы X: Обновления для нарисованной таблицы и оптимизация кода (build 10)
  • - Относительные координаты курсора мыши на указанном холсте для рисования
  • - Изменения в структуре таблицы
  • - Определение диапазона строк в области видимости
  • - Картинки в ячейках таблицы
  • - Подсветка строки таблицы при наведении курсора мыши
  • - Методы для быстрой перерисовки ячейки таблицы
  • - Приложение для теста элемента



Комментариев нет :

Отправить комментарий