Обсуждение статьи "Рецепты MQL5 - Элементы управления в подокне индикатора - Кнопки"

 

Опубликована статья Рецепты MQL5 - Элементы управления в подокне индикатора - Кнопки:

В этой статье мы рассмотрим пример разработки пользовательского интерфейса с такими элементами управления, как кнопки. В качестве подсказки пользователю о том, что с элементом можно взаимодействовать, сделаем так, чтобы кнопка при наведении на нее курсора мыши меняла цвет. При наведении курсора мыши на кнопку цвет будет немного затеняться, а при нажатии будет становиться заметно темнее. Добавим еще всплывающие подсказки для каждой кнопки. Таким образом, интерфейс станет интуитивно понятным.

Также в статье будут рассматриваться события: перемещение курсора мыши, состояние левой кнопки мыши, нажатие левой кнопкой мыши на объекте, а также событие, которое возникает при изменении свойств графика. Создадим кнопочную панель, которая занимает все пространство подокна индикатора. Для примера сделаем три ряда, в которых будет по четыре кнопки.

Рецепты MQL5 - Элементы управления в подокне индикатора - Кнопки

Автор: Anatoli Kazharski

 

Хорошая статья для начинающих. Однако в более сложных интерфейсах этот подход уже неприемлем. Первое что бросается в глаза:

for(int i=0; i<BUTTON_COLUMNS; i++)
     {
      for(int j=0; j<BUTTON_ROWS; j++)
        {
            ...
      ...
...
Т.е. в алгоритме зашита жесткая структура таблицы и данная конструкция встречается практически во всех функциях. А теперь представим, что по мимо кнопок, подокно содержит еще несколько графических элементов ни как не относящихся к таблице. Для них придется описывать свою модель позиционирования, а это не есть гуд. Модель позиционирования должна быть одна и универсальной, т.е. в данном случае, компоновка  "таблица" должна быть частным случаем этой модели.
 
C-4:

Хорошая статья для начинающих. Однако в более сложных интерфейсах этот подход уже неприемлем. Первое что бросается в глаза:

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

Да, Вы правы. В следующий раз попробую придумать, что-нибудь более оригинальное. )

В данном случае, чтобы уйти от частного случая, достаточно использовать одномерный массив и один цикл.

 

А мне не понятно, зачем было использовать OBJ_EDIT.

Куда полезнее было бы "оживить" стандартные кнопки из библиотеки (чтоб они тоже под мышкой светились).

 

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

 

ps: это я завидую плодотворности автора ;) 

 
komposter:

...

Привык уже использовать OBJ_EDIT, так как он отображается в процессе визуализации в тестере.

В этом случае для примера можно было использовать любой объект. Это ведь творческий процесс. )

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов - Документация по MQL5
 
komposter:

А мне не понятно, зачем было использовать OBJ_EDIT.

Куда полезнее было бы "оживить" стандартные кнопки из библиотеки (чтоб они тоже под мышкой светились).

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

ps: это я завидую плодотворности автора ;) 

В реальности стандартные кнопки очень скользкий элемент управления, т.к. во первых не поддерживает цвет рамки (хотя очень странно почему), а во вторых, в зависимости от типа рамки BORDER_FLAT, BORDER_RAISED визуально позиционируется явно выходя за пределы своей локации, я уже не говорю что кроме этого меняют свой оттенок в зависимости от состояния нажатия и весьма тормознуто меняют свое отображение без ChartRedraw. В реальности кнопка кроме своего рубленного интерфейса а-ля Windows 3.11 не дает ни каких преимуществ по сравнению с другими элементами. Да, есть специальное поле OBJ_SELECTED , указывающая нажата ли кнопка или нет, но в реальности вообще нет ни каких проблем создать собственный объект OBJ_EDIT, содержащий флаг нажатия.
 
А кнопки вовсе и не кнопки).
 
komposter:

Куда полезнее было бы "оживить" стандартные кнопки из библиотеки (чтоб они тоже под мышкой светились).

А мне вот интересно, есть хоть один профессиональный разработчик, который бы использовал бы стандартную библиотеку графических элементов в своих продуктах?
Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека - Документация по MQL5
 
zfs:
А кнопки вовсе и не кнопки).
Кнопка всё, на что можно нажать. ))
 
C-4:
А мне вот интересно, есть хоть один профессиональный разработчик, который бы использовал бы стандартную библиотеку графических элементов в своих продуктах?
В Маркете вроде есть продукты с интерфейсами, элементы которых по внешнему виду напоминают те, что используются в стандартной библиотеке.
 

Интересно, а когда Вы готовили материал - читали вот эту статью?

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