logo
Лабораторная работа6

Добавление событий

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

Объявим наше событие в private-области нашего класса:

TRandom = class(TLabel)

private { Private declarations }

// Объявление события.

FGetMax: TNotifyEvent;

Далее опубликуем наше событие - для того, чтобы оно появлялось в Инспекторе объектов Delphi:

published { Published declarations } ...

// Публикация события.

property OnGetMax: TNotifyEvent read FGetMax write FGetMax;

При использовании нашей компоненты это событие будет видно под именем OnGetMax.

Перед возбуждением события мы проверяем, а был ли ему вообще назначен обработчик. Это мы делаем в выражении Assigned(FGetMax):

Function TRandom.GetNumber: Integer;

...

begin

...

i:= System.Random(Fmax - Fmin + 1)+ Fmin;

// Возбуждение события.

if (Assigned(FGetMax) and (i = Fmax)) then FGetMax(self);

Наш компонент почти готов для применения (но сначала необходимо сохранить файл с компонентом на жестком диске.). Осталось одно но- это вставить картинку для отображения нашей новой компоненты на Палитры компонентов.