|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Создание своих событий
Здравствуйте, вопрос по поводу создания событий, подскажите пожалуйста как создать обработку событий например при изменении property Bol у класса:
Код:
TYPE TMyTestClass = class private FBol:boolean; public property Bol:boolean read FBol write FBol; end; подскажите пожалуйста... Если Вы находите ошибки, исправить которые дело долгое и нудное, ничего не делайте - просто внесите их в список особенностей |
#2
|
||||
|
||||
Так:
Код:
unit Unit2; interface uses classes; type TMyTestClass = class private FBol:boolean; FOnAfterChangeBol: TNotifyEvent; FOnBeforeChangeBol: TNotifyEvent; FOnBeforeReadBol: TNotifyEvent; FOnAfterReadBol: TNotifyEvent; function GetBol: boolean; procedure SetBol(const Value: boolean); procedure SetOnAfterChangeBol(const Value: TNotifyEvent); procedure SetOnBeforeChangeBol(const Value: TNotifyEvent); procedure SetOnAfterReadBol(const Value: TNotifyEvent); procedure SetOnBeforeReadBol(const Value: TNotifyEvent); public property Bol:boolean read GetBol write SetBol; property OnBeforeChangeBol:TNotifyEvent read FOnBeforeChangeBol write SetOnBeforeChangeBol; //перед изменением property OnAfterChangeBol:TNotifyEvent read FOnAfterChangeBol write SetOnAfterChangeBol; //после изменения property OnBeforeReadBol:TNotifyEvent read FOnBeforeReadBol write SetOnBeforeReadBol; //перед чтением property OnAfterReadBol:TNotifyEvent read FOnAfterReadBol write SetOnAfterReadBol; //после чтения end; implementation { TMyTestClass } function TMyTestClass.GetBol: boolean; begin if Assigned(FOnBeforeReadBol) then FOnBeforeReadBol(Self); Result:=FBol; if Assigned(FOnAfterReadBol) then FOnAfterReadBol(Self); end; procedure TMyTestClass.SetBol(const Value: boolean); begin if Assigned(FOnBeforeChangeBol) then FOnBeforeChangeBol(Self); FBol:=Value; if Assigned(FOnAfterChangeBol) then FOnAfterChangeBol(Self); end; procedure TMyTestClass.SetOnAfterChangeBol(const Value: TNotifyEvent); begin FOnAfterChangeBol := Value; end; procedure TMyTestClass.SetOnAfterReadBol(const Value: TNotifyEvent); begin FOnAfterReadBol := Value; end; procedure TMyTestClass.SetOnBeforeChangeBol(const Value: TNotifyEvent); begin FOnBeforeChangeBol := Value; end; procedure TMyTestClass.SetOnBeforeReadBol(const Value: TNotifyEvent); begin FOnBeforeReadBol := Value; end; end. Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#3
|
||||
|
||||
Спасибо !
Большое спасибо, всё понял, разобрался, сделал как нужно себе ещё..
Aristarh Dark, спасибо ещё раз Если Вы находите ошибки, исправить которые дело долгое и нудное, ничего не делайте - просто внесите их в список особенностей |