Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Verständnisproblem: Formulare zur Laufzeit erstellen (https://www.delphipraxis.net/40694-verstaendnisproblem-formulare-zur-laufzeit-erstellen.html)

Mamphil 19. Feb 2005 15:22


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:
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;
In Form2 lasse ich beim Event onCreate ein Info-Fenster ausgeben:
Delphi-Quellcode:
procedure TForm2.FormCreate(Sender: TObject);
begin
  MessageDlg('Soeben wurde das zweite Formular erstellt.', mtInformation, [mbOK], 0);
end;
Die Nachricht wird aber angezeigt, sobald ich das Programm starte und nicht, wenn ich das zweite Formular durch TForm2.Create erstelle.

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

kiar 19. Feb 2005 15:24

Re: Verständnisproblem: Formulare zur Laufzeit erstellen
 
hallo,

project -> Optionen .... sollte helfen

raik

maximov 19. Feb 2005 15:25

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.

glkgereon 19. Feb 2005 15:26

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"?

Mamphil 19. Feb 2005 15:32

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

glkgereon 19. Feb 2005 15:36

Re: Verständnisproblem: Formulare zur Laufzeit erstellen
 
jo, trotzdem nochmal...

wenn dus über die ide machst, fügt er

Delphi-Quellcode:
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.
das CreateForm ein...das kannst/musst du dann per hand oder per Pojekt / Optionen entfernen...

Mamphil 19. Feb 2005 15:45

Re: Verständnisproblem: Formulare zur Laufzeit erstellen
 
Hi!

Nochmal: Danke für die vielen Hinweise :D

Zitat:

Zitat von glkgereon
...das kannst/musst du dann per hand oder per Pojekt / Optionen entfernen...

... das wird - wie ich herausgefunden habe - über das entfernen des Formulars aus der Liste "Automatisch erzeugen" von der IDE gemacht...

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

Muetze1 19. Feb 2005 16:47

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