- Типы событий графика
- Периоды графиков
- Свойства графиков
- Позиционирование графика
- Отображение графиков
- Примеры работы с графиком
Типы событий графика
Существуют 11 видов событий, которые можно обрабатывать с помощью функции предопределенной функции OnChartEvent(). Для пользовательских событий предусмотрено 65535 идентификаторов в диапазоне от CHARTEVENT_CUSTOM до CHARTEVENT_CUSTOM_LAST включительно. Для генерации пользовательского события необходимо использовать функцию EventChartCustom().
ENUM_CHART_EVENT
Идентификатор |
Описание |
|---|---|
CHARTEVENT_KEYUP |
Отпускание клавиши |
CHARTEVENT_KEYDOWN |
Нажатие клавиши |
CHARTEVENT_MOUSE_MOVE |
Перемещение мыши и нажатие кнопок мышки (если для графика установлено свойство CHART_EVENT_MOUSE_MOVE=true) |
CHARTEVENT_MOUSE_WHEEL |
Нажатие или прокрутка колесика мышки (если для графика установлено свойство CHART_EVENT_MOUSE_WHEEL=true) |
CHARTEVENT_OBJECT_CREATE |
Создание графического объекта (если для графика установлено свойство CHART_EVENT_OBJECT_CREATE=true) |
CHARTEVENT_OBJECT_CHANGE |
Изменение свойств графического объекта через диалог свойств |
CHARTEVENT_OBJECT_DELETE |
Удаление графического объекта (если для графика установлено свойство CHART_EVENT_OBJECT_DELETE=true) |
CHARTEVENT_CLICK |
Нажатие мышки на графике |
CHARTEVENT_OBJECT_CLICK |
Нажатие мышки на графическом объекте |
CHARTEVENT_OBJECT_DRAG |
Перетаскивание графического объекта |
CHARTEVENT_OBJECT_ENDEDIT |
Окончание редактирования текста в графическом объекте Edit |
CHARTEVENT_CHART_CHANGE |
Изменение размеров графика или изменение свойств графика через диалог свойств |
CHARTEVENT_CUSTOM |
Начальный номер события из диапазона пользовательских событий |
CHARTEVENT_CUSTOM_LAST |
Конечный номер события из диапазона пользовательских событий |
Событие CHARTEVENT_KEYUP
Событие CHARTEVENT_KEYUP возникает при отпускании клавиши клавиатуры пользователем, если окно графика имеет фокус ввода. Это событие дополняет существующее CHARTEVENT_KEYDOWN, которое генерируется при нажатии клавиши. Использование обоих событий позволяет точно определять момент нажатия и отпускания клавиш, что полезно при создании пользовательских интерфейсов и инструментов с интерактивным управлением.
void OnChartEvent(const int id,
|
Значение lparam содержит код клавиши (KeyCode), аналогично событию CHARTEVENT_KEYDOWN. Для получения текстового представления клавиши можно использовать функцию TranslateKey().
Обработка «мёртвых» клавиш (Dead Keys)
Поддерживается обработка так называемых "мёртвых клавиш" (dead keys). Это клавиши, которые не вводят символ сразу, а изменяют вид следующего вводимого символа. Например, в греческой раскладке клавиша ; используется для установки ударения над гласными (ά, έ, ύ и др.).
Теперь такие клавиши можно отслеживать при помощи функции TranslateKey() в обработчиках CHARTEVENT_KEYDOWN и CHARTEVENT_KEYUP. Это позволяет корректно определять нажатие и отпускание составных клавишных комбинаций в многоязычных раскладках.
void OnChartEvent(const int id,
|
Обработка мёртвых клавиш полезна при реализации пользовательских текстовых полей, систем горячих клавиш, а также интерфейсов, реагирующих на международные клавиатурные раскладки.
Входные параметры функции OnChartEvent
Для каждого типа события входные параметры функции OnChartEvent() имеют определенные значения, которые необходимы для обработки этого события. В таблице перечислены события и значения, которые передаются через параметры.
Событие |
Значение параметра id |
Значение параметра lparam |
Значение параметра dparam |
Значение параметра sparam |
|---|---|---|---|---|
Событие отжатия клавиши |
CHARTEVENT_KEYUP |
Код отпущенной клавиши. |
Количество повторов события — всегда 1 |
Строковое значение битовой маски, описывающее статус клавиш-модификаторов. Смотри WM_KEYUP message |
Событие нажатия клавиши |
CHARTEVENT_KEYDOWN |
Код нажатой клавиши |
Количество повторов события при удержании клавиши |
Строковое значение битовой маски, описывающее статус клавиш-модификаторов. Смотри WM_KEYDOWN message |
События мышки (если для графика установлено свойство CHART_EVENT_MOUSE_MOVE=true) |
CHARTEVENT_MOUSE_MOVE |
X координата |
Y координата |
Строковое значение битовой маски, описывающее статус кнопок мыши |
Событие колёсика мышки (если для графика установлено свойство CHART_EVENT_MOUSE_WHEEL=true) |
CHARTEVENT_MOUSE_WHEEL |
Флаги состояний клавиш и кнопок мышки, координаты X и Y курсора. Описание дано в примере ниже |
Значение Delta прокрутки колёсика мышки |
— |
Событие создания графического объекта (если для графика установлено свойство CHART_EVENT_OBJECT_CREATE=true) |
CHARTEVENT_OBJECT_CREATE |
— |
— |
Имя созданного графического объекта |
Событие изменения свойств объекта через диалог свойств |
CHARTEVENT_OBJECT_CHANGE |
— |
— |
Имя измененного графического объекта |
Событие удаления графического объекта (если для графика установлено свойство CHART_EVENT_OBJECT_DELETE=true) |
CHARTEVENT_OBJECT_DELETE |
— |
— |
Имя удаленного графического объекта |
Событие щелчка мышки на графике |
CHARTEVENT_CLICK |
X координата |
Y координата |
— |
Событие щелчка мышки на графическом объекте |
CHARTEVENT_OBJECT_CLICK |
X координата |
Y координата |
Имя графического объекта, на котором произошло событие |
Событие перемещения графического объекта при помощи мышки |
CHARTEVENT_OBJECT_DRAG |
— |
— |
Имя перемещенного графического объекта |
Событие окончания редактирования текста в поле ввода графического объекта "Поле ввода" |
CHARTEVENT_OBJECT_ENDEDIT |
— |
— |
Имя графического объекта "Поле ввода", в котором завершилось редактирование текста |
Событие изменения размеров графика или изменения свойств графика через диалог свойств |
CHARTEVENT_CHART_CHANGE |
— |
— |
— |
Пользовательское событие с номером N |
CHARTEVENT_CUSTOM+N |
Значение, заданное функцией EventChartCustom() |
Значение, заданное функцией EventChartCustom() |
Значение, заданное функцией EventChartCustom() |
Пример:
#define KEY_NUMPAD_5 12
|
Для события CHARTEVENT_MOUSE_MOVE строковой параметр sparam содержит число, представляющее информацию о состоянии клавиш:
Бит |
Описание |
|---|---|
1 |
Состояние левой клавиши мыши |
2 |
Состояние правой клавиши мыши |
3 |
Состояние клавиши SHIFT |
4 |
Состояние клавиши CTRL |
5 |
Состояние средней клавиши мыши |
6 |
Состояние первой дополнительной клавиши мыши |
7 |
Состояние второй дополнительной клавиши мыши |
Пример:
//+------------------------------------------------------------------+
|
//--- отключаем контекстное меню чарта (по правой кнопке)
|
Для события CHARTEVENT_MOUSE_WHEEL параметры lparam и dparam содержат информацию о состоянии клавиш Ctrl, Shift, кнопок мышки, координатах курсора и величине прокрутки колёсика мышки. Для лучшего понимания запустите этот советник на графике и прокручивайте колёсико мышки, нажимая поочередно различные кнопки и клавиши, описанные в коде.
Пример обработки события CHARTEVENT_MOUSE_WHEEL:
//+------------------------------------------------------------------+
|
Смотри также