各位大大哥,有關adoquery事件繼承的寫法?(50分)

  • 主题发起人 主题发起人 wen_one
  • 开始时间 开始时间
W

wen_one

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大哥,小弟在寫一控件時,有一public變量:DDqry:Tadoquery;
小弟想在此控件對該變量(DDqry)的beforpost事件進行編寫,不知該如何下手
請各位幫幫忙。
 
自己写一个Procedure

DDqry.Onbeforpost := ProcedureName

就可以了

注意参数要匹配
 
beforpost: TDataSetNotifyEvent;
TDataSetNotifyEvent = procedure(DataSet: TDataSet) of object;
继承DoBeforePost这个
 
兩位大哥,小弟看得不明,可否詳講得細點呢?期待你們的幫助。
 
DDqry:Tadoquery;不行
DDqry不能继承Tadoquery
你写一个
Type TDDqry = class(Tadoquery)
private
procedure BeforePost(DataSet: TDataSet);
public
end;
TDDqry.BeforePost(DataSet: TDataSet);
begin
//写代吗
end;

DDqry: TDDqry;

//可以了吗?
我刚来,分比较紧缺
 
老人家,很感謝你的幫助,可你好像誤解了我的意思。
我是想對我做的一個控件裡的一個屬性(adoqry:tadoquery)的beforepost事件進行編寫
,並能繼隨在delphi的環境下編程人員對該屬性對應控件的onbeforpost事件;還需麻煩
你,如果解決,分數即發。
 
我的方法可以实现的
一個控件裡的一個屬性[red](adoqry:tadoquery) 变为 (adoqry:TDDqry)[/red]的beforepost事件進行編寫

你留下你的qq和mail
 
wen_one@163.com
 
以上兩個大哥的意思,我卻無法解決,
我的意思是在我做的一個控件裡,有一屬性是ddqry(它是tadoquery類型),然後想對該屬
性的beforepost事件進行內部響應,並使得它能繼承用戶的對該事件的有關代碼。謝謝。
 
这种想法是可以实现的,但是比较麻烦。我们一步一步来
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;

大致的代码就是这样,详细的代码自己添吧,希望对你有所帮助.



 
后退
顶部