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

5. Створення подій компоненту

У нашому прикладі вимагається ввести подію OnClear, що відбувається у момент очищення вікна методом Clear. У C++Builder подія - це просто спеціальна властивість, що є покажчиком функції. Тип узагальненого покажчика на функцію, якій передається один параметр типу TComponent (зазвичай this), TNotifyEvent. Подібний тип використовується в C++Builder для подій типу OnClick і багатьох інших, які передають в обробник тільки один параметр i TObject *Sender. Підійде цей тип і для події OnClear. В цьому випадку оголошення події може мати вигляд:

private:

TNotifyEvent FOnClear;

__published:

__property TNotifyEvent OnClear = {read=FonClear, write=FOnClear};

Ці оголошення створює поле FOnClear типу TNotifyEvent, відповідне події. А сама подія оголошується точно так, як і будь-яка властивість. Тільки у read і write записуються не функції читання і запису, а само поле.

Залишається тільки викликати в потрібний момент обробник події користувача, якщо користувач його передбачив. Перевірка, чи є обробник користувача, здійснюється перевіркою відповідної події як булевої величини, повертаючою true, якщо користувач передбачив свій обробник. У нашому випадку ця перевірка і виклик обробника користувача здійснюється додаванням в початок написаної раніше процедури методу Clear оператора:

if (OnClear) OnClear(this);

який викликає обробник користувача OnClear.

Внесіть вказані зміни у файли компонента, відкомпілюйте їх, виделіть на формі тестового додатка компонент EditLetNuml і подивитеся сторінку подій в Інспекторові Об'єктів. Ви побачите, що в списку його подій з'явилася подія OnClear. Двічі клацніть на його правому вікні і ви побачите в тексті модуля заготовку для обробника цієї події :

void __fastcall TForml::EditLetNum1Clear(TObject *Sender)

{

}

Внесіть в цей обробник який-небудь оператор, який би відображував на екрані факт звершення цієї події, наприклад:

ShowMessage("Подія OnClear");

Перевірте ваше тестове застосування в роботі.

Конторольні питання

  1. Яким чином відбувається підключення до ІСР пакету компоненту?

  2. З яких етапів складається розробка нового компоненту?

  3. Яким чином можна вилучити зареєстрований пакет?

Література: [1], стор. 524 - 534

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