在主窗体中初始化对象,只能在窗体创建事件中初始化吗?
TMyForm = class(TForm)这是工程主窗体
MyClass : TMyClass;自己定义的类,不是VCL组件类。var
MyForm: TMyForm;先是想在initialization中MyForm.MyClass := TMyClass.Create;结果访问出错然后想在TMyForm的构造函数中创建MyClass,结果自己做的构造函数,Application压根不理最后想只能在TMyForm.FormCreate(Sender: TObject);中创建MyClass了不知道是不是这样?另,能不能在dfm中写入MyClass?让Delphi自动创建它?
TMyForm = class(TForm)这是工程主窗体
MyClass : TMyClass;自己定义的类,不是VCL组件类。var
MyForm: TMyForm;先是想在initialization中MyForm.MyClass := TMyClass.Create;结果访问出错然后想在TMyForm的构造函数中创建MyClass,结果自己做的构造函数,Application压根不理最后想只能在TMyForm.FormCreate(Sender: TObject);中创建MyClass了不知道是不是这样?另,能不能在dfm中写入MyClass?让Delphi自动创建它?
这应该是有问题的,不可能不理的
如:
TMyForm = class(TForm)
private
MyClass : TMyClass;自己定义的类,不是VCL组件类。
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
end;...constructor TMyForm.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
MyClass := TMyClass.Create;
end;destructor TMyForm.Destroy;
begin
MyClass.Free;
inherited;
end;
因为form的create事件发生的太早,有时候 那些对象、设置的生成条件还未具备
覆盖FORM的构造函数,或者在OnCreate中进行初始化。
TForm2 = class(TForm)
T1: TButton;
private
{ Private declarations }
MyClass:TStrings;
public
{ Public declarations }
constructor Create(AOwner:TComponent);override;
destructor Destroy;override;
end;var
Form2: TForm2;implementation{$R *.dfm}{ TForm2 }constructor TForm2.Create(AOwner: TComponent);
begin
inherited;
MyClass:=TStringList.Create;end;destructor TForm2.Destroy;
begin
if Assigned(MyClass) then
FreeAndNil(MyClass);
inherited;
end;