Veröffentlicht 23. Oktober 200321 j Also ich kann ein Formular mit Application.CreateForm(TFormmain, Formmain); oder mit Formmain:=Tformmain.create(self); öffnen. Doch wo liegt da der Unterschied? Was wird wie ausgeführt und verarbeitet? MVG need-some-blood
23. Oktober 200321 j Original geschrieben von need-some-blood Also ich kann ein Formular mit Application.CreateForm(TFormmain, Formmain); oder mit Formmain:=Tformmain.create(self); öffnen. Doch wo liegt da der Unterschied? Was wird wie ausgeführt und verarbeitet? Mit Application.createForm wird als Eigentümer des neuen Formulars das Anwendungsobjekt gesetzt (Application). TFormClass.Create(self) setzt als Eigentümer das Object, das die Methode aufruft (self). Application.createForm = TFormClass.Create(Application) Edit: procedure TApplication.CreateForm(InstanceClass: TComponentClass; var Reference); var Instance: TComponent; begin Instance := TComponent(InstanceClass.NewInstance); TComponent(Reference) := Instance; try [b] Instance.Create(Self);[/b] except TComponent(Reference) := nil; raise; end; [i] if (FMainForm = nil) and (Instance is TForm) then begin TForm(Instance).HandleNeeded; FMainForm := TForm(Instance); end; [/i] end; Der Unterschied ist, dass u.U. das Hauptformular der Anwendung gesetzt wird. Wenn es also nicht das Erste Formular ist, dass erzeugt wird macht es keinen Unterschied. (siehe fetter bzw. kursiver Bereich oben)
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.