Ich möchte das Thema noch mal hochbringen.
Mit nachfolgender Funktion möchte ich im Draw-Grid Zeilen verbinden.
In der jeweils am weitesten links stehenden Zelle soll der Titel stehen.
Ich mache das mit folgenden Code:
Delphi-Quellcode:
procedure TForm2.PaintTitle;
var
r1 : TRect;
r2 : TRect;
begin
r1 := DrawGrid1.CellRect(DrawGrid1.LeftCol ,1);
r2 := DrawGrid1.CellRect(DrawGrid1.LeftCol + DrawGrid1.VisibleColCount,1);
r2.Left := r1.Left;
DrawGrid1.Canvas.Brush.Color := cllime;
DrawGrid1.Canvas.FillRect(r2);
Drawgrid1.Canvas.TextOut(r1.Left+2,r1.Top+2,'Hallo');
end;
Aus dem Ereignis ondrawcell des TDrawgrid verhält sich der Code beim Scrollen völlig unlogisch.
Wie es aussieht zeichnet das Drawgrid erst und verschiebt dann den Bereich beim scrollen.
Starte ich jedoch einen Timer und rufe die Procedure außerhalb von ondrawcell auf,
dann funktioniert es wie gewünscht.
Hat wer einen Tip wie ich das hinbekomme oder kann mir eine andere Componente empfehlen,
mit der das geht. Sämtliche Einträge im Grid sind farbige Flächen (Gant-Diagramm)
Mit Gruß
Peter