找了很久没有看到解决方法,关于 TDBGRide 单元格的问题。(100分)

  • 主题发起人 主题发起人 Jason Law
  • 开始时间 开始时间
J

Jason Law

Unregistered / Unconfirmed
GUEST, unregistred user!
我一个表如下:

ID A B C D E Flag
1 B D E B
2 A B C E E
3 A C D D

说明:
第 1 行 的 flag 值为 B 那我就想 第一行 B 字段 的那个值B 为红色字体,
类推
第 2 行 的 flag 值为 E 那我就想第二行的 E 字段的那个值E为红色字体,
第 3 行 的 flag 值为 D 那我就想第二行的 D 字段的那个值D为红色字体,

请问如何做到。
 
procedure TForm1.DBGrid1DrawDataCell(Sender:TObject; const Rect:TRect;
Field:TField; State:TGridDrawState);
begin
if ADOTable1.FieldByName('flag').Asstring=Field.Text then
begin
(Sender as TDBGrid).Canvas.Font.Color:=clred;
(Sender as TDBGrid).Canvas.TextOut(Rect.Left,Rect.Top,Field.Text);
end;
end;
 
同意楼上
 
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if ADOTable1.FieldByName('flag').Asstring=column.Field.Text then
begin
(Sender as TDBGrid).Canvas.Font.Color:=clred;
(Sender as TDBGrid).Canvas.TextOut(Rect.Left+2,Rect.Top+2,column.Field.Text);
end;
end;
 
DBGrid1DrawDataCell

好象总是不能激活此事件。

inbreak的那个可以。
 
procedure TForm1.DBGrid1DrawDataCell(Sender:TObject; const Rect:TRect;
Field:TField; State:TGridDrawState);
注意是绘制单元,不是列。DrawDataCell!
 
后退
顶部