Fourniture d'un événement OnChange
Remonter à Navigation de jour en jour
Les utilisateurs de votre calendrier ont maintenant la possibilité de changer la date. Il paraît donc judicieux de répondre à ces changements.
Ajoutez un événement OnChange à TSampleCalendar.
- Déclarez l'événement ainsi qu'un champ pour le stocker et une méthode dynamique pour appeler l'événement : type
TSampleCalendar = class(TCustomGrid)
private
FOnChange: TNotifyEvent;
protected
procedure Change; dynamic;
.
.
.
published
property OnChange: TNotifyEvent read FOnChange write FOnChange;
.
.
.
class PACKAGE TSampleCalendar : public TCustomGrid
{
private:
TNotifyEvent FOnChange;
.
.
.
protected:
virtual void __fastcall Change();
__published:
__property TNotifyEvent OnChange = {read=FOnChange, write=FOnChange};
.
.
.
}
Ecrivez la méthode Change :
procedure TSampleCalendar.Change; begin if Assigned(FOnChange) then FOnChange(Self); end;
void __fastcall TSampleCalendar::Change() { if(FOnChange != NULL) FOnChange(this); }Ajoutez les instructions appelant Change à la fin des méthodes SetCalendarDate et SetDateElement :
procedure TSampleCalendar.SetCalendarDate(Value: TDateTime); begin FDate := Value; UpdateCalendar; Change; { this is the only new statement } end; procedure TSampleCalendar.SetDateElement(Index: Integer; Value: Integer); begin . { many statements setting element values } . . FDate := EncodeDate(AYear, AMonth, ADay); UpdateCalendar; Change; { this is new } end; end;void __fastcall TSampleCalendar::SetCalendarDate(TDateTime Value) { FDate = Value; UpdateCalendar(); Change(); // this is the only new statement } void __fastcall TSampleCalendar::SetDateElement(int Index, int Value) { . . . // many statements setting element values FDate = TDateTime(AYear, AMonth, ADay); UpdateCalendar(); Change(); // this is new }
Les applications qui utilisent le composant calendrier peuvent maintenant répondre aux changements en associant des gestionnaires à l'événement OnChange.