Der Post ist zwar schon älter
, aber das Problem hat sich mir jetzt gestellt und ich habe folgende Lösung gefunden:
Offenbar ist ja gewünscht, bei einem bereits dargestellten Stringgrid die Hintergrundfarbe einer bestimmten Zelle zu bestimmen. Das Speichern der Farbe beim Zeichnen im OnPaint-Ereignis der Zelle ist vielleicht nicht immer der geeignetste Weg.
Eine alternative Idee sieht so aus, dass man das Reckteck auf dem Canvas des Stringgrids bestimmt, das zu der gewünschten Zelle gehört. Dann bestimmt man über die Pixels-Eigenschaft des Canvas innerhalb des Rechtecks die Farbe.
Delphi-Quellcode:
var
LCellRect: TRect;
LSpalteNr, LZeileNr: Integer;
LColor: TColor;
begin
// ... hier die gewünschte LSpalteNr und LZeileNr definieren
// Zellrechteck erimtteln
LCellRect := StringGrid1.CellRect(LSpalteNr, LZeileNr);
// Farbe im Rechteck ermitteln
LColor := StringGrid1.Canvas.Pixels[LCellRect.Left + 2, LCellRect.Top + 2]; // Rand des Stringgrids berücksichtigen!
// ... hier etwas mit der Farbe (LColor) machen
end;
Ich hoffe, das hilft auch anderen.
Wer fragt, ist ein Narr für 5 Minuten, wer nicht fragt, ist ein Narr ein Leben lang.