Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
_Delphi_1курс лекции / Тема 15 Обработка событий мыши.doc
Скачиваний:
56
Добавлен:
23.03.2015
Размер:
86.53 Кб
Скачать

Параметры X и y

Во все события, связанные с мышью, передаются также координаты курсора XиY. Эти параметры определяют координаты курсора в клиентской области компонента. Благодаря этому можно обеспечить различную реакцию в зависимости оттого, в какой части клиентской области расположен курсор.

Рассмотрим теперь события OnMouseWheel, OnMouseWheel Up и OnMouseWheelDown, которые введены начиная с Delphi 5. Эти события связаны с вращением колесика, которое появилось в современных вариантах мыши. Заголовок обработчика события OnMouseWheel имеет вид:

procedure TForml.FormMouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);

Параметры Sender и Shift не отличаются от рассмотренных ранее.

Параметр WheelDelta показывает, сколько раз повернулось колесико. Это положительное число при вращении вверх и отрицательное — при вращении вниз.

Параметр МоusePos типаTPoint определяет позицию курсора мыши.

Параметр Handled указывает, завершена ли обработка события.

Если обработчик события OnMouseWheel отсутствует или если в нем заданоHandled=false, то, в зависимости от направления вращения колесика, наступает событиеOnMouseWheelUp или OnMouseWheelDown. Заголовки обработчиков этих событий одинаковы и имеют вид:

procedure TForml. FormMouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y : Integer);

Они отличаются от обработчика OnMouseWheel только отсутствием параметраWheelDelta.

Многие оконные компоненты — многострочные окна редактирования, списки и т.п. имеют обработчики вращений колесика по умолчанию. Это относится к Memo, RichEdit, ListBox, TrackBar и многим другим. Правда, в некоторых из них, например,в Memo, эти обработчики по умолчанию будут срабатывать только в том случае, если в компоненте заданы полосы прокрутки (собственно, это обработчики не самих элементов, а полос прокрутки).

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

procedureTForml.FormMouseWheelDown(Sender:TObject;Shift:TShiftState;

MousePos: TPoint; var Handled: Boolean!;

begin

ScaleBy(100,101);

end;

procedure TForml.FormMouseWheelUp(Sender: TObject; Shift: TShiftState;

MousePos: TPoint; var Handled: Boolean);

begin

ScaleBy(101,100);

end;

то при вращении колесика размеры всех компонентов формы будут плавно уменьшаться или увеличиваться.