请高手指点,太难了!!!!!(50分)

  • 主题发起人 主题发起人 涛子
  • 开始时间 开始时间

涛子

Unregistered / Unconfirmed
GUEST, unregistred user!
[:(]
dbgrid中当选中一条记录时,些记录的最左端显示一个对号.
 
并不能实现我的总是
 
打定一个字段为Boolean 型的。
在 DBgrid 的 OnCellOwnerDraw 过程中 判断是否是此列,如果是就依照字段的值来
画个 对号。
 
能不能更详细一点
谢了
 
DBGrid.DefaultDraw:=False;

procedure XXX.DBGridOnDrawColumnCell((Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if 条件满足 then
//你的处理
else
DBGrid.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
 
(以下代码测试通过)
把DBGrid1.Options中的dgRowSelect设为True;
窗口上放一个Image1,找一个好看的对号图片放进去然后吗。。。
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
begin
if (gdSelected in State) and (Field.FieldName = 'Bill_Code') then
DBGrid1.Canvas.Draw(Rect.Left,Rect.Top,Image1.Picture.Graphic);
end;
 
[:(]
dbgrid实现麻烦了。我以前是用StringGrid来实现这个功能的。
 
问一下hyrrx:
能不能让它们互斥显示
 
haha, 五年我做过这个程序,当时真是自豪,因为当时各户都说好用!
用一列表纪录选中状态,这样可以多选,其他就是自定义重画,其实代码并不多,
真实喜欢delphi,短小精悍!
 
很感激hryyx
给说一下你的email地址吗?
 
又增加一个Image2
(为了使程序体积小,可以动态生成两个图象控件)
(插播一段小广告^_^ WIN***破解王 http://keepboom.my.freedim.net)

procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
begin
if (Field.FieldName = 'Bill_Code') then
begin
if (gdSelected in State) then
DBGrid1.Canvas.Draw(Rect.Left,Rect.Top,Image1.Picture.Graphic)
else
DBGrid1.Canvas.Draw(Rect.Left,Rect.Top,Image2.Picture.Graphic);
end;
end;

 
我己经搞定它了
thank you
 
后退
顶部