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

34. Обработчики событий. Делегирование в Delphi

Чтобы осуществить обработку такого события, как, например, щелчок по кнопке, необходимо создать подкласс класса TButoon и добавить в него обработчик события. На практике, создавать новый класс не рационально: это достаточно сложная операция. Обычно в Делфи обработчик события – это метод формы, содержащей этот компонент, а не метод самого компонента. Т.е. обработка событий, имеющих отношение к компоненту выполняется средствами владельца компонента, т.е. формы, на которой он расположен. Такая технология называется делегированием и она является основой компонентной модели. Реализация событий в Делфи основана на специальном элементе языка, называемом указателем на методы. Технически тип указатель на методы – это процедурный тип, обладающий неявным параметром Self. Т.е. в отличие от указателей на функцию, указатель на метод хранит в себе 2 адреса: адрес метода и адрес экземпляра объекта. Когда указатель на метод используется для обращения к методу, адрес экземпляра объекта появляется в коде под именем Self. Объявление такого типа такое же, но в конце добавляется слово of object: type TNotifyEvent = procedure (Sender: TObject) of object.

Пример. TAnimal = class

private

FSay: TNotifyEvent;

public

property OnSay: TNotifyEvent read FSay write FSay;

procedure DoSay(Sender: TObject);

end;

метод диспетчеризации:

procedure TAnimal.DoSay;

begin

if Assigned(FSay) then FSay(Self)

end;

обработчик события:

procedure TForm1.DogSay(Sender: TObject);

begin

vclbl.Caption:='Ррррр';

vclbl.Font.Size:=random(9)+10

end;

Метод диспетчеризации – метод, соответствующий каждому событию, несущий ответственность за исполнение метода обработки.

35. События стандартных визуальных компонент и их использование

Создание собственных событий и их обработка

Компонентно-ориентированное программирование

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