我想模拟TDBGrid选定行(dgRowSelect)的资源管理器主题,而不是蓝色。我该怎么做呢?
以下是预期结果的示例:

发布于 2013-12-28 00:55:57
当您说“模拟”时,我不清楚您打算如何选择所选的行背景色,但是下面的代码应该在标准的TDBGrid中绘制它。
procedure TForm1.FormCreate(Sender: TObject);
begin
DBGrid1.DefaultDrawing := False;
DBGrid1.Options := DBGrid1.Options + [dgRowSelect];
end;
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
var
Grid : TDBGrid;
BackColor : TColor;
begin
Grid := Sender as TDBGrid;
if gdSelected in State then begin
BackColor := clYellow; // or whatever
Grid.Canvas.Brush.Color := BackColor;
Grid.Canvas.Font.Color := Grid.Font.Color;
end;
Grid.Canvas.FillRect(Rect);
Grid.Canvas.TextOut(Rect.Left, Rect.Top, Field.DisplayText);
end;发布于 2013-12-28 00:56:01
您可以使用OnDrawColumnCell事件,下面是一个简单的示例:
procedure TForm4.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if mydataSet.FieldByName('Age').AsInteger > 18 then
DBGrid1.Canvas.Brush.Color:= clRed;
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;希望这能有所帮助
发布于 2014-06-20 00:54:55
将TDBGrid的"SelectedBackColor“更改为所需的颜色。
https://stackoverflow.com/questions/20803757
复制相似问题