Hallo,
soll die Markierung nie angezeigt werden? Oder nur wenn das StringGrid nicht den Focus hat, denn dann muss man das noch extra betrachten.
Bzgl. der Schriftfarbe hat
TonyR Dir schon den richtigen Tipp gegeben.
Delphi-Quellcode:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
if ARow>0 then
begin
case StringGridColorArray[ARow] of
0: StringGrid1.Canvas.Brush.Color := $00DDE2FB;
1: StringGrid1.Canvas.Brush.Color := $00E0FFFF;
2: StringGrid1.Canvas.Brush.Color := $00C6FBDA;
else
StringGrid1.Canvas.Brush.Color := clWindow;
end;
StringGrid1.Canvas.FillRect(Rect);
StringGrid1.Canvas.Font.Color := StringGrid1.Font.Color;//<--- wg. der "negativ"-Schriftfarbe
StringGrid1.Canvas.TextOut(Rect.Left + 2, Rect.Top + 1, StringGrid1.Cells[ACol, ARow]);
//soll der Focusrahmen auch verschwinden, dann
if gdFocused in State then
StringGrid1.Canvas.DrawFocusRect(Rect);//<--- entfernt/übermalt per xor
end;
end;