E
echoljb
Unregistered / Unconfirmed
GUEST, unregistred user!
(新手,只剩下5分了,55~~)
Tpye
TMainForm = Class(TForm)
end;
而MainForm是TMainForm的一个实例,则TForm(MainForm)是什么意思?返回的对象是和原来
的MainForm有什么不同的地方?在看VCL源码是经常出现这样的代码,不明白,如:
Procedure TApplication.CreateForm(InstanceClass: TComponentClass
Var Reference);
Var
Instance: TComponent;
Begin
Instance := TComponent(InstanceClass.NewInstance);//为什么要用TComponent?InstanceClass.NewInstance
//返回的不就是TComponent对象吗?
TComponent(Reference) := Instance
//TComponent(Ref)对Ref有什么影响?
Try
Instance.Create(Self)
//Instance已经通过NewInstance方法实例化了,什么还要
//Create(self)?
Except
TComponent(Reference) := Nil;
Raise;
End;
If (FMainForm = Nil) And (Instance Is TForm) Then
Begin
TForm(Instance).HandleNeeded;
FMainForm := TForm(Instance)
//FMainForm是继承自TForm的类的一个实例,这个
//语句执行后FMainForm和一般的Form对象还要分别吗?
End;
End;
Tpye
TMainForm = Class(TForm)
end;
而MainForm是TMainForm的一个实例,则TForm(MainForm)是什么意思?返回的对象是和原来
的MainForm有什么不同的地方?在看VCL源码是经常出现这样的代码,不明白,如:
Procedure TApplication.CreateForm(InstanceClass: TComponentClass
Var Reference);
Var
Instance: TComponent;
Begin
Instance := TComponent(InstanceClass.NewInstance);//为什么要用TComponent?InstanceClass.NewInstance
//返回的不就是TComponent对象吗?
TComponent(Reference) := Instance
//TComponent(Ref)对Ref有什么影响?
Try
Instance.Create(Self)
//Instance已经通过NewInstance方法实例化了,什么还要
//Create(self)?
Except
TComponent(Reference) := Nil;
Raise;
End;
If (FMainForm = Nil) And (Instance Is TForm) Then
Begin
TForm(Instance).HandleNeeded;
FMainForm := TForm(Instance)
//FMainForm是继承自TForm的类的一个实例,这个
//语句执行后FMainForm和一般的Form对象还要分别吗?
End;
End;