Einzelnen Beitrag anzeigen

hanspeter

Registriert seit: 26. Jul 2003
Ort: Leipzig
1.350 Beiträge
 
Delphi XE2 Professional
 
#1

Spalten zusammenfassen im Drawgrid

  Alt 20. Mai 2010, 16:16
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
  Mit Zitat antworten Zitat