改变当前记录的颜色(50分)

  • 主题发起人 主题发起人 yang xuewen
  • 开始时间 开始时间
Y

yang xuewen

Unregistered / Unconfirmed
GUEST, unregistred user!
在DBGrid中,当通过Gotonearest定位到当前记录时,如何改变该记录的显示颜色,如,使
整条记录变为红色。请高手帮助。
 
ownnerdraw

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if DataCol = 2 then begin
DBGrid1.Canvas.Brush.Color := clRed;
DBGrid1.Canvas.FillRect(Rect);
end;
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
 
能不能实现整行改变颜色呢?根据一查询字段的值来设定呢?
 
DataCol 是行?是列?
 
参考一下:
http://www.gislab.ecnu.edu.cn/delphibbs/DispQ.asp?LID=319602
基本可以符合要求,但滚动时有时不能刷新。

谁知道有无更好的办法?
 
这是对一个字段更改颜色,整行的类似:请参阅如下代码:
procedure TfrmProgramSet.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
// if tblParam.Active then
begin
case DataCol of
7: //最后一列
begin
DBGrid1.Canvas.Brush.Color:=myColor;
DBGrid1.Canvas.FillRect(Rect);
end
else
DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
end;
end;
 
以上诸位所提方法仅是某一列改变颜色,而非当前记录改变颜色,如哪位高手有新招,请赐
教。
 
结合上面的代码可以这样:(试试,以前我作过,源代码没了,这是凭记忆的,可能
不很正确。
if state=[dsSelected] then
begin
InflateRect(Rect,2,2);
DBGrid1.Canvas.Brush.Color:=myColor;
DBGrid1.Canvas.FillRect(Rect);
DBGrid1.Canvas.Textout(Rect.Left,Rect.Top, Column.AsString);
end
else
DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);

 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
889
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部