У меня есть TStringGrid, где у выбранной строки (макс. 1, без множественного выбора) всегда должен быть другой фоновый цвет (u) r.
Я установил для свойства 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;