Hallo liebe Wissende,
in einem Stringgrid färbe ich jede 2te Zeile um es übersichtlicher zu machen.
Deshalb muss ich allerdings auch markierte Zeilen andersfarbig gestalten weil sonst die bereits gefärbten Zeilen sich in markiertem Zustand nicht von den anderen abheben.
Problem 1 : Hierbei entsteht bereits das Problem dass die erste Spalte nicht mitgefärbt wird.
Problem 2: Durch ein doppelklick auf eine Zeile öffnet sich ein Detailfenster. Da man durch scrollen usw. irgendwann nicht mehr weiss zu welcher Zeile die Details gehören möchte ich diese Zeile bis zum nächsten Doppelklick auch farblich hervorheben.
Ich hab schon sovieles gelesen und einiges versucht aber nichts führt zu dem gewünschten ergebnis...
Hier der Code im OnDrawCell Ereignis:
Delphi-Quellcode:
procedure TfrmMain.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
if not Odd(ARow) and not (gdFixed in State) then
with StringGrid1 do
begin
Canvas.Brush.Color := TColor($D9D9C0);
Canvas.FillRect(Rect);
Canvas.TextOut(Rect.Left+2, Rect.Top+2, Cells[ACol, ARow]);
end;
if (state = [gdSelected]) then
with Stringgrid1 do
begin
Canvas.Brush.Color := TColor($FFCC99);
Canvas.FillRect(Rect);
Canvas.TextOut(Rect.Left + 2, Rect.Top + 2, Cells[aCol, aRow]);
end;
end;