大家帮忙分析一下,为什么在子类窗口实例中无法根据父类窗口中代码找到子类窗口中自动产生的控件? ( 积分: 50 )

  • 主题发起人 主题发起人 forlov
  • 开始时间 开始时间
F

forlov

Unregistered / Unconfirmed
GUEST, unregistred user!
如:
A窗体与B窗体是继承关系, B继承A。
A窗体的单元文件中有如下代码
Procedure IndividualDesign; Dynamic;

Begin
IndividualDesign;
for i:=0 to Self.ComponentCount-1 do
If Self.Components is TDataSource Then
(Self.Components as TDataSource).DataSet.AfterInsert:=AfterInsert;
end
这用来对数据集加挂一个新增后事件,用于处理字段的默认值。

B窗体单元文件中就有如下代码用来自动产生相应控件。
Procedure IndividualDesign; Overload; //声明
Procedure IndividualDesign;
var DetailDS:TDataSource;DetailQry:TMSQuery;
begin
DetailDS:=TDataSource.Create(Self);
DetailQry:=TMSQuery.Create(Self);
end

根据继承关系, 子类窗体在执行“产生控件”的代码后, 在父类窗体的代码才会执行“加挂事件”的代码。 但是这样的结果是,子类窗体的实例没加挂上事件。
这是什么原因, 大家帮忙分析分析。
 
1、Procedure IndividualDesign; Overload; //声明
overload ? override ? 好象应该用override吧

2、
DetailDS:=TDataSource.Create(Self);
(Self.Components as TDataSource).DataSet.AfterInsert:=AfterInsert;
DetailDS Create后 DetailDS.DataSet应该是nil吧
要给DetailDS.DataSet.AfterInset赋值应该会报错raise
 
的确用override, 是我搞错了!
唉,搞了这么多年的Delphi还犯这么低级的错误!
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部