Hallo,
ich zeichne in einem Drawgrid selber, bekomme das was ich will aber nicht so richtig hin.
Vielleicht hat wer einen Tip.
Ein Drawgrid hat eine fixe Column.
Die danach folgenden Columns stellen jeweils einen Tag im Jahr dar und können gescrollt werden.
Die erste Row soll als Titelspalte, unabhängig vom scrollen jeweils die Jahreszahl enthalten.
Folgenden Code verwende ich:
Delphi-Quellcode:
procedure PaintJahr;
begin
n := Grd.LeftCol + Grd.VisibleColCount; // n enthält die am weitesten rechts stehende Spalte
if (acol = n) or (acol = Grd.LeftCol) then // nur in erster und letzter Spalte zeichnen
begin
Grd.Canvas.Font.Size := FontHeight;
r := Grd.CellRect(Grd.LeftCol, 0); // erste sichtbare Spalte
Rect := Grd.CellRect(n,0); // letzte sichtbare Spalte
Rect.Left := r.Left;
Grd.Canvas.FillRect(Rect);
w := YearOf(d);
Grd.Canvas.TextOut(rect.Left + 2, Rect.Top + 2, inttostr(w));
end;
end;
Paintjahr ist eine Routine in onDrawCell
procedure TGantCtrl.GrdDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect;
State: TGridDrawState);
Beim nach rechts scrollen verschwindet der Texteintrag und beim nach links scrollen kommt diese mehrfach.
Hat wer einen Tip?
Mit Gruß
Peter