MQL5-MVC-GUI-Framework/README.md

83 lines
9.3 KiB
Markdown
Raw Permalink Normal View History

2026-03-24 17:08:26 +00:00
# MQL5-MVC-GUI-Framework
2026-03-29 13:16:40 +00:00
Универсальная графическая библиотека (фреймворк) для MetaTrader 5, построенная на базе паттерна проектирования **Model-View-Controller (MVC)**.
### О проекте
Фреймворк предназначен для создания сложных, интерактивных и масштабируемых графических интерфейсов (GUI). Основной акцент на текущий момент сделан на реализации таблиц с динамическим управлением данными, разделением логики отрисовки и взаимодействия с пользователем.
Разработка библиотеки велась поэтапно в рамках серии [обучающих статей на портале MQL5.com](https://www.mql5.com/ru/articles). Каждому этапу развития соответствует отдельный релиз (**Tag**) в данном репозитории.
### Ключевые возможности
* **Архитектура MVC:** Четкое разделение данных (**Model**), визуализации (**View**) и логики управления (**Controller**).
* **Динамические таблицы:** Поддержка иерархии "Ячейка -> Строка -> Модель".
* **Графика на Canvas:** Высокая производительность отрисовки элементов интерфейса.
* **Интерактивность:** Поддержка событий мыши, изменение размеров (Resizing) и состояний элементов.
* **Матричные структуры:** Поддержка горизонтальных и вертикальных заголовков с синхронизированной прокруткой.
* **Гибкая настройка:** Сортировка данных по клику на заголовок и настраиваемые параметры столбцов.
### Структура репозитория
```text
MQL5/
└── Shared Projects/
└── MQL5-MVC-GUI-Framework/
├── Controls/ // Графическое ядро и элементы
│ ├── Base.mqh // Базовый класс графических объектов и обработка событий
│ └── Controls.mqh // Библиотека интерактивных элементов управления
├── Tables.mqh // Ядро табличных компонентов (Модель)
└── README.md // Описание проекта
```
### История развития (Релизы по статьям)
Библиотека эволюционировала вместе с выходом статей. Вы можете переключиться на нужный релиз (Tag), чтобы получить код, соответствующий конкретному этапу:
* [v1.0.0](https://forge.mql5.io/artmedia70/Article-17653-MQL5-MVC-Table-Model) — Базовая модель данных ([Статья 17653](https://www.mql5.com/ru/articles/17653))
* [v1.1.0](https://forge.mql5.io/artmedia70/MQL5-MVC-GUI-Framework/releases/tag/v1.1.0-Article-17803) — Классы таблицы и заголовка ([Статья 17803](https://www.mql5.com/ru/articles/17803))
* [v1.2.0](https://forge.mql5.io/artmedia70/MQL5-MVC-GUI-Framework/releases/tag/v1.2.0-Article-17960) — Графический компонент View на Canvas ([Статья 17960](https://www.mql5.com/ru/articles/17960))
* [v1.3.0](https://forge.mql5.io/artmedia70/MQL5-MVC-GUI-Framework/releases/tag/v1.3.0-Article-18221) — Внедрение Контроллера и интерактива ([Статья 18221](https://www.mql5.com/ru/articles/18221))
* [v1.4.0](https://forge.mql5.io/artmedia70/MQL5-MVC-GUI-Framework/releases/tag/v1.4.0-Article-18658) — Логика контейнеров и вложенности ([Статья 18658](https://www.mql5.com/ru/articles/18658))
* [v1.5.0](https://forge.mql5.io/artmedia70/MQL5-MVC-GUI-Framework/releases/tag/v1.5.0-Article-18941) — Интерактивное изменение размеров (Resizing) ([Статья 18941](https://www.mql5.com/ru/articles/18941))
* [v1.6.0](https://forge.mql5.io/artmedia70/MQL5-MVC-GUI-Framework/releases/tag/v1.6.0-Article-19288) — Полная интеграция Модели и Вида ([Статья 19288](https://www.mql5.com/ru/articles/19288))
* [v1.7.0](https://forge.mql5.io/artmedia70/MQL5-MVC-GUI-Framework/releases/tag/v1.7.0-Article-19979) — Сортировка и настройка столбцов ([Статья 19979](https://www.mql5.com/ru/articles/19979))
* [v1.8.0](https://forge.mql5.io/artmedia70/MQL5-MVC-GUI-Framework/releases/tag/v1.8.0-Article-20596) — Вертикальные заголовки и матрицы ([Статья 20596](https://www.mql5.com/ru/articles/20596))
### Как использовать
Для работы с библиотекой в своих проектах подключайте основной файл элементов управления:
```cpp
#include "Controls\Controls.mqh"
```
Используйте код с осторожностью.
При нахождении вашего проекта в другом каталоге внутри **Shared Projects**, используйте относительные пути:
```cpp
#include "..\MQL5-MVC-GUI-Framework\Controls\Controls.mqh"
```
Используйте код с осторожностью.
### Расположение исполняемого файла
Данный проект является библиотекой (набором заголовочных файлов `.mqh`) и не содержит самостоятельных исполняемых файлов (`.ex5`). Результат компиляции будет находиться в исполняемом файле того проекта (скрипта, индикатора или эксперта), в который подключена данная библиотека.
### Примечания
* Все файлы библиотеки сохранены в кодировке **UTF-8** для корректного отображения в репозитории **Git** и поддержки многоязычности.
* Для корректной работы относительных путей рекомендуется сохранять библиотеку именно в папку `Shared Projects\MQL5-MVC-GUI-Framework\`.
* Библиотека разработана на основе цикла обучающих материалов. Для глубокого понимания архитектуры рекомендуется изучать статьи в хронологическом порядке:
### Список статей цикла:
1. [Реализация модели таблицы в MQL5: Применение концепции MVC](https://www.mql5.com/ru/articles/17653) — Основы структуры данных.
2. [Классы таблицы и заголовка на базе модели таблицы в MQL5: Применение концепции MVC](https://www.mql5.com/ru/articles/17803) — Формирование каркаса таблицы.
3. [Компонент View для таблиц в парадигме MVC на MQL5: Базовый графический элемент](https://www.mql5.com/ru/articles/17960) — Переход к графике на Canvas.
4. [Компоненты View и Controller для таблиц в парадигме MVC на MQL5: Простые элементы управления](https://www.mql5.com/ru/articles/18221) — Обработка событий и интерактив.
5. [Компоненты View и Controller для таблиц в парадигме MVC на MQL5: Контейнеры](https://www.mql5.com/ru/articles/18658) — Иерархия и вложенность элементов.
6. [Компоненты View и Controller для таблиц в парадигме MVC на MQL5: Изменяемые размеры элементов](https://www.mql5.com/ru/articles/18941) — Динамическое изменение геометрии.
7. [Таблицы в парадигме MVC на MQL5: Интегрируем компонент Model в компонент View](https://www.mql5.com/ru/articles/19288) — Отрисовка данных модели в графическом интерфейсе.
8. [Таблицы в парадигме MVC на MQL5: настраиваемые и сортируемые столбцы таблицы](https://www.mql5.com/ru/articles/19979) — Интерактивное управление колонками.
9. [Таблицы в парадигме MVC на MQL5: Таблица корреляции символов](https://www.mql5.com/ru/articles/20596) — Реализация вертикальных заголовков и матричных структур.