首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否更改TDBGrid行的背景?

是否更改TDBGrid行的背景?
EN

Stack Overflow用户
提问于 2013-12-28 00:06:13
回答 3查看 1.4K关注 0票数 1

我想模拟TDBGrid选定行(dgRowSelect)的资源管理器主题,而不是蓝色。我该怎么做呢?

以下是预期结果的示例:

EN

回答 3

Stack Overflow用户

发布于 2013-12-28 00:55:57

当您说“模拟”时,我不清楚您打算如何选择所选的行背景色,但是下面的代码应该在标准的TDBGrid中绘制它。

代码语言:javascript
复制
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;
票数 1
EN

Stack Overflow用户

发布于 2013-12-28 00:56:01

您可以使用OnDrawColumnCell事件,下面是一个简单的示例:

代码语言:javascript
复制
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;

希望这能有所帮助

票数 1
EN

Stack Overflow用户

发布于 2014-06-20 00:54:55

将TDBGrid的"SelectedBackColor“更改为所需的颜色。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20803757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档