DBGrid控制某一行的颜色和字体? ( 积分: 100 )

  • 主题发起人 主题发起人 feifanhsl
  • 开始时间 开始时间
F

feifanhsl

Unregistered / Unconfirmed
GUEST, unregistred user!
如何在button事件中实现dbgrid某行的颜色和字体?
 
自己声明记录体,记录行号、颜色、字体等信息,生成一个列表
在OnDrawColumnCell遍历列表控制颜色和字体
按按钮的时候增加或减少列表的项
 
procedure TfrmImport.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if (qryImport.FieldByName('...').AsString <> '') then
dbgrid1.Canvas.Brush.color := $00E4CAB8
else
dbgrid1.Canvas.Brush.color := clWhite;
dbgrid1.Canvas.Font.Color := clBlack;
dbgrid1.DefaultDrawColumnCell(rect,datacol,column,state);
end;
 
我不是在DBGrid1DrawColumnCell事件中写,我要在button onclick中实现
 
在click事件中调用其它事件
 
楼主你还真的不会变通,如果不想去研究dbgrid的实现达到更好的效果,可以这么做,
既然你知道要刷新某行,那么在button click里记下条件,然后调用dbgrid.repaint,
其实就是执行DBGrid1DrawColumnCell啦,把条件那行代码改一下,ok-----------
procedure TfrmImport.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if (qryImport.FieldByName('...').AsString <> '') then ---条件
dbgrid1.Canvas.Brush.color := $00E4CAB8
else
dbgrid1.Canvas.Brush.color := clWhite;
dbgrid1.Canvas.Font.Color := clBlack;
dbgrid1.DefaultDrawColumnCell(rect,datacol,column,state);
end;
 
对于dbgrid的这些控制只能在DBGrid1DrawColumnCell事件中写,不过楼主要想用button来控制,那就可以在button的click事件里调用....
 
控制dbgrid某行和列的颜色和字体需用DBGridDrawColumCell事件中添加:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if (query1.FieldByName('...').AsString =条件) then
dbgrid1.Canvas.Brush.color := clred;
dbgrid1.DefaultDrawColumnCell(rect,datacol,column,state);
end;
 
只要在button事件里触发(edit,insert,append等)都会触发OnDrawColumnCell事件,改变事件就写在OnDrawColumnCell就OK
 
唉!来晚了
 
可以。方法很簡單。
 
后退
顶部