Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
YaPVUTS.doc
Скачиваний:
31
Добавлен:
11.04.2015
Размер:
3.15 Mб
Скачать
    1. Некоторые общие события компонентов

Для большинства видимых визуальных компонентов, т.е. потомков класса TControl, определен набор обработчиков событий, связанных с мышью. Для выполнения какого-либо действия с помощью щелчка левой кнопки мыши для большинства случаев достаточно запрограммировать обработчик событий OnClick, а для реакции на двойной щелчок используется событие OnDbClick. Для более совершенного управления мышью лучше использовать обработчики следующих событий:

  • OnMouseDown. Событие вызывается при нажатии любой кнопки мыши.

  • OnMouseMove. Событие вызывается при перемещении курсора мыши.

  • OnMouseUp. Событие вызывается при отпускании любой кнопки мыши.

Процедуры обработки этих событий получают следующие параметры:

  • Sender. Параметр представляет объект, который получил это событие (т. е. на каком компоненте щелкнули мышью).

  • Button. Параметр имеет одно из трех значений: mbRight, mbLeft, mbMiddle и используется для определения кнопки мыши, которую нажал пользователь.

  • Shift. Множество, которое может содержать следующие элементы: ssShift, ssCtrl, ssAlt, ssLeft, ssRight, ssMiddle, ssDouble. Используется для определения нажатия клавиш <Ctrl>, <Alt>, <Shift> (или комбинации этих клавиш) в момент щелчка мышью, а также для определения какой кнопкой мыши щелкнул пользователь.

  • X, Y. Координаты указателя мыши в пикселях относительно клиентской области окна с координатами (0,0) в верхнем левом углу.

Необходимо отметить, что событие OnClick возникает после события OnMouseDown, но перед событием OnMouseUp. Событие OnDbClick генерируется после события OnMouseUp.

Р

Рисунок 5

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

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

begin

If (Button=mbRight)

then Caption:=IntToStr(X)+’, ’+IntToStr(Y);

end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

begin

Caption:='';

end;

Визуальные компоненты, которые являются потомками класса TWinControl, кроме обработчиков событий, связанных с мышью, также обладают набором обработчиков событий от клавиатуры.

  • OnKeyDown Событие возникает при нажатии любой клавиши клавиатуры.

  • OnKeyUp Событие возникает при отпускании клавиши клавиатуры

  • OnKeyPress Данное событие генерирует после OnKeyDown, но перед OnKeyUp

Процедуры обработки событий OnKeyDown и OnKeyUp получают следующие параметры:

  • Sender. Параметр представляет объект, который получил это событие (т. е. какой компонент в данный момент имеет фокус ввода).

  • Key. Параметр целого типа содержит виртуальный код клавиши, т.е. специальной константы, которая определена для каждой клавиши клавиатуры. Для буквенно-цифровых клавиш виртуальный код совпадает с кодом символа.

  • Shift. Множество, которое может содержать следующие элементы: ssShift, ssCtrl, ssAlt, ssLeft, ssRight, ssMiddle, ssDouble. Используется для определения нажатия клавиш <Ctrl>, <Alt>, <Shift> (или комбинации этих клавиш), а также для определения какой кнопкой мыши щелкнул пользователь.

Для процедуры обработки события OnKeyPress имеется такой набор параметров.

  • Sender. Параметр представляет объект, который получил это событие (т. е. какой компонент в данный момент имеет фокус ввода).

  • Key. Параметр символьного типа содержит символ, который получается в результате нажатия клавиш клавиатуры.

Таким образом, события OnKeyDown и OnKeyUp перехватывают нажатия большинства клавиш клавиатуры, в то время как событие OnKeyPress позволяет обрабатывать только нажатие буквенно-цифровых клавиш. При этом получаемый символ Key учитывает выбранный язык (раскладку клавиатуры) и нажатую клавишу Shift.

Для потомков класса TWinControl определены события OnEnter и OnExit, которые возникают в момент получения (потери) компонентом фокуса ввода.

Рассмотрим следующий пример использования событий, связанных с клавиатурой. При нажатии комбинации клавиш Shift+А в заголовке формы пишется ‘Ok’. Этого эффекта можно достигнуть двумя способами. Первый способ состоит в создании следующего обработчика

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

begin

If (Shift=[ssShift]) and (Key=Ord(‘A’)) then Caption:=’Ok’;

end;

Другой способ заключается в использовании события OnKeyPress.

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);

begin

If key='A' then Caption:='Оk';

end;

Однако необходимо заметить, что этот обработчик будет срабатывать только, если выбран английский язык и отключена клавиша Caps Lock, поскольку только в этом случае возможно получить символ А путем нажатия комбинации Shift+А.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]