请教有关DBGRID的问题(50分)

  • 主题发起人 主题发起人 llwwpp
  • 开始时间 开始时间
L

llwwpp

Unregistered / Unconfirmed
GUEST, unregistred user!
我随意改变了DBGRID的颜色,请问如何使当前记录高亮度显示?
 
调用缺省的 DefaultDrawColumnCell
 
这样是不是DBGRID就一种底色,我要隔行显示一种颜色,当选中的当前记录又要高亮度显示,有其它方法吗?,谢谢!
 
调用dbgrid1.columns.color属性
 
llwwpp:
你的问题可如下处理:
1、隔行显示
在DBGrid1的ONDrawColumnCell事件中加入下列代码:
begin
if Odd(DataSet.RecNo) then
DBGrid1.Canvas.Brush.Color:=clRed //
else
DBGrid1.Canvas.Brush.Color:=clBlue; //
DbGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
2、高亮显示当前所选记录
设置DBGrid1的属性Options中的dgRowSelect为TRUE。
 
首先多谢chen_1,你所提到的第1点完全正确,但第2点只会让当前记录的字体变为白色,底色却没办法变黑色,请再赐教,谢谢!
 
if Dbgrid1.DataSource.DataSet.RecNo mod 2=0 then
begin
DBGrid1.Canvas.Brush.Color:=$00eaeaea;
DBGrid1.Canvas.FillRect(rect);
DBGrid1.Canvas.font.color:=clblack;
end
else
begin
DBGrid1.Canvas.Brush.Color:=clwhite;
DBGrid1.Canvas.FillRect(rect);
DBGrid1.Canvas.font.color:=clblack;
end;
if ((State = [gdSelected]) or (State=[gdSelected,gdFocused])) then
begin
DBGrid1.Canvas.Brush.Color:=clinfobk;
DBGrid1.Canvas.FillRect(rect);
DBGrid1.Canvas.font.color:=clblack;
end;
DBGrid1.DefaultDrawColumnCell(rect,datacol,column,state);
 
多人接受答案了。
 
后退
顶部