Stockage interne de la date

De RAD Studio
Aller à : navigation, rechercher

Remonter à Personnalisation d'une grille - Index

Pour stocker la date du calendrier, vous devez avoir un champ contenant la date, ainsi qu'une propriété accessible à l'exécution seulement qui fournit un accès à cette date.

L'ajout de la date interne au calendrier requiert trois étapes :

  1. Déclarez un champ privé pour contenir la date :
 type
   TSampleCalendar = class(TCustomGrid)
   private
     FDate: TDateTime;
   .
   .
   .
 
 class PACKAGE TSampleCalendar : public TCustomGrid
 {
 public:
     __property TDateTime CalendarDate = {read=FDate, write=SetCalendarDate, nodefault};
     .
     .
     .
 };
 
 class PACKAGE TSampleCalendar : public TCustomGrid
 {
 private:
     TDateTime FDate;
     .
     .
     .
 };
  1. Initialisez le champ date dans le constructeur :
 constructor TSampleCalendar.Create(AOwner: TComponent);
 begin
   inherited Create(AOwner);                                       { existait déjà }
   .                                  { d'autres initialisations ici }
   .
   .
   FDate := Date;                    { prendre la date active du RTL }
 end;
 
 __fastcall TSampleCalendar::TSampleCalendar(TComponent *Owner) : TCustomGrid(Owner)
 {
   .
   .
   .
   FDate = FDate.CurrentDate();
 }
  1. Déclarez une propriété à l'exécution pour accéder à la date encodée.Vous aurez besoin d'une méthode pour définir la date car sa définition entraîne la mise à jour de l'image sur l'écran du contrôle :
 type
   TSampleCalendar = class(TCustomGrid)
   private
     procedure SetCalendarDate(Value: TDateTime);
   public
     property CalendarDate: TDateTime read FDate write SetCalendarDate;
   .
   .
   .
 procedure TSampleCalendar.SetCalendarDate(Value: TDateTime);
 begin
   FDate := Value;                { définir la nouvelle valeur date }
   Refresh;                       { mettre à jour l'image à l'écran }
 end;
 
 class PACKAGE TSampleCalendar : public TCustomGrid
 {
 private:
     void __fastcall SetCalendarDate(TDateTime Value);
     .
     .
     .
 };
 
 void __fastcall TSampleCalendar::SetCalendarDate(TDateTime Value)
 {
   FDate = Value;                      // définit la nouvelle valeur de la date
   Refresh();                          // met à jour l'image sur l'écran
 }