ich hab diesen Code geschrieben
Delphi-Quellcode:
procedure Gridcolor(Sender: TObject;
ACol, ARow: Integer; Rect: TRect; State: TGridDrawState; geldrows : Array of Integer);
var check : boolean;
i : integer;
begin
with Sender as TStringgrid do
begin
WITH Canvas DO
BEGIN
check := false;
for i := 0 to length(geldrows)-1 do
begin
if ACol = geldrows[i] Then check := true;
end;
if (ARow > 0) then
begin
if (check) then
Brush.Color := schriftfarbe
else
Brush.Color := gridhintergrund;
end;
//if (row = ARow) then Brush.Color := schriftfarbe XOR 65655;
if (State = [gdSelected]) then Brush.Color := schriftfarbe XOR 65655;
FillRect(Rect);
TextOut(Rect.Left, Rect.Top, Cells[ACol, ARow]);
END;
end;
end;
wichtig sind hier folgende Zeilen
Delphi-Quellcode:
//if (row = ARow) then Brush.Color := schriftfarbe XOR 65655;
if (State = [gdSelected]) then Brush.Color := schriftfarbe XOR 65655;
sie sollten beide das selbe machen, die Zeile die selected ist anders einfärben. Tun sie auch, zumindestens fast. Die auskommentierte Zeile tut wie befohlen und markierte alle selektierte Zellen (rowSelect ist an) aber die zweite lässt die erste Spalte unengefärbt
Warum nur ?