Die Zellen füllen

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Gitter anpassen - Index

Ein Gitter wird immer zellenweise gefüllt. Für unseren Beispielkalender muss deshalb berechnet werden, welches Datum (falls vorhanden) in welche Zelle gehört. Das standardmäßige Zeichnen von Gitterzellen übernimmt eine virtuelle Methode mit dem Namen DrawCell.

Zum Einfügen des Inhalts der Gitterzellen muss die Methode DrawCell überschrieben werden.

Am einfachsten lassen sich die Zellen der Überschriften füllen. Die Laufzeitbibliothek deklariert das Array ShortDayNames, das die Kurznamen der Wochentage enthält:


 
 type
   TSampleCalendar = class(TCustomGrid)
   protected
     procedure DrawCell(ACol, ARow: Longint; ARect: TRect; AState: TGridDrawState);
       override;
   end;
 .
 .
 .
 procedure TSampleCalendar.DrawCell(ACol, ARow: Longint; ARect: TRect;
   AState: TGridDrawState);
 begin
   if ARow = 0 then
     Canvas.TextOut(ARect.Left, ARect.Top, ShortDayNames[ACol + 1]);    { RTL-String verwenden }
 end;


 
 void __fastcall TSampleCalendar::DrawCell(int ACol, int ARow, const Windows::TRect &ARect,
   TGridDrawState AState)
 {
   String TheText;
   int TempDay;
   if (ARow == 0) TheText = ShortDayNames[ACol + 1];
   else
   {
     TheText = "";
     TempDay = DayNum(ACol, ARow);                   // DayNum wird später definiert
     if (TempDay != -1) TheText = IntToStr(TempDay);
   }
   Canvas->TextRect(ARect, ARect.Left + (ARect.Right - ARect.Left
    - Canvas->TextWidth(TheText)) / 2,
   ARect.Top + (ARect.Bottom - ARect.Top - Canvas->TextHeight(TheText)) / 2, TheText);
 }

Themen

Siehe auch