Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Плещёв ВУМИП 2012-07-06.doc
Скачиваний:
66
Добавлен:
13.05.2015
Размер:
9.35 Mб
Скачать

2.1.7.11. Наследование родительских свойств

ParentXXX (например,ParentColor,ParentCtl3D,ParentFontилиParentShowHint) ‑ указывает (True), что значение свойстваXXXприравни­вает­ся значению одноименного свойства из родительского компонента. Это позволяет наследовать значения свойств своих родителей.

2.1.8. События

2.1.8.1. Процедуры обработки событий

Для каждого объекта существует набор событий, на которые может реагировать объект. Алгоритм этой реакции задается процедурой поль­зователя обработки этого события либо стандартной процедурой (коман­дой), которая называется методом. Текст процедуры набирается в прог­рам­мном окне, которое вызывается двойным щелчком по полю зна­чения нуж­но­го события на странице EventsИнспектора объектов. Имя процедуры состоит из имени формы, точки, имени объекта и имени события без первых двух букв «On».

2.1.8.2. Мышь

OnMouseDown/ OnMouseUp ‑ нажатие/отпускание любой кнопки мыши.

OnClick‑ щелчок левой кнопкой мыши по объекту. При нажатии кнопки мыши генерируются события в порядке:OnMouseDown,OnClick(для левой кнопки),OnMouseUp.

OnDblClick‑ двойной щелчок левой кнопкой мыши по объекту. События генерируются в порядке:OnMouseDown,OnClick,OnMouseUp,OnDblClick,OnMouseDown,OnMouseUp.

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

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

Sender‑ указывает имя объекта над которым находится маркер мы­ши. Для получения значения имени объекта можно использовать выра­жение вида: (SenderAsTControl).Namе.

Пример: Label1.Caption:= ‘Объект ‘+(Sender As TControl).Namе;

Shift ‑ указывает на состояние (нажатие) клавиш Alt, Ctrl, Shift и кнопок мыши в виде комбинации констант (в квадратных скобках через запятые): ssShift (нажата клавиша Shift), ssAtt (Alt), ssCtrl (Ctrl), ssLeft (левая кнопка мыши), ssMiddle (средняя кнопка мыши), ssRight (правая кнопка мыши), ssDouble (выполнен двойной щелчок).

X,Y‑ координаты указателя мышки в пикселях относительно левого верхнего угла формы, начиная с нуля.

Пример:

Procedure TForm1.Button1MouseDown(Sender: TObject;

Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

Begin If (Sender=button1) And (ssCtrl in Shift) Then {можно Shift=ssCtrl}

Label1.Caption:='Нажаты кнопка мыши и Ctrl над кнопкой Button1'; end;

2.1.8.3. Клавиатура

OnKeyDown‑ непрерывно генерируется событие при удерживании любой клавиши в нажатом состоянии.

OnKeyPress‑ при каждом нажатии любой клавиши, кромеTab.

OnKeyUp‑ при отпускании любой клавиши, кромеTab.

События наступают в последовательности их описания.

Процедуры обработки этих событий могут иметь следующие параметры: Sender (имя объекта),Shift(описан выше) иKey.

Параметр ‑ переменная Keyзадает символ, вKeyPress, или его код (именованная константа (п. 1.1.1)), который соответствует нажатой кла­ви­ше. Если в процедуре обработки события параметруKeyзадать символ с нулевым кодом (#0), то это вызовет отмену нажатия клавиши.

Примерввода только цифровых символов, другие игнорируются:

Procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

Begin If (key <'0') Or (key >'9') Then Key:=#0; End;

2.1.8.4. Перемещение объектов

OnStartDrag‑ генерируется источником в начале перемещения. Обработчику передаются параметры:Source(объект ‑ источник),DragObject(адресат перемещения).

OnDragOver‑ вызывается приемником, когда перемещаемый объект находится над приемником. Обработчику передаются параметры:Source(объект ‑ источник),Sender(объект ‑ приемник),X,Y(координаты указа­те­ля мышки),State(состояние перемещения),Accept(подтверждение перемещения ‑True).

OnDragDrop‑ вызывается приемником при размещении на нем объекта. Обработчику передаются параметры:Source(объект ‑ источник),Sender(объект ‑ приемник),X,Y(координаты указателя мышки).

OnEndDrag‑ вызывается источником при завершении перемещения. Обра­бот­чику передаются параметры:Target(объект ‑ приемник),X,Y(координаты точки, в которой был отпущен объект ‑ источникSender). Для перемещаемого объекта следует указать свойствоDragMode=dmAutomatic.

Обычно для перемещения достаточно обработать события OnDragOver,OnDragDrop.

Пример перемещения поля Edit1 (DragMode=dmAutomatic):

Procedure TForm1.FormDragOver(Sender, Source: TObject; X, Y: Integer;

State: TDragState; var Accept: Boolean); Begin Accept:=(Source=Edit1); End;

Procedure TForm1.FormDragDrop(Sender, Source: TObject; X, Y: Integer);

Begin Edit1.Left:=X;Edit1.Top:=Y;End;//координаты нового положения

Примерперемещения элемента списка ‑ источникаListBox1 со свойствомDragMode=dmAutomaticв список ‑ приемникListBox2:

Procedure TForm1.ListBox2DragOver(Sender, Source: TObject; X, Y: Integer;

State: TDragState; var Accept: Boolean);

Begin Accept:=Source=ListBox1; End; //подтверждение переноса

Procedure TForm1.ListBox2DragDrop(Sender, Source: TObject; X, Y: Integer);

Begin With Source As TListBox Do Begin //присоединение объекта ListBox1

ListBox2.Items.Add(Items[ItemIndex]);//добавление элемента из ListBox1 в 2

Items.Delete(ItemIndex);{удаление скопирован. элемента из ListBox1}End;