关于DbGrid的一个问题。(20分)

  • 主题发起人 主题发起人 settingsun
  • 开始时间 开始时间
S

settingsun

Unregistered / Unconfirmed
GUEST, unregistred user!
当DbGrid中记录移动时,如何对当前的一条记录用颜色进行特别显示。
 
給你來一段
1)先在type下定義一個類﹐如﹕Tmydb=class(Tcustomdbgrid);
2)在dbgrid里的Dbgriddrawcolumncell事件里寫如下代碼:
with tmydb(sender) do begin
if datalink.activerecord=row-1 then
canvas.brush.color:=clblue
else
if table1.fieldbyname('字段').asinteger<=20 {條件值} then
canvas.brush.color:=clwhite;
defaultdrawcolumncell(rect,datacol,column,state);
end;
end;
 
不符合我的要求啊,我是说用颜色标识出当前的记录。
 
呵呵~~这么麻烦!
只需将Options中dgRowSelect, dgAlwaysShowSelection两项设为True就行了
 
我有一段代碼是這樣寫的,你參照一下吧
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var oldcolor:Tcolor;
oldpm:Tpenmode;
begin
if (sender as Tdbgrid).DataSource.DataSet.fieldbyname('conspc').AsInteger<>0 then
with (sender as Tdbgrid).Canvas do
begin
pen.Mode:=pmmask;
font.Color:=clblue;
dbgrid1.DefaultDrawColumnCell(rect,datacol,column,state);
end;
with mygrd(sender) do begin
if datalink.ActiveRecord=row-1 then
canvas.Brush.Color:=cllime;
//else
//canvas.Brush.Color:=clred;
dbgrid1.DefaultDrawColumnCell(rect,datacol,column,state);
end;
end;
 
to desertsmoke
你说的方法当然可以,但是要用其它颜色来标识,用程序应该怎么实现。
 
后退
顶部