不理解的代码 ( 积分: 100 )

  • 主题发起人 主题发起人 38152977
  • 开始时间 开始时间
3

38152977

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TApplication.CreateForm(InstanceClass: TComponentClass; var Reference);
var
Instance: TComponent;
begin
Instance := TComponent(InstanceClass.NewInstance);
TComponent(Reference) := Instance;//这句完成后,按理还没有执行框架,Reference是不能执行的。
try
Instance.Create(Self); //这是执行架框,这句按理应该放在前一句前面。我不理解。为什么??????
except
TComponent(Reference) := nil;
raise;
end;
if (FMainForm = nil) and (Instance is TForm) then
begin
TForm(Instance).HandleNeeded;
FMainForm := TForm(Instance);
end;
end;
 
Instance := TComponent(InstanceClass.NewInstance);
是创建对象(与Create的区别在于它只分配对象的存储空间,而不会调用Create中的初始化代码)
Instance.Create(Self);初始化对象。。。
这样做的原因是Instance.Create(Self);有可能初始化失败,原因在于可能会有两个名字相同的Form创建,此时会出现异常
 
后退
顶部