在代码中使用Create创建了一个MDI子窗体,可是子窗体里不知用什么窗体名?(30分)

  • 主题发起人 主题发起人 纸老虎
  • 开始时间 开始时间

纸老虎

Unregistered / Unconfirmed
GUEST, unregistred user!
我使用下列代码创建了子窗体。var
frmData: TfrmData;
begin
frmData:=TfrmData.Create(self);
end;
但在子窗体frmData中自定义一个过程时(代码如下),使用"self","frmData"都不行,
怎么回事啊?
procedure InitForm();
begin
self.Top :=0;
self.Left :=0;
end;

 
Application.CreateForm(TfrmData, frmData);

frmData := TfrmData.Create(Application);

frmData := TfrmData.Create(nil);

 
不行!使用名称,编译时能通过,但运行时要出错。
 
出什么错?
 
在类的实体未创建之前访问类的元素会跳出读零地址错误!
 
procedure tfrmdata.InitForm();
begin
self.Top :=0;
self.Left :=0;
end;
 
你查查看Iniform这个过程什么时候执行,如果在Create之前执行自然会出错的
 
你的MDI窗体为什么不用IDE先生成好呢?
在用Create方法,动态创建,显示?
 
函数 InitForm 应该在该单元的 private 段声明先 之后才可以用该单元的
self。
…………
private
procedure InitForm();
…………
{$R *.DFM}
procedure tfrmdata.InitForm();
begin
self.Top :=0;
self.Left :=0;
end;
 
后退
顶部