Отправляет email-рассылки с помощью сервиса Sendsay

Delphi. Уроки

  Все выпуски  

Delphi. Уроки


Информационный Канал Subscribe.Ru

Delphi. Создание компонентов. Уроки с сайта http://progs.biz

Рассылка № 39

Delphi. Создание компонентов. Урок 5. Добавление событий.

Полные версии уроков (с картинками) можно найти по адресам:
Урок 5. Добавление событий.

Фленов М. Программирование в Delphi глазами хакера.
Фленов М. Программирование в Delphi глазами хакера
Заказать на Озоне

Подробнее

Рассылки сайта progs.biz через subscribe.ru
Уроки по Flash MX
Уроки по Flash MX с сайта http://progs.biz. От создания отдельных роликов до применения языка ActionScript.

Delphi. Создание компонентов. Урок 5. Добавление событий

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

А вот такие добавления надо сделать в коде нашего компонента. Во-первых, мы должны наше событие объявить в private-части нашего класса:

  TRandom = class(TLabel)
  private
    { Private declarations }

    ...
    // Объявление события.
    FGetMax: TNotifyEvent;

Как вы видите, события имеют тип TNotifyEvent.

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

  published
    { Published declarations }

    ...
    // Публикация события.
    property GetMax: TNotifyEvent read FGetMax write FGetMax;

Как тут видно, при использовании нашего компонента это событие будет видно под именем GetMax.

И, наконец, мы должны вызвать наше событие в нужном месте нашего кода. А именно мы хотим, чтобы оно возбуждалось, когда случайное число, получаемое в методе GetNumber нашего компонента, оказывалось равным максимально возможному, т. е. Fmax:

Function TRandom.GetNumber: Integer;
 ...
begin
  ...
  i:= System.Random(Fmax - Fmin + 1)+ Fmin;
  // Возбуждение события.
  if (Assigned(FGetMax) and (i = Fmax)) then FGetMax(self);

Как вы видите, перед возбуждением события мы проверяем, а был ли ему вообще назначен обработчик. Это мы делаем в выражении

Assigned(FGetMax)

Вот, собственно, и все с добавлением в наш класс события.

Наверх

PARKING.RU. Качественный ВИРТУАЛЬНЫЙ ХОСТИНГ на платформе Windows(r): поддержка .NET, многофункциональная панель управления, аренда бизнес-приложений, сертифицированные специалисты. Управляемый ВЫДЕЛЕННЫЙ ХОСТИНГ на платформе Windows(r): производительные серверы, профессиональная поддержка, аренда ПО Microsoft(r), безопасность, гарантии. http://www.parking.ru
Copyright Алексеев Игорь, 2002-2004
Copyright сайт progs.biz, 2002-2004
Распространение материалов без разрешения владельцев авторских прав запрещено.


BannerDrive.ru

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться

В избранное