Entwickler-Ecke

Sonstiges (Delphi) - Arbeiten mit mehreren Formularen


leviathan - Sa 11.01.03 20:48
Titel: Arbeiten mit mehreren Formularen
Hallo zusammen,

als Delphi-Anfänger und ehemaliger TP 5.5-Programmier (der noch clearscreen und Ansiscreens im Kopf hat) habe ich noch Probleme mit der Arbeit mit Formularen. Leider haben die meisten Beispielprogramme (Delphi 6) nur ein Hauptformular, taugen also nur wenig als Anschauungshilfe. Daher meine Frage: Was sind gängige Wege, andere Formulare (inkl. Unit natürlich) aufzurufen (also auch darzustellen)? Muss ich die Darstellung des nicht-aktuellen Formulars erst beenden?

Es grüßt,
Levi


Delete - Sa 11.01.03 21:01

Eiunfach ein neues Formular erstellen in der IDE. Delphi fügt dies automatisch zu den automatisch zum Programmstart zu erstellenden Formularen hinzu. Dann kannst du es einfach mit Formular2.Show oder wenn es modal sein soll mit Form2.ShowModal aufrufen. Nicht vergessen noch in Unit1 von Formular1 Unit2 für Formular2 hinzufügen.


Klabautermann - Sa 11.01.03 21:05

Hallo,

wenn du ein neues Formular in Delphi erstellst, dann legt Delphi es so an, das es Beim Programmstart automatisch erzeugt wird, aber unsichtbar ist.

Solche Formulare kannst du dann mit

Quelltext
1:
FormX.Show;                    

sichtbar machen und mit

Quelltext
1:
FormX.Hide                    

wieder verstecken. Wenn dein Programm beendet wird, werden die Formulare wieder Freigegeben.

Das Problem bei dieser Technik ist, das alle Formulare immer im Speicher sind. Daher ist es eleganter, wenn du die Formulare selbst erzeugst und wieder freigiebst.
Dazu musst du sie erst aus der Liste Automatisch Erzeugen unter Projekt->Optionen->Formulare nehmen.
Du erzeugst es dann so von Hand:

Quelltext
1:
2:
3:
4:
5:
6:
VAR
  MyForm : tMyForm;
begin
  MyForm := tMyForm.Create(Self);
  MyFirm.Show;
[...]

und gibst es wie jedes andere Objekt wieder Frei:

Quelltext
1:
MyForm.Free                    


Gruß
Klabautermann


leviathan - Sa 11.01.03 23:51

Vielen Dank für die schnellen und sehr hilfreichen Antworten!