Обсуждение статьи "Язык MQL как средство разметки графического интерфейса MQL-программ (Часть 3). Дизайнер форм"

 

Опубликована статья Язык MQL как средство разметки графического интерфейса MQL-программ (Часть 3). Дизайнер форм:

В этой статье мы завершаем описание концепции построения оконного интерфейса MQL-программ с помощью конструкций языка MQL. Специальный графический редактор позволит интерактивно настраивать раскладку, состоящую из основных классов элементов GUI, и затем экспортировать её в MQL-описание для использования в вашем MQL-проекте. Представлено внутреннее устройство редактора и руководство пользователя. Исходные коды прилагаются.

Редактор рассчитан на классы интерфейсных элементов Стандартной библиотеки. Для создания аналогичных инструментов для других библиотек потребуется написать конкретные реализации всех абстрактных сущностей из предложенной системы разметки. При этом следует руководствоваться реализацией классов разметки для Стандартной библиотеки.

Следует обратить внимание, что название "библиотека стандартных компонентов" не совсем соответствует действительности, так как в контексте предыдущих статей нам уже пришлось существенно её модифицировать и вывести в параллельную версионную ветку в папке ControlsPlus. В рамках данной статьи мы будем продолжать её использовать и модифицировать.

Перечислим типы элементов, которые будет поддерживать редактор.

  • контейнеры CBox с горизонтальной (CBoxH) и вертикальной ориентацией (CBoxV),
  • кнопка CButton,
  • поле ввода CEdit,
  • метка CLabel,
  • поле ввода с перебором значений SpinEditResizable,
  • календарь CDatePicker,
  • выпадающий список ComboBoxResizable,
  • список ListViewResizable,
  • группа независимых переключателей CheckGroupResizable,
  • группа зависимых переключателей RadioGroupResizable.

Все классы обеспечивают адаптивное изменение размера (некоторые стандартные типы умели это изначально, для других пришлось вносить существенные правки).

Процесс редактирования формы

Процесс редактирования формы

Автор: Stanislav Korotky

 
Мощно получилось!
 
Поздравляю! Отличная работа и статьи.
 
Наконец то, достойная конкуренция (имею ввиду результат). Теперь, держитесь!))) 
 

Визуальный редактор, все таки, должен включать ручное редактирование элементов - растягивание, перемещение, печатание текста, копирование и прочее. Желательно наличие вспомогательной разметки. 

Этот редактор подает надежды, хотя я не представляю как автор реализует остальные требования, так как не понимаю его технологии. Он "встал на плечи" стандартной библиотеки и с одной стороны это дало мощный толчек вперед, с другой - заставляет наследовать ее ограничения. Она же не предназначена для масштабной трансформации... Много функционала придется дописывать сверху.

Список требований к будущему редактору:

1. Мануальная настройка элементов.

2. Копирование элементов.

3. Одновременное управление свойством множества элементов.

4. Вспомогательная раметка.

5. Многооконный режим.

6. Создание окон разных типов.

7. Поддержка свойств окон: "всегда сверху", блокируещее остальные, с/без сворачивания.

8. Параллельное редактирование окон.

9. Удаление окон.

Пока все. 


ЗЫ. Насколько я знаю, контроллы СБ состоят из МТ-объектов, что с одной стороны - упрощает систему взаимодействия с элементами и мануальную настройку (давным давно у меня был редактор на основе МТ-объектов и его несложно было сделать), с другой (если принять это упрощение) - отнимает все преимущества канваса (среди которых - скорость, визуальные эффекты и многое другое). То есть - "допинг-эффект" от использования СБ при создании редактора, его жестко ограничивает в развитии. Но, посмотрим...

Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека MQL5 написана на языке MQL5 и предназначена для облегчения написания программ (индикаторов, скриптов, экспертов) конечным пользователям. Библиотека обеспечивает удобный доступ к большинству внутренних функций MQL5.
 
Интересно, что даже без канваса, автор может сделать вспомогательную разметку, если решит вопрос ручной установки элементов. Я так делал. Конечно, разметка на канвасе визуально круче, но в редакторе шарпа например, разметка хоть и скудная, но практичная. Лишь пара линий помогают позиционировать контроллы. Я был удивлен когда заглянул в него после того, как сделал свою разметку. 

Панель задачь тоже нужно сделать. Желательно.
 

После каких-то изменений в одном из билдов, видимо, связанных с оптимизатором компилятора MQL5, программа перестала нормально работать в релизном варианте, хотя работает как надо в отладочном.

Сообщал об этом на форуме, но реакции MQ не последовало.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Новая версия платформы MetaTrader 5 build 4230: больше встроенных приложений и расширение поддержки ONNX

Stanislav Korotky, 2024.03.11 15:49

Перестал нормально отрабатывать клик на объектах на графиках. Раньше всегда при равенстве z-order-ов учитывался порядок создания объектов: те что созданы позднее считались как бы "наверху" - получали приоритет при отработке клика.

Сейчас это сломано причудливым образом.

Если эксперт откомпилирован без оптимизации или под отладчиком - все работает как надо (как раньше).

Если откомпилирован с оптимизацией - выделяется не тот объект (нижележащий).


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