有没有办法让dbGrid的行根据不同的字段值显示不同的字体颜色?(急)(100分)

  • 主题发起人 主题发起人 xiecc
  • 开始时间 开始时间
X

xiecc

Unregistered / Unconfirmed
GUEST, unregistred user!
如何让dbGrid的行根据不同的字段值显示不同的字体颜色?
例如用数据表里的字段zy作为判断条件,
当zy=1时该行显示为黄色,zy=0时该行显示绿色。
急!哪位大侠知道请尽快告知。

 
tform1.dbgrid1drawcolumncell(sender:tobject;const rect:trect;datacol:integer;
column:tcolumn;state:tgriddrawstate);
begin
with tcustmdbgridcracker(sender) do begin
if zy=1 then
canvas.brush.color:=clyellow
else
canvas.brush.color:=clgreen;
defaultdrawcolumncell(rect,datacol,column,state);
end;
end;
 
补充:
在前面加上:
type
tcustomdbgridcarcker=class(tcustomdbgrid);
 
这是我在tomm的网页上看到的
。。。。。

如何动态更新DBGrid的颜色?
DBGrid控件是一个有许多用户接口的显示数据库的控件,以下的程序告诉您如何根据显示的内容改变字体的显示颜色。例如,如果一个城市的人口大于200万,我们就让它显示为蓝色。使用的控件事件为DBGrid.OnDrawColumeCell.

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect:TRect;DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if Table1.FieldByName('Population').AsInteger > 20000000 then
DBGrid1.Canvas.Font.Color := clBlue;
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
 
同意上面几位高手的做法!
单元格中绘制文本函数DrawColumnCell()很重要!
老赵同志写的较为仔细,不过zy是否改为
Table1.FieldByName('zy').AsInteger
为好!
这样xiecc就可以照抄了!
还有tcustmdbgridcracker好像不需声明!
 
多谢各位老大了
 
多人接受答案了。
 
后退
顶部