如何在DBgrid里做出DBcheckbox?这一列为bit(50分)

  • 主题发起人 主题发起人 ztaif
  • 开始时间 开始时间
Z

ztaif

Unregistered / Unconfirmed
GUEST, unregistred user!
如何在DBgrid里做出DBcheckbox?这一列为bit
 
老兄可苦哟,dxDbgrid多爽呀!
 
我不想用别人的控件,我怕要注册
 
这些是不用注册的
 
不注册的好,那有得下
 
dxDbgrid,是什么样的呀,在哪下?呵呵。
 
我一定不能用第三方控件,请各位帮忙,没事的不要乱讲
 
呵呵,自力更生、丰衣足食。精神可佳呀!
如果要写一个自己OS、自己的开发平台的话,别忘了叫我
 
什么意思,自己写OS也不是什么不得了的事,
用第三方控件,你愿意天天提心自己的产品要给别人注册费吗?
 
DxDBGrid系统的控件是有源码的,所以不用担心注册的问题,
虽然它是商业控件,可是美国佬哪能查到你这来
dxDBGrid在
www.51delphi.com
的DevExpress Quantum
 
不要三方控件!!!
用两幅图替换着画到DBGRID中就可以了
不复杂,,,
 
procedure TForm1.DBGridDrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
begin
if Field is TBooleanField then begin
DBGrid.Canvas.FillRect(Rect);
if TBooleanField(Field).AsBoolean then
DBGrid.Canvas.BrushCopy(Classes.Rect((Rect.Left + Rect.Right - FBMTrue.Width) div 2,
(Rect.Top + Rect.Bottom - FBMTrue.Height) div 2,
(Rect.Left + Rect.Right + FBMTrue.Width) div 2,
(Rect.Top + Rect.Bottom + FBMTrue.Height) div 2),
FBMTrue, Classes.Rect(0, 0, FBMTrue.Width, FBMTrue.Height),
FBMTrue.TransparentColor)
else
DBGrid.Canvas.BrushCopy(Classes.Rect((Rect.Left + Rect.Right - FBMFalse.Width) div 2,
(Rect.Top + Rect.Bottom - FBMFalse.Height) div 2,
(Rect.Left + Rect.Right + FBMFalse.Width) div 2,
(Rect.Top + Rect.Bottom + FBMFalse.Height) div 2),
FBMFalse, Classes.Rect(0, 0, FBMFalse.Width, FBMFalse.Height),
FBMFalse.TransparentColor)
end;
end;
 
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
begin
if (gdFocused in State) then
if (Field.FieldName = DBCheckBox1.DataField) then
begin
DBCheckBox1.Left := Rect.Left + DBGrid1.Left;
DBCheckBox1.Top := Rect.Top + DBGrid1.top;
DBCheckBox1.Width := Rect.Right - Rect.Left;
DBCheckBox1.Height := Rect.Bottom - Rect.Top;
DBCheckBox1.Visible := True;
end
end;
 
是的就是用画图的方式,我做出来了谢谢大家。
 
多人接受答案了。
 
后退
顶部