Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
6
Добавлен:
26.04.2015
Размер:
100.35 Кб
Скачать

СОБЫТИЯ

События от мыши

Для большинства видимых компонентов определен набор обработчиков событий, связанных с мышью:

  1. OnСlick – щелчок левой кнопки;

  2. OnDblClick - двойной щелчок левой кнопки;

  3. OnMouseDown – нажатие кнопки

  4. OnMouseUp – отпускание кнопки

  5. OnMouseMove - на перемещение указателя мыши над компонентом

Cобытие OnClick возникает после OnMouseDown, но перед OnMouseUp, а событие

OnDblClick возникает после OnMouseUp.

Данные события могут иметь следующие параметры:

  • Button типа TMouseButton – определяет кнопку мыши

  • Shift типа TShiftState – определяет состояние клавиш и кнопок мыши

  • X,Y типа Integer– координаты указателя мыши при наступлении события

Тип TMouseButton определяет одну из трех кнопок мыши: левую (mbLeft), правую (mbRigth) и среднюю (mbMiddle).

TMouseButton = (mbLeft, mbRight, mbMiddle) ; - перечисляемый тип

Тип TShiftState содержит признаки, уточняющие обстоятельства возникновения события:

ssShift - нажата клавиша Shift;

ssAlt -нажата клавиша Alt;

ssСtrl - нажата клавиша Ctrl;

ssLeft - нажата левая кнопка мыши;

ssRight - нажата правая кнопка;

ssMiddle -нажата средняя кнопка;

ssDouble - нажаты одновременно левая и правая кнопки.

TShiftState = set of (ssShift, ssAlt, ssCtrl, ssLeft, ssRight, ssMiddle, ssDouble); - множество

Пример 1

procedure TForm1.Panel1DblClick(Sender: TObject);

begin

Panel1.Caption:='Dbl'; // изменение заголовка панели при двойном нажатии

end;

Пример 2

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

Shift: TShiftState; X, Y: Integer);

begin

if Button = mbRight then Panel3.Color:=clRed; // панель красная при нажатии правой кнопки

if Button = mbLeft then Panel3.Color:=clBlue; // панель синяя при нажатии левой кнопки

end;

Пример 3

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

Shift: TShiftState; X, Y: Integer);

begin

if ssLeft in Shift then Panel3.Color:=clRed; // панель красная при нажатии левой кнопки

end;

Пример 4

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

Shift: TShiftState; X, Y: Integer);

begin

if Shift =[ ssRight,ssAlt] then Panel3.Color:=clRed; // панель красная при отпускании правой //кнопки с нажатой клавишей Alt

end;

//

Пример 5

procedure TForm1.Panel4MouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

begin

if ssLeft in Shift then Panel4.Color:=clBlue ;

if ssRight in Shift then Panel4.Color:=clRed;

Label4.Caption:='X='+IntToStr(x); //вывод координаты по X

Label5.Caption:='Y='+IntToStr(y); //вывод координаты по Y

end;

События от клавиатуры

Для большинства видимых компонентов используемых при вводе данных определен набор событий, связанных с клавиатурой:

  1. OnChange – Обработка любого изменения в области ввода;

  2. OnKeyDown – нажатие клавиши;

  3. OnKeyUp – отпускание клавиши;

  4. OnKeyPress – обработка нажатия клавиши

Событие OnKeyDown наступает при нажатии пользователем любой клавиши. Можно распознавать нажатые клавиши , включая функциональные, но нельзя распознать символ нажатой клавиши. Событие OnKeyUp наступает при отпускании пользователем любой клавиши по возможностям аналогично OnKeyDown.

Данные события содержат параметры:

  • Key типа Word – определяет десятичный код клавиши

  • Shift типа TShiftState – определяет состояние клавиш

Событие OnKeyPress наступает при отпускании пользователем любой символьной клавиши. Можно различать символы верхнего и нижнего регистров , но нельзя распознать функциональные клавиши.

Данное события содержит параметр:

  • Key типа Char – символ нажатой клавиши

Пример 6

procedure TForm1.Edit4KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

begin

// обрабатывает клавишу Alt и Enter

if (ssAlt in Shift) and (Key=13) then Label6.Caption:=Edit4.Text ;

end;

Пример 7

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

begin

if Key = #13 then Label2.Caption:=Edit5.Text;

if not (Key in ['0'..'9']) then key:=#0; // нецифровой символ не вводится

end;

Пример 8

procedure TForm1.Edit6KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);

begin

case Key of

VK_INSERT: Edit6.Text:='Insert';

VK_RIGHT:Edit6.Text:='вправо';

end;

end;

Для клавиш определены следующие виртуальные коды:

Код

Значение

Клавиша

Код

Значение

Клавиша

Vk_Back

8

Backspace

Vk_ A..vk_ Z

65..90

A. .Z

Vk_Tab

9

Tab

Vk_ LWin

91

Левая Windows

Vk_Clear

12

[5]

Vk_ RWin

92

Правая Windows

Vk_Return

13

Enter

Vk_ NumpadO.. vk Numpad9

96..105

[О]..[9]

Vk_Shift

16

Shift

Vk_ Multiply

106

[*]

Vk_Control

17

Ctti

Vk_ Add

107

[+]

Vk_ Menu

18

Alt

Vk_ Subtract

109

[-]

Vk_Pause

19

Pause

Vk_ Decimal

110

[Del]

Vk_Capital

20

Caps Lock

Vk_ Divide

111

[/]

Vk_ Escape

27

esc

Vk_Fl..vk_F12

112..123

Fl..F12

Vk_ Space

32

Пробел

Vk_ Numlock

144

Num Lock

Vk_ Prior

33

Page Up

Vk_ Scroll

145

Scroll Lock

Vk_ Next

34

Page Down

 

186

 

Vk_ End

35

End

 

187

+

Vk_ Home

36

Home

 

188

<

Vk_ Left

37

Курсор влево

 

189

-

Vk_ Up

38

Курсор вверх

 

190

>

Vk_ Right

39

Курсор вправо

 

191

•?

Vk_ Down

40

Курсор вниз

 

192

~

Vk_ Insert

45

Insert

 

219

[

Vk_ Delete

46

Delete

 

220

\

Vk_0..vk_ 9

48..57

0..9

 

221

]

События связанные с формой

При запуске приложения наступают последовательно следующие события связанные с формой:

  1. OnCreate – при создании формы;

  2. OnShow – при выводе формы на экран (Visible = True);

  3. OnPaint – при каждой прорисовке формы;

  4. OnActivate – при активизации формы;

При завершении приложения наступают последовательно следующие события связанные с формой:

  1. OnClose – перед закрытием формы;

  2. OnDestroy – перед удалением формы из памяти;

Пример 9

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

// Обработка закрытия формы

begin

if MessageDlg('Закрыть?', mtConfirmation, [mbYes, mbNo], 0) = mrNo then Abort;

end;

События связанные с фокусом компонента

При работе приложения только один компонент может принимать входной сигнал ( Щелчок мыши или нажатие клавиши ). Такой компонент имеет фокус. Пользователь может переключать фокус с помощью клавиши Tab или программным путем используя метод SetFocus.

  1. OnEnter – при получении объектом фокуса;

  2. OnExit - при потере объектом фокуса;

Пример 10

procedure TForm1.Button2Enter(Sender: TObject);

begin

ShowMessage('OnEnter Кнопка 1'); // Сообщение при получении фокуса

end;

Пример 11

procedure TForm1.RadioButton2Click(Sender: TObject);

begin

Button3.SetFocus // установка фокуса

end;

5

Соседние файлы в папке Методический материал