1
0
Derivar 0
MQL5-MVC-GUI-Framework/README.md

9,3 KiB

MQL5-MVC-GUI-Framework

Универсальная графическая библиотека (фреймворк) для MetaTrader 5, построенная на базе паттерна проектирования Model-View-Controller (MVC).

О проекте

Фреймворк предназначен для создания сложных, интерактивных и масштабируемых графических интерфейсов (GUI). Основной акцент на текущий момент сделан на реализации таблиц с динамическим управлением данными, разделением логики отрисовки и взаимодействия с пользователем.

Разработка библиотеки велась поэтапно в рамках серии обучающих статей на портале MQL5.com. Каждому этапу развития соответствует отдельный релиз (Tag) в данном репозитории.

Ключевые возможности

  • Архитектура MVC: Четкое разделение данных (Model), визуализации (View) и логики управления (Controller).
  • Динамические таблицы: Поддержка иерархии "Ячейка -> Строка -> Модель".
  • Графика на Canvas: Высокая производительность отрисовки элементов интерфейса.
  • Интерактивность: Поддержка событий мыши, изменение размеров (Resizing) и состояний элементов.
  • Матричные структуры: Поддержка горизонтальных и вертикальных заголовков с синхронизированной прокруткой.
  • Гибкая настройка: Сортировка данных по клику на заголовок и настраиваемые параметры столбцов.

Структура репозитория

MQL5/
└── Shared Projects/
    └── MQL5-MVC-GUI-Framework/
        ├── Controls/           // Графическое ядро и элементы
        │   ├── Base.mqh        // Базовый класс графических объектов и обработка событий
        │   └── Controls.mqh    // Библиотека интерактивных элементов управления
        ├── Tables.mqh          // Ядро табличных компонентов (Модель)
        └── README.md           // Описание проекта

История развития (Релизы по статьям)

Библиотека эволюционировала вместе с выходом статей. Вы можете переключиться на нужный релиз (Tag), чтобы получить код, соответствующий конкретному этапу:

Как использовать

Для работы с библиотекой в своих проектах подключайте основной файл элементов управления:

#include "Controls\Controls.mqh"

Используйте код с осторожностью.

При нахождении вашего проекта в другом каталоге внутри Shared Projects, используйте относительные пути:

#include "..\MQL5-MVC-GUI-Framework\Controls\Controls.mqh"

Используйте код с осторожностью.

Расположение исполняемого файла

Данный проект является библиотекой (набором заголовочных файлов .mqh) и не содержит самостоятельных исполняемых файлов (.ex5). Результат компиляции будет находиться в исполняемом файле того проекта (скрипта, индикатора или эксперта), в который подключена данная библиотека.

Примечания

  • Все файлы библиотеки сохранены в кодировке UTF-8 для корректного отображения в репозитории Git и поддержки многоязычности.
  • Для корректной работы относительных путей рекомендуется сохранять библиотеку именно в папку Shared Projects\MQL5-MVC-GUI-Framework\.
  • Библиотека разработана на основе цикла обучающих материалов. Для глубокого понимания архитектуры рекомендуется изучать статьи в хронологическом порядке:

Список статей цикла:

  1. Реализация модели таблицы в MQL5: Применение концепции MVC — Основы структуры данных.
  2. Классы таблицы и заголовка на базе модели таблицы в MQL5: Применение концепции MVC — Формирование каркаса таблицы.
  3. Компонент View для таблиц в парадигме MVC на MQL5: Базовый графический элемент — Переход к графике на Canvas.
  4. Компоненты View и Controller для таблиц в парадигме MVC на MQL5: Простые элементы управления — Обработка событий и интерактив.
  5. Компоненты View и Controller для таблиц в парадигме MVC на MQL5: Контейнеры — Иерархия и вложенность элементов.
  6. Компоненты View и Controller для таблиц в парадигме MVC на MQL5: Изменяемые размеры элементов — Динамическое изменение геометрии.
  7. Таблицы в парадигме MVC на MQL5: Интегрируем компонент Model в компонент View — Отрисовка данных модели в графическом интерфейсе.
  8. Таблицы в парадигме MVC на MQL5: настраиваемые и сортируемые столбцы таблицы — Интерактивное управление колонками.
  9. Таблицы в парадигме MVC на MQL5: Таблица корреляции символов — Реализация вертикальных заголовков и матричных структур.