ich plage mich gerade etwas ab um Zellen in einem Stringgrid nach unterschiedlichen Kriterien einzufärben.
Hab da einige Beispiele gefunden und an sich klappt es ganz gut. Allerdings bin ich über unterschiedliche Codevarianten gestolpert und möchte nun wissen wie man korrekt mit solchen Events umgeht.
Als Beispiel mal ein TStringgrid.
Wird in Event auf das Objekt per Objektvariable zugegriffen oder über "Sender"
ZB
Code: Alles auswählen
procedure TfrmTracks.StringGrid1DrawCell(Sender: TObject; aCol,
  aRow: Integer; aRect: TRect; aState: TGridDrawState);
var
  ZellText:string;
begin
  If (gdFixed in aState) then exit;
  if (aCol = 3) then begin
      stringgrid1.Canvas.Brush.Color := clYellow;  //<-- auf den Stringgrid1 direkt zugreifen
      stringgrid1.Canvas.Font.Color := clBlack;
      stringgrid1.canvas.FillRect(arect);
      ZellText := stringgrid1.Cells[aCol, aRow]; // Text der Zelle holen
      StringGrid1.Canvas.TextOut(aRect.Left + 2, aRect.Top + 2, ZellText);
  end;
end;                 
Code: Alles auswählen
procedure TfrmTracks.StringGrid1DrawCell(Sender: TObject; aCol,
  aRow: Integer; aRect: TRect; aState: TGridDrawState);
var
  ZellText:string;
  grid: TStringGrid;
begin
  grid := Sender as TStringGrid;  //<--- den Sender casten
  If (gdFixed in aState) then exit;
  if (aCol = 3) then begin
      grid.Canvas.Brush.Color := clYellow;    // <---und ab hier über die gecastete variable zugreifen
      grid.Canvas.Font.Color := clBlack;
      grid.canvas.FillRect(arect);
      ZellText := grid.Cells[aCol, aRow]; // Text der Zelle holen
      grid.Canvas.TextOut(aRect.Left + 2, aRect.Top + 2, ZellText);
  end;
end;                 
...oder ist es eh egal?
Wie ist das korrekt und sauber ?


 die Variante in OnDrawCell hin bekommen.
 die Variante in OnDrawCell hin bekommen.
 
  Verein
Verein 
 Links
Links Suche
Suche