Anfangswerte ändern

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Gitter anpassen - Index

Ein Kalender besteht hauptsächlich aus einem Gitter mit einer festgelegten Anzahl von Zeilen und Spalten, wobei aber nicht alle Zellen einen Datumswert enthalten müssen. Da es äußerst unwahrscheinlich ist, dass die Benutzer des Kalenders etwas anderes als sieben Tage pro Woche anzeigen wollen, wurden die Gittereigenschaften ColCount und RowCount nicht als published deklariert. Die Initialisierungswerte dieser Eigenschaften müssen aber trotzdem festgelegt werden, damit die Woche immer sieben Tage hat.

Um die Initialisierungswerte der Komponenteneigenschaften zu ändern, müssen Sie den Konstruktor überschreiben. Der Konstruktor muss virtuell sein.

Denken Sie daran, dass der Konstruktor dem public-Abschnitt der Objektdeklaration der Komponente hinzugefügt werden muss. Anschließend definieren Sie den neuen Konstruktor im implementation-Abschnitt der Komponenten-Unit. Die erste Anweisung im neuen Konstruktor sollte immer ein Aufruf des geerbten Konstruktors sein. Anschließend fügen Sie die Unit StdCtrls der uses-Klausel hinzu.

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)
{
}

Der Kalender verfügt nun über sieben Spalten und über sieben Zeilen. Die oberste Zeile ist nicht beweglich (ist also fest verankert und wird beim Bildlauf nicht verschoben).

Siehe auch