为了界面上的需要,程序中每一个DBGrid都要在OnDrawColumnCell事件中写同样的一段代码。有没有什么办法可以制作一个新的DBGrid,会自动调用OnDrawColumnCell事件,实现自绘。请高手给出代码,谢谢
解决方案 »
- 用存储过程返回了一个结果集有一ID字段,再查询一个表要求其字段ID值都在存储过程返回的ID值内
- Delphi6安装出现这个错误提示,大家帮忙看看!
- 时间段转换日期问题(在线QQ:188567235)
- 窗口的问题
- Delphi中如何在后台新建一个对象,并且给对象变量赋值呢,例如我要新建一个数据源对象objDS:DataSource
- 祝各位新年快乐,大家进来领红包~
- DBLookupComboBox的下拉显示问题???
- 中级程序员考试安徽报名结束了?
- 500块请人编程!!!做一个简单的很简单的类似于cad的软件,
- 送分的弱智sql问题,请大家帮帮忙
- 请问定义指针时应注意那方面的事件?
- 在XP中用GetwindowsText怎么取不到EDIT中的字符??
or 你用一个Frame,上面放一个DBGrid,并有你的事件
要在其它地方使用,加入此Frame
这个 方法有点不妥吧!这样不能把dbgrid当作控件来用而是当成现成的窗口来载入,多数情况下不能达到目的。2。belllab(bell) ( ) :你可以自己写一个控件,继承于DBGrid,并有你的事件
or 你用一个Frame,上面放一个DBGrid,并有你的事件
要在其它地方使用,加入此Frame
这个方法很好呀,以前我也用过,其实不见得非要用frame,用其他可以装载dbgrid控件的容器控件都可以。可以在菜单中的insert中的选择框中选择添加控件,即可按照这种方法来作,自己动手多尝试一下就好了!!!!!!!!!!
TMyGrid = class(TCustomDBGrid)
protected
property OnDrawColumnCell;
procedure DrawColumnCell(const Rect: TRect; DataCol: Integer;Column: TColumn; State: TGridDrawState); override;
end;TDBGrid继承于TCustomDBGrid,只是将一些被protected的属性published了,所以你的这个控件直接继承于TCustomDBGrid,要实现自动调用OnDrawColumnCell事件,只需要覆盖基类的DrawColumnCell事件,在该事件中写入你的代码就行了。
procedure DrawColumnCell(const Rect: TRect; DataCol: Integer;
Column: TColumn; State: TGridDrawState);procedure TMYDBGrid.DrawColumnCell(const Rect: TRect; DataCol: Integer;
Column: TColumn; State: TGridDrawState);
begin
//写上你OnDrawColumnCell事件中写的一段代码
end;
将你已经写好代码的dbgrid控件(在设计窗体中的)用鼠标选中,然后点component-->Create component template... 然后填写一些信息告诉delphi将新控件添加到何处就行了。不需要再写新的控件,我想这对新手来说应该是比较安全的方法吧。