選択された行 (最大 1、複数選択なし) が常に異なる背景色 (u)r を持つ必要がある TStringGrid があります。
DefaultDrawing プロパティを false に設定し、以下に示す OnDrawCell イベントのメソッドを提供しましたが、機能しません。それがどのように機能していないかを正確に説明することさえできません。できれば、すでに問題を解決していると思います。すべて同じ背景色の完全な行を持つ代わりに、それはごちゃまぜであると言えば十分です。複数の行には「選択された」色のセルがいくつかあり、選択された行のすべてのセルが選択された色を持つわけではありません。
セルの行を strnggrid の行と比較していることに注意してください。選択した行のセルのみが選択されているため、選択したセルの状態を確認できません。
procedure TForm1.DatabaseNamesStringGridDrawCell(Sender: TObject;
ACol, ARow: Integer;
Rect: TRect;
State: TGridDrawState);
var cellText :String;
begin
if gdFixed in State then
DatabaseNamesStringGrid.Canvas.Brush.Color := clBtnFace
else
if ARow = DatabaseNamesStringGrid.Row then
DatabaseNamesStringGrid.Canvas.Brush.Color := clAqua
else
DatabaseNamesStringGrid.Canvas.Brush.Color := clWhite;
DatabaseNamesStringGrid.Canvas.FillRect(Rect);
cellText := DatabaseNamesStringGrid.Cells[ACol, ARow];
DatabaseNamesStringGrid.Canvas.TextOut(Rect.Left + 2, Rect.Top + 2, cellText);
end;