请教:dbgrid中怎样将特定记录特定字段用不同的颜色显示出来?(10分)

B

board

Unregistered / Unconfirmed
GUEST, unregistred user!
表中有a和b两个字段,当某一条记录中
a中字段的值等于b中字段值时
请问怎样将该条记录中a字段的值用不同的颜色显示出来?
 
procedure Tmainf.DBGridwswjDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if Cds_wswj.FieldByName('gczt').asstring='借出' then
begin
DBGridwswj.Canvas.Brush.Color:=$00FFFF80; //颜色
end;
DBGridwswj.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
 
请问你的Cds_wswj指的是什么?
 
cds_wswj是ClientDataSet的Name
 
zhousi的算法古迹是他自己的某一段程序里的
你把他的if语句改一下就行了。
ClientDataSet1.First;
while not ClientDataSet1.EOF do
begin
if ClientDataSet1.FieldByName('a').Asstring = ClientDataSet1.FieldByName('b').asstring then
begin
......
end;
ClientDataSet1.next;
end;
基本上就这样。ADOQuery的话跟ClientDataSet一样。
画图的那部分可以参照zhousi的,我就不写了。
 
这是我写的
procedure Tmyxrs.bsSkinDBGrid4DrawDataCell(Sender: TObject;
const Rect: TRect; Field: TField; State: TGridDrawState);
begin
if adoquery7.FieldByName('rs').Asstring >ADOquery7.FieldByName('rl').Asstring then
bsskindbgrid4.Canvas.Font.Color:=clred;
bsskindbgrid4.DefaultDrawDataCell(Rect, Field, State);//63
end;
但是提示 出错了
[Error] xkrscx.pas(63): Incompatible types

在表中,rs是smallint型
rl是int型,表中无空值
 
to board
if Cds_wswj.FieldByName('gczt').asstring='借出' then
是判断是否需要改变颜色条件
你那可以改成
if table.FieldByName('a').asstring=table.FieldByName('b').asstring then

DBGridwswj.Canvas.Brush.Color:=$00FFFF80; //颜色
dbgridwswj是一个dbgrid的实例,$00FFFF80是颜色,你可以自己任意改动
 
顶部