| Controls | ||
| MQL5-MVC-GUI-Framework.mqproj | ||
| README.md | ||
| Tables.mqh | ||
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), чтобы получить код, соответствующий конкретному этапу:
- v1.0.0 — Базовая модель данных (Статья 17653)
- v1.1.0 — Классы таблицы и заголовка (Статья 17803)
- v1.2.0 — Графический компонент View на Canvas (Статья 17960)
- v1.3.0 — Внедрение Контроллера и интерактива (Статья 18221)
- v1.4.0 — Логика контейнеров и вложенности (Статья 18658)
- v1.5.0 — Интерактивное изменение размеров (Resizing) (Статья 18941)
- v1.6.0 — Полная интеграция Модели и Вида (Статья 19288)
- v1.7.0 — Сортировка и настройка столбцов (Статья 19979)
- v1.8.0 — Вертикальные заголовки и матрицы (Статья 20596)
Как использовать
Для работы с библиотекой в своих проектах подключайте основной файл элементов управления:
#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\. - Библиотека разработана на основе цикла обучающих материалов. Для глубокого понимания архитектуры рекомендуется изучать статьи в хронологическом порядке:
Список статей цикла:
- Реализация модели таблицы в MQL5: Применение концепции MVC — Основы структуры данных.
- Классы таблицы и заголовка на базе модели таблицы в MQL5: Применение концепции MVC — Формирование каркаса таблицы.
- Компонент View для таблиц в парадигме MVC на MQL5: Базовый графический элемент — Переход к графике на Canvas.
- Компоненты View и Controller для таблиц в парадигме MVC на MQL5: Простые элементы управления — Обработка событий и интерактив.
- Компоненты View и Controller для таблиц в парадигме MVC на MQL5: Контейнеры — Иерархия и вложенность элементов.
- Компоненты View и Controller для таблиц в парадигме MVC на MQL5: Изменяемые размеры элементов — Динамическое изменение геометрии.
- Таблицы в парадигме MVC на MQL5: Интегрируем компонент Model в компонент View — Отрисовка данных модели в графическом интерфейсе.
- Таблицы в парадигме MVC на MQL5: настраиваемые и сортируемые столбцы таблицы — Интерактивное управление колонками.
- Таблицы в парадигме MVC на MQL5: Таблица корреляции символов — Реализация вертикальных заголовков и матричных структур.