![]() |
Verständnisproblem: Formulare zur Laufzeit erstellen
Hallo!
Ich habe ein Verständnisproblem wir ich Formulare zur Laufzeit erstelle. Ich habe zur Programmierzeit das Formular Form2 von gebaut. Dieses Formular soll per Klick auf einen Button innerhalb des Hauptformulars erstellt und angezeigt werden. Das habe ich so gemacht:
Delphi-Quellcode:
In Form2 lasse ich beim Event onCreate ein Info-Fenster ausgeben:
procedure TForm1.Button1Click(Sender: TObject);
begin Form2 := TForm2.Create(self); // nach meinem Verständnis wird hier das Formular erstellt = created try Form2.ShowModal; finally Form2.Free; end;
Delphi-Quellcode:
Die Nachricht wird aber angezeigt, sobald ich das Programm starte und nicht, wenn ich das zweite Formular durch TForm2.Create erstelle.
procedure TForm2.FormCreate(Sender: TObject);
begin MessageDlg('Soeben wurde das zweite Formular erstellt.', mtInformation, [mbOK], 0); end; Ganz bestimmt habe ich einen Denkfehler darin - ich würde mich freuen, wenn ihr mir denk erklären könntet. Vielen Dank im Voraus! Mamphil |
Re: Verständnisproblem: Formulare zur Laufzeit erstellen
hallo,
project -> Optionen .... sollte helfen raik |
Re: Verständnisproblem: Formulare zur Laufzeit erstellen
Du müsstest die Form2 aus der auto-instanzierung nehmen. Irgendwo in der projekt-optionen is ne liste.
|
Re: Verständnisproblem: Formulare zur Laufzeit erstellen
kannst du mal den code des projekts zeigen?
das dingen mit Application.CreateForm und so... wie hast du denn die form erstellt? also in den code gekriegt? hast du per hand da oben Form2: TForm; eingetippt oder haste in der ide gesagt "form hinzufügen"? |
Re: Verständnisproblem: Formulare zur Laufzeit erstellen
Hallo!
Danke für eure Antworten! 1.) Ich habe alle Formulare über die IDE erzeugt und entsprechend auch "Formular hinzufügen" verwendet. Anschließend habe ich die neue Unit manuell ins Uses ... im Implementation-Abschnitt eingetragen. "Application.CreateForm und so..." habe ich gar nicht verwendet. 2.) Der Tipp "Projekt" :arrow: "Optionen" :arrow: Formular aus "Automatisch erzeugen" entfernen hat den gewünschten Effekt gebracht. Vielen Dank allen Helfern! :mrgreen: Mamphil |
Re: Verständnisproblem: Formulare zur Laufzeit erstellen
jo, trotzdem nochmal...
wenn dus über die ide machst, fügt er
Delphi-Quellcode:
das CreateForm ein...das kannst/musst du dann per hand oder per Pojekt / Optionen entfernen...
program Project1;
uses Forms, Unit1 in 'Unit1.pas' {Form1}, Unit2 in 'Unit2.pas' {Form2}; {$R *.res} begin Application.Initialize; Application.CreateForm(TForm1, Form1); //Genau hier Application.Run; end. |
Re: Verständnisproblem: Formulare zur Laufzeit erstellen
Hi!
Nochmal: Danke für die vielen Hinweise :D Zitat:
Und für alle, die sich (genau wie ich) wundern, wie man zum "Program ..."-Teil kommt: Über das Symbol in der zweiten Icon-Zeile ganz links mit den zwei gelben Blättern kann man die Units auswählen (Delphi 7). Das habe ich bisher immer über "Datei laden" gemacht :oops: Schön, wie leicht man sich das doch alles machen kann :) Mamphil |
Re: Verständnisproblem: Formulare zur Laufzeit erstellen
Moin!
... Oder Projektverwaltung (Ansicht->Projektverwaltung oder STRG-ALT-F11) und dort auf der EXE einen Rechtsklick->Quelltext anzeigen. MfG Muetze1 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz