Vcl.Forms.TCustomForm.CreateNew
Delphi
constructor CreateNew(AOwner: TComponent; Dummy: Integer = 0); virtual;
Eigenschaften
Typ | Sichtbarkeit | Quelle | Unit | Übergeordnet |
---|---|---|---|---|
constructor | public | Vcl.Forms.pas | Vcl.Forms | TCustomForm |
Beschreibung
Erzeugt und initialisiert ein neues Formular.
Verwenden Sie CreateNew anstelle von Create, um ein Formular ohne die verknüpfte .DFM-Datei zu dessen Initialisierung zu erstellen. Verwenden Sie CreateNew immer dann, wenn der Nachkomme von TCustomForm kein TForm-Objekt oder kein Nachkomme von TForm ist.
CreateNew umgeht das Einlesen der zuvor zugewiesenen .DFM-Datei. Enthält das Formular visuelle Komponenten, müssen Sie deshalb eine externe .DFM-Datei einlesen, um die visuellen Komponenten an ihre Klassen zu binden. Verfügt das neue Formular über eine externe .DFM-Datei, rufen Sie nach CreateNew die Methode InitInheritedComponent auf. Wenn Sie die .DFM-Datei für die neue Formularinstanz erstellen müssen, schließen Sie den Aufruf von CreateNew in WriteComponentResFile- und ReadComponentResFile-Aufrufe ein. Die folgende Code-Sequenz
- schreibt eine externe .DFM-Datei.
- erstellt ein neues Formular, das nicht mit einer .DFM-Ressourcendatei verknüpft ist.
- liest die externe .DFM-Datei ein und bindet sie an das neue Formular.
WriteComponentResFile('Temp.dfm', Form1); ... Form2 := TForm.CreateNew(Application); ReadComponentResFile('Temp.dfm', Form2);
Warnung: Die Verwendung von CreateNew anstelle von Create kann zu unvorhersehbaren Ergebnissen führen, da die meisten Formulare unter der Voraussetzung geschrieben werden, dass ihre Steuerelemente in der .DFM-Datei erzeugt werden.
Die Methode CreateNew ruft Create und InitializeNewForm auf. Dabei wird das Ereignis OnCreate bei der Erstellung nicht aufgerufen.
Das erste Argument, AOwner, gibt den Eigentümer des Formulars an (normalerweise ist der Eigentümer die Anwendung oder ein anderes Formular). Das zweite Argument, Dummy, hat die Standardeinstellung 0 und wird von diesem Konstruktor nicht verwendet. Das System übergibt standardmäßig 0, wenn dieser Konstruktor nur das erste Argument, AOwner, übergibt.