+ -
当前位置:首页 → 问答吧 → DBGrid数据行改变背景色

DBGrid数据行改变背景色

时间:2011-10-12

来源:互联网

有没有最简单的方法改变ADOQuery.Next前的那行数据的背景色.除此之外原来的默认样式不变

作者: elangzi   发布时间: 2011-10-12

Delphi(Pascal) code
......
var
  Form1: TForm1;

implementation

var iRow:integer;

{$R *.dfm}

procedure TForm1.ADOQuery1BeforeScroll(DataSet: TDataSet);
begin
  iRow:=ADOQuery1.RecNo;
  DBGrid1.Refresh;
end;

procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
  Field: TField; State: TGridDrawState);
begin
  if iRow<0 then exit;
  if ADOQuery1.RecNo=iRow then DBGrid1.Canvas.Brush.Color:=clSkyBlue;//原焦点记录用clSkyBlue颜色显示
  DBGrid1.Canvas.FillRect(Rect);
  DBGrid1.DefaultDrawDataCell(Rect,Field,State);
end;
......

作者: gzzai   发布时间: 2011-10-12

有这样一种方式不知道能不能满足你的需求
1.定义private 变量
  rowid:integer;或其他类型用于标示一条记录;
2.在执行adoquery.next的事件中写如下代码
  rowid:=adoquery.fieldbyname('rowid').value;
  dbgrid.refesh;

对dbgrid的ondrawcolumncell事件做如下处理,
  if (sender as TDBGrideh).DataSource.DataSet.FieldByName ('rowid').Value=rowid then

  (sender as TDBGrideh).Canvas.Brush.Color:=clyellow
  else
  (sender as TDBGrideh).Canvas.Brush.Style:=bsClear; //如果在用其它样式,可以在此处做适当修改

sender as TDBGrideh).DefaultDrawColumnCell(rect,datacol,column,state);

作者: zhnglicho   发布时间: 2011-10-12