Mahlzeit
DP,
ich arbeite zurzeit noch an meinem Stringgrid. Bei diesem kann man, wenn man auf die oberste Reihe (ARow = 0) klickt, die Tabelle sortieren. Um dies zu ermöglichen, frage ich bei einem OnClick ab, ob die selektierte Reihe = 0 ist und danach erfolgt jetzt nach Spalte die entsprechende Sortierfunktion.
Allerdings möchte ich auch die ganze Reihe, wenn eine Zelle selektiert ist, farbig hervorheben. Dazu hatte ich ursprünglich RowSelect an. Wenn allerdings RowSelect an ist, komme ich nicht mehr an die aktuell selektierte Spalte.
Nun möchte ichc RowSelect selbst malen, dazu habe ich mir überlegt, dass ich im OnCellDraw-Event abfrage, ob die aktuell selektierte Reihe = der Reihe ist, die gerade gemalt wird. Ist dem so, so soll die Zelle farbig gemalt werden.
Im Quelltext sieht dies so aus:
Delphi-Quellcode:
if ARow = sgrdOverview.Row then
begin
sgrdOverview.Canvas.Brush.Color := clHighlight;
sgrdOverview.Canvas.Font.Color := clHighlightText
end
else
begin
sgrdOverview.Canvas.Brush.Color := clWindow;
sgrdOverview.Canvas.Font.Color := clWindowText;
end;
Wenn ich nun mein StringGrid anzeigen lassen, so wird die oberste Reihe (die einzige Reihe) auch erfolgreich angemalt. Wenn ich nun allerdings Daten reinlade und eine andere Zelle markiere, kommt es zu Fehlern. Wo liegt der Fehler im Quelltext? (DefaultDrawing ist aus)
Liebe Grüße,
Max