Endlich!!
Ich suche jetzt in DrawCell nach der selektierten Zelle und weise ihr die Hintergrundfarbe zu.
Außerdem setzte ich Font.Color bereits beim Übermalen der Zelle dadurch bleibt die Farbe auch wie sie sein soll. Anscheinend muss man die Farbe schon früher setzen, damit sie korrekt ist.
Hier mein Code.
Delphi-Quellcode:
procedure TForm1.StundenplanDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
var
s: string;
begin
with Sender as TStringGrid do begin
if FrList1.Liste.ItemIndex>-1 then begin
if Cells[ACol,ARow]= FrList1.Liste.Selected.Caption then begin
Canvas.Pen.Color:= clwhite;
Canvas.Brush.Color:= clHighlight;
Canvas.FillRect(Rect);
end else begin
if (ACol=0) or (ARow=0) then begin
Canvas.Pen.Color:=clblack;
Canvas.Brush.Color:= StundenPlan.FixedColor;
end else begin
if (state= [gdSelected]) or ((ACol=Selection.Left) and (ARow=Selection.Top)) then begin
Canvas.Brush.Color:= clwhite;
end else
Canvas.Pen.Color:=clwhite;
Canvas.Font.Color:= clBlack; //Schriftfarbe auch für die Selektierte Zelle
Canvas.FillRect(Rect);
end;
end;
end else begin
if (ACol=0) or (ARow=0) then begin
Canvas.Pen.Color:=clblack;
Canvas.Brush.Color:= StundenPlan.FixedColor;
end else begin
if (state= [gdSelected]) or ((ACol=Selection.Left) and (ARow=Selection.Top)) then
Canvas.Brush.Color:= clHighlight
else
Canvas.Brush.Color:= clwhite;
Canvas.Pen.Color:=clwhite;
Canvas.FillRect(Rect);
end;
end;
Font.Color:= $010101; //--> Diese Farbe wird nicht für die selektierte Zelle verwendet
s:= Cells[ACol,ARow];
DrawText(Canvas.Handle,PChar(s),length(s),Rect,DT_Left);
end;
end;
Vielen Dank nochmal an euch alle.
Mfg
Peter