hey,
ist nur ein Ausschnitt!
Dann ist an dieser Stelle der Quelltext aber falsch eingerückt.
Ich würde auch viel mehr Unterfunktionen verwenden.
Damit bleibt der Quelltext z.B. für spätere Fehlersuche oder Änderungen lesbar.
Delphi-Quellcode:
function TForm1.GetColorForValue(AValue: Integer): TColor;
begin
case AValue of
1..3, 11: Result := $004080FF;
4..10: Result := clYellow;
else Result := clBlack;
end;
end;
function TForm1.GetColorForCell(AState: TGridDrawState; AValue: Integer): TColor;
begin
if gdSelected in AState then
Result := clMenu
else
Result := GetColorForValue(AValue, 0);
end;
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
with StringGrid1 do
begin
{Hintergrund und Text, TextRect füllt auch den Hintergrund}
Canvas.Brush.Color := GetColorForCell(State, IntToStrDef(Cells[0, ARow], 0));
Canvas.TextRect(Rect, Rect.Left, Rect.Top, Cells[ACol, ARow]);
{Markierung}
if gdFocused in State then
begin
Canvas.Brush.Color := clTeal;
Canvas.DrawFocusRect(Rect);
end;
end;
end;