Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Mehrere Instanzen einer Form anzeigen (https://www.delphipraxis.net/138845-mehrere-instanzen-einer-form-anzeigen.html)

Larsi 18. Aug 2009 13:44


Mehrere Instanzen einer Form anzeigen
 
Hi,
ich habe ein Formular mit ein paar Buttons drauf. Dies heißt Form2. Wenn ich es jetzt anzeigen will, dann schreibe ich:

Delphi-Quellcode:
Form2.Show;
Doch wie schaffe ich, dass jedes mal beim Aufrufen eine neue Instanz dieser Form angezeigt wird. Die Buttons sollen jedoch nicht ihre Funktion verlieren auf der Form!

MFG Lars Wiltfang

mkinzler 18. Aug 2009 13:46

Re: Mehrere Instanzen einer Form anzeigen
 
Dann musst du dynamisch eine neue Instanz erzeugen

Delphi-Quellcode:
Form := TForm2.Create( Self);
Form.Show;

DeddyH 18. Aug 2009 13:46

Re: Mehrere Instanzen einer Form anzeigen
 
Eine Form ist auch nur ein TObject. Wie legst Du denn sonst Objektinstanzen an?

[edit] Markus muss mal wieder vorsagen :tongue: [/edit]

Larsi 18. Aug 2009 14:42

Re: Mehrere Instanzen einer Form anzeigen
 
Hi,
die Form wird zwar geöffnet aber wenn ich folgenden Code schreibe:
Delphi-Quellcode:
Form := TForm2.Create( Self);
Form2.label1.caption := 'Nein';
Form.Show;
Dann wird in das Label auf Form2 nichts eingetragen!

Bei diesem Code kommt ein Fehler, das Label1 nicht gefunden wurde:

Delphi-Quellcode:
Form := TForm2.Create( Self);
Form.label1.caption := 'Nein';
Form.Show;
Wie geht das?

mkinzler 18. Aug 2009 14:43

Re: Mehrere Instanzen einer Form anzeigen
 
Form muss vom Typ TForm2 sein oder du Castest es entsprechend:
Delphi-Quellcode:
(Form as TForm2).label1.caption := 'Nein';

Pfoto 18. Aug 2009 16:07

Re: Mehrere Instanzen einer Form anzeigen
 
Hallo,

wenn du mehrere Fenster, also mehrere Instanzen davon, öffnen willst,
mach es doch so:

Delphi-Quellcode:
with TForm2.Create(nil) do
  try
    label1.caption := 'Nein';
    // Edit: @DeddyH, richtig, Show muss natürlich mit Showmodal ersetzt werden
    // Show;
    ShowModal;  
  finally
    Free;
  end;
Dann noch das automatische Erstellen der Form unterbinden
Siehe Optionen > Formulare

Gruß
Jürgen

mkinzler 18. Aug 2009 16:09

Re: Mehrere Instanzen einer Form anzeigen
 
With ist aber gefährlich

DeddyH 18. Aug 2009 16:12

Re: Mehrere Instanzen einer Form anzeigen
 
Und muss es nicht ShowModal sein, damit das Form nicht nur kurz aufblitzt und dann gleich wieder verschwindet?

Mithrandir 18. Aug 2009 16:22

Re: Mehrere Instanzen einer Form anzeigen
 
Zitat:

Zitat von mkinzler
With ist aber gefährlich

Warum?

mkinzler 18. Aug 2009 17:54

Re: Mehrere Instanzen einer Form anzeigen
 
Weil es unter Umständen Doppeldeutigekeiten schafft, wenn Eigenschaften, des mit with angesprochenen Objektes mit Eigenschaften der rufenden Klasse (Self) überlappen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:57 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