Die Zellen füllen
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);
}