dbgrid中如何改变它的每一小格的颜色(50分)

  • 主题发起人 主题发起人 tafeng
  • 开始时间 开始时间
T

tafeng

Unregistered / Unconfirmed
GUEST, unregistred user!
我想在程序中,判断一下数据,如何数值在某区间内,就让它以某种颜色表示,请问如何实现。谢。
[:)]
 
eg:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if Table1.FieldByName('sal').AsInteger>2000 then
DBGrid1.Canvas.Font.Color:=clBlue;
DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
 
这样做,改变地是一行数据的颜色,我想只改它所在一格的颜色。
 
嘿嘿,用 = 不就可以啦

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if Table1.FieldByName('ID').AsInteger= 2000 then
DBGrid1.Canvas.Font.Color:=clBlue;
DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;

 
请参考这个贴子:
http://211.101.4.25/delphibbs/dispq.asp?lid=649717
你以后提问之前最好能先搜索一下旧贴,就可以不用浪费积分了。[:)]
 
如下所示即可:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if Column.FieldName <> 'SIZE' then Exit;
if Table1.FieldByName('SIZE').AsInteger>10 then
begin
DBGrid1.Canvas.Brush.Color:=clblue; //改变底色,根据情况是否需要
DBGrid1.Canvas.Font.Color:=clred; //改变字体颜色,根据情况是否需要
DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
end;
 
注意是一小格,不是一行!
 
后退
顶部