窗体1
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;type
Tmyform = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
myform: Tmyform;implementation{$R *.dfm}procedure Tmyform.FormCreate(Sender: TObject);
begin
Self.caption:='123';
end;end.窗体2
unit Unit2;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,Unit1;type
TForm2 = class(Tmyform)
private
{ Private declarations }
public
{ Public declarations }
end;var
Form2: TForm2;implementation{$R *.dfm}end.
程序很简单
procedure Tmyform.FormCreate(Sender: TObject);
begin
Self.caption:='123';
end;是窗体1的初始化事件
为什么窗体2也运行了初始化事件呢?
也就是我运行程序的时候窗体2的caption属性也成了'123'那个应该是窗体1的初始化事件啊 这个我想不明白啊
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;type
Tmyform = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
myform: Tmyform;implementation{$R *.dfm}procedure Tmyform.FormCreate(Sender: TObject);
begin
Self.caption:='123';
end;end.窗体2
unit Unit2;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,Unit1;type
TForm2 = class(Tmyform)
private
{ Private declarations }
public
{ Public declarations }
end;var
Form2: TForm2;implementation{$R *.dfm}end.
程序很简单
procedure Tmyform.FormCreate(Sender: TObject);
begin
Self.caption:='123';
end;是窗体1的初始化事件
为什么窗体2也运行了初始化事件呢?
也就是我运行程序的时候窗体2的caption属性也成了'123'那个应该是窗体1的初始化事件啊 这个我想不明白啊
因为你继承的是基类窗体,所以子类窗体创建后,Self指向的是子类窗体
因为你的form2的基类是myformTForm2 = class(Tmyform)所以当Form2创建的时候,首先创建他的基类,就是myform的oncreate事件就执行了,form2当然也就变了
那myform在弄几个其他的事件 比如说单击 双击 那么form2在单击双击的时候也会跟着执行?
因为你继承的是基类窗体,所以子类窗体创建后,Self指向的是子类窗体。这个是必然的。
TForm2 = class(Tmyform)