请问如何能够控制DBGRID的某一个CELL的字体和颜色??(50分)

  • 主题发起人 主题发起人 dunktalent
  • 开始时间 开始时间
D

dunktalent

Unregistered / Unconfirmed
GUEST, unregistred user!
比如DBGRID的第二行的FF我想让他的颜色变为其它颜色,该怎么办??
AA EE JJ
BB FF KK
CC HH LL
BB II MM
 
用DELPHI自带的DBGrid肯定是不行了,建议你用TogGrid控件。
 
在DBGrid1DrawColumnCell里写
if table1.FieldByName('XXX').AsStrnig='FF' then
begin
DBGrid1.Canvas.Brush.Color:=clRed;
end;
DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
 
procedure Tfrm_main.rxdb_InitDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
if (query1.fieldbyname('字段名')='ff') then
dbgrid.Canvas.Font.Color := clWhite;
end;
dbgrid.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
 
to 雨人,pt_email
我想改变CELL中的字的颜色,不是改变CELL的颜色
 
dbgrid.Canvas.Font.Color := clWhite;是字的颜色
DBGrid1.Canvas.Brush.Color:=clRed;是背景色
 
to pt_email,雨人
dbgrid.DefaultDrawColumnCell(Rect, DataCol, Column, State)方法的
参数应该怎么传,能不能再具体一些!谢了
 
是呀!比如说:我想按下按钮让他变色怎么办?还有,一行全变色了,要只变行列交叉处怎么办?
 
關注﹗
void __fastcall TForm1::DBGrid3DrawDataCell(TObject *Sender,
const TRect &Rect, TField *Field, TGridDrawState State)
{
if (CDS_EMPLOYE->FieldByName("PART01")->AsString=="06")
DBGrid3->Canvas->Font->Color=clRed;
DBGrid3->DefaultDrawDataCell(Rect,Field,State);
}
DrawDataCell事件里﹐數據交叉的地方?
 
procedure Tquerymoney.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
TDBGrid(Sender).Canvas.Font.Color := clRed;
TDBGrid(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
657
import
I
I
回复
0
查看
777
import
I
I
回复
0
查看
826
import
I
后退
顶部