Свойства, методы, события, типы, классы_______________________1033

Описание

Обработка событий OnMouseDown и OnMouseUp используется для операций,
требуемых при нажатии и отпускании пользователем какой-нибудь кнопки мыши.

Если требуется различная обработка событий в зависимости от того, какая
кнопка мыши нажата или какая нажата вспомогательная клавиша, можно анали-
зировать параметры Button и Shift. Значения параметра Button определяют, ка-
кая кнопка мыши нажата: mbLeft — левая, mbRight — правая, mbMiddle — сред-
няя. Параметр Shift представляет собой множество, содержащее помимо обозначе-
ния нажатой кнопки еще и обозначения нажатых одновременно с этим вспомога-
тельных клавиш Shift, Alt, Ctrl (соответствуют элементам множества ssShift, ssAlt,
ssCtrl), а также ssDouble — двойной щелчок. Параметры Х и Y определяют коор-
динаты указателя мыши в клиентской области компонента. Параметр Sender —
указатель на компонент, в котором произошло событие.

Примеры

1. Обработчик события OnMouseDown может использоваться для начала процес-
са перетаскивания компонента, если вы решили задать какое-то дополнитель-
ное условие (например, проверка каких-то опций), по которому можно начи-
нать перетаскивание. В этом случае в компоненте вы задаете свойство Drag-
Mode. равным dmManual, что обеспечивает управление началом перетаскива-
ния. Обработчик события OnMouseDown может иметь вид:

void   fastcali TFormI::ListBox3MouseDown(TObject *Sender,

TMouseButton Button, TShiftState Shift, int X, int Y)
(

if ((Button == mbLeft) && <проверка какого-нибудь условия>)
((TControl*)Sender)->BeginDrag(false,5) ;

t

В приведенной структуре if первое условие (Button == mbLeft) можно заме-
нить эквивалентным ему условием, проверяющим параметр Shift:

if (Shift.Contains(ssLeft)) ...;

2. Если вы пишете обработчик, описанный выше, но хотите, чтобы перетаскива-
ние начиналось только в случае, когда пользователь нажал левую кнопку
мыши при нажатой клавише Alt, оператор обработки может иметь вид:

if ((Button == mbLeft) && (Shift.Contains(ssAlt)))
( (TControl*)Sender)->BeginDrag(false,5) ;

OnMouseMove

Событие наступает при перемещении курсора мыши над компонентом
Класс TControl

Определение

enum Classes_1 { ssShift, ssAlt, ssCtrl, ssLeft, ssRight,
ssMiddle, ssDouble );

typedef Set<Classes_1, ssShift, ssDouble> TShiftState;

typedef void ( closure *TMouseMoveEvent)(System;:TObject* Sender,

Classes::TShiftState Shift, int X, int Y) ;

property TMouseMoveEvent OnMouseMove

Описание

Обработчик события OnMouseMove пишется, если надо произвести какие-то
операции при перемещении курсора мыши над компонентом.