- Типы объектов и особенности указания их координат
- Объекты с привязкой ко времени и цене
- Объекты с привязкой к экранным координатам
- Создание объектов
- Удаление объектов
- Поиск объектов
- Обзор функций доступа к свойствам объектов
- Основные свойства объектов
- Координаты времени и цены
- Угол окна привязки и экранные координаты
- Определение точки привязки на объекте
- Управление состоянием объекта
- Приоритет объектов (Z-порядок)
- Настройка отображения объекта: цвет, стиль и рамка
- Настройки шрифта
- Поворот текста на произвольный угол
- Определение ширины и высоты объектов
- Видимость объектов в разрезе таймфреймов
- Назначение кода символа для метки
- Свойства лучей для объектов c прямыми линиями
- Управление нажатым состоянием объекта
- Настройка изображений в объектах-картинках
- Кадрирование (вывод части) изображения
- Свойства поля ввода: выравнивание и "только чтение"
- Ширина канала стандартного отклонения
- Настройка уровней в объектах с их поддержкой
- Дополнительные свойства Ганна, Фибоначчи и Эллиота
- Объект-график
- Перемещение объектов
- Получение времени или цены в заданных точках линий
Управление нажатым состоянием объекта
Для объектов типа кнопки (OBJ_BUTTON) и панели с картинкой (OBJ_BITMAP_LABEL) терминал поддерживает специальное свойство, визуально переключающее объект из нормального (отжатого) состояния в нажатое и обратно. Для этого зарезервирована константа OBJPROP_STATE. Свойство имеет логический тип: при значении true объект считается нажатым, а при false — отжатым (по умолчанию).
Если для OBJ_BUTTON эффект объемной рамки рисует сам терминал, то для OBJ_BITMAP_LABEL программист должен указать два изображения (как файлы или ресурсы), которые обеспечат подходящее внешнее представление. Поскольку с технической точки зрения данное свойство является просто переключателем, его легко использовать не только для эффекта "нажатия" и "отжатия", но и других целей. Например, с помощью соответствующих изображений можно реализовать флаг (опцию).
Об использовании изображений в объектах будет рассказано в следующем разделе.
В принципе, состояние объектов обычно меняется в интерактивных MQL-программах, которые реагируют на действия пользователя, в частности, нажатия мыши. Мы обратимся к этой возможности в главе про события.
Сейчас протестируем свойство на простых кнопках, в статичном режиме. Скрипт ObjectButtons.mq5 создает на графике две кнопки: одну в нажатом состоянии, другую — в отжатом.
Настройка отдельной кнопки выделена в функцию SetupButton с параметрами, задающими название и текст кнопки, а также её координаты, размер и состояние.
#include "ObjectPrefix.mqh"
|
Затем в OnStart дважды вызываем эту функцию.
void OnStart()
|
Получившиеся кнопки могут выглядеть следующим образом.
Нажатая и отжатая кнопки OBJ_BUTTON
Что интересно — вы можете щелкнуть по любой из кнопок мышью, и кнопка сменит свое состояние. Правда, мы еще не научились перехватывать уведомление об этом.
Важно отметить, что данное автоматическое переключение состояния выполняется, только если в свойствах объектов взведена опция Отключить выделение, но это условие по умолчанию выполняется для всех объектов, созданных программно. Напомним, что при необходимости выделение можно и разрешить — для этого надо явным образом установить свойство OBJPROP_SELECTABLE в true, чем мы пользовались в некоторых предыдущих примерах.
Для удаления ставших ненужными кнопок воспользуйтесь скриптом ObjectCleanup1.mq5.