这种想法是可以实现的,但是比较麻烦。我们一步一步来
1.你控件中的ddqry你准备给用户公开那些属性和事件?
2.ddqry是否可以和它可见范围内的TADOQuery对象相关联。换句话说你是否要讲ddqry作为
一个属性公布
...
public
...
property ddqry: TADOQuery read GetXXXX write SetXXX;
...
如果向以上方式公布你会发现你在Object Inspector的Events也无法发现TADOQuery的相关
事件。用户无从下手编写包括OnBeforePost在内的所有有关TADOQuery的事件。如果是这样
的话你可以为空间声明一个OnBeforePost属性,并写出其read和write函数。在write函数中
包含以下代码就可以了。框架如下:
uses
....
interface
type
TYourComponent = class (TBaseClass);
private
FADOQuery: TADOQuery;
FBeforePost: TDataSetNotfiyEvent;
//...
//Other Fields
procedure SetBeforePost(Value: TDataSetNotifyEvent);
procedure ddqryBeforePost(DataSet; TDataSet); //ddqry's OnBeforePost
protected
//..
public
constructor create(AOwner: TComponent); override;
property ddqry: TADOQuery read FADOQuery write FADOQuery;
property OnBeforePost: TDataSetNotifyEvent read FBeforePost write SetBeforePost;
//...
end;
implementation
construcor TYourComponent.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FAODQuery.OnBeforePost := ddqryBeforePost;
//... Other code
end;
procedure TYourComponent.SetBeforePost(Value: TDataSetNotifyEvent);
begin
FBeforePost := value;
end;
procedure TYourComponent.TYourComponent(DataSet: TDataSet);
begin
if Assigned(FBeforePost) then
FBeofrePost(DataSet);
//...
//Your code
//你可以将你代码位置放在前面
end;
大致的代码就是这样,详细的代码自己添吧,希望对你有所帮助.