Обсуждение статьи "Графические интерфейсы I: "Оживление" графического интерфейса (Глава 3)"

 

Опубликована статья Графические интерфейсы I: "Оживление" графического интерфейса (Глава 3):

Эта статья является продолжением первой части серии о графических интерфейсах. Более подробно, для чего предназначена эта библиотека, можно прочитать в самой первой статье: Графические интерфейсы I: Подготовка структуры библиотеки (Глава 1). Полный список ссылок на статьи первой части находится в конце каждой главы и там же есть возможность загрузить к себе на компьютер полную версию библиотеки на текущей стадии разработки. Файлы нужно разместить по тем же директориям, как они расположены в архиве.

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


Изменение внешнего вида элементов интерфейса при наведении курсора

Ранее, когда рассматривалась реализация класса CElement, который является базовым классом для всех элементов управления, в качестве одного из его членов был создан метод CElement::ChangeObjectColor() для изменения цвета объекта при наведении курсора. Пришло время создать механизм, который позволит использовать это в своей работе. Для того чтобы включить такой функционал, понадобится таймер. По умолчанию он отключен в настройках MQL-приложения, и разработчик этого приложения сам решает, включать ли его в зависимости от того, какие задачи перед ним поставлены.

Для включения таймера язык MQL предоставляет две функции с разной частотой: EventSetTimer() и EventSetMillisecondTimer(). Первая позволяет установить интервал не более одной секунды, и для наших задач это не подходит, так как одна секунда — очень большой интервал для изменения внешнего вида элемента управления при наведении курсора. Изменение должно производиться мгновенно и без задержек. Поэтому воспользуемся функцией EventSetMillisecondTimer(), которая позволяет установить таймер с интервалами, измеряющимися в миллисекундах. В справочнике MQL написано, что минимальный интервал, который можно установить с помощью этой функции: 10-16 миллисекунд. Этого вполне достаточно для реализации задуманного.

Рис. 2. Тест на реакцию объектов при наведении курсора мыши.

Рис. 2. Тест на реакцию объектов при наведении курсора мыши

Автор: Anatoli Kazharski

 
Анатолий! Уровень кодинга, его качество - все просто на заоблачной, лично для меня, высоте. Огромная благодарность Вам за эту грандиозную работу! Ждем оставшихся частей!