Modification des valeurs initiales

De RAD Studio
Aller à : navigation, rechercher

Remonter à Personnalisation d'une grille - Index

Un calendrier est essentiellement une grille avec un nombre fixe de lignes et de colonnes, ne contenant pas nécessairement des dates. Les propriétés ColCount et RowCount de la grille n'ont donc pas été publiées, car il est peu probable que les utilisateurs du calendrier voudront afficher autre chose que les sept jours de la semaine. Vous devez néanmoins définir les valeurs initiales de ces propriétés en fonction des sept jours de la semaine.

Pour changer les valeurs initiales des propriétés du composant, vous devez redéfinir le constructeur afin qu'il affecte les valeurs voulues. Le constructeur doit être virtuel.

Souvenez-vous que vous devez ajouter le constructeur à la partie public de la déclaration de la classe du composant, puis écrire le nouveau constructeur dans la partie implémentation de l'unité du composant. La première instruction du nouveau constructeur doit toujours être un appel au constructeur hérité. Ensuite, ajoutez l'unité StdCtrls à la clause uses.

type
  TSampleCalendar = class(TCustomGrid)
  public
    constructor Create(AOwner: TComponent); override;
    // …
  end;
// …
constructor TSampleCalendar.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);                                 { call inherited constructor }
  ColCount := 7;                                                { always seven days/week }
  RowCount := 7;                                    { always six weeks plus the headings }
  FixedCols := 0;                                                        { no row labels }
  FixedRows := 1;                                                { one row for day names }
  ScrollBars := ssNone;                                              { no need to scroll }
  Options := Options - [goRangeSelect] + [goDrawFocusSelected];  {disable range selection}
end;
//header file
class PACKAGE TSampleCalendar : public TCustomGrid
{
protected:
    virtual void __fastcall DrawCell(int ACol, int ARow, const Windows::TRect &Rect,
      TGridDrawState AState);
    // …
public:
    __fastcall TSampleCalendar(TComponent *Owner);   // the added constructor
    // …
};


//implementation file
__fastcall TSampleCalendar::TSampleCalendar(TComponent *Owner) : TCustomGrid(Owner)
{
  ColCount = 7;
  RowCount = 7;
  FixedCols = 0;
  FixedRows = 1;
  ScrollBars = ssNone;
  Options = (Options >> goRangeSelect) << goDrawFocusSelected;
}
void __fastcall TSampleCalendar::DrawCell(int ACol, int ARow, const Windows::TRect
  &ARect, TGridDrawState AState)
{
}

Le calendrier a dorénavant sept colonnes et sept lignes, avec la ligne de titre fixe (ou qui ne défile pas).

Voir aussi