Hallo,
für nichtmodale Forms müssen meiner Meinung eine globale Variabel erzeugt werden, wie soll das sonst funktionieren?
Bis bald Chemiker
Nein, muss nicht ... ist aber bei den meisten Einsatzzwecken schon erforderlich und darum auch als Default so implementiert.
(Zudem die automatische Erstellung des Formulars genau diese Variable benötigt -> s.u. )
Es reicht ja, wenn alle, die darauf zugreifen wollen den Zugriff haben und wenn diese Zugriffe nur innerhalb einer
Unit passieren, dann würde ich keine globale Variable benötigen.
@Sir Rufo,
die 2. Form soll dynamisch erzeugt werden und steht in den Optionen nicht unter automatisch erzeugen. Ist es dann wirklich so, dass dann die Variable Form2 in der unit1 direkt ansprechbar ist und wenn sie nil ist dass dann in unit1 übergibt? Was ist mit mehreren Instanzen von der Form2, wenn diese auch aus anderen Units genutzt wird?
@Chemiker habe das ja auch schon gelöst, siehe
Post 6
Die automatisch angelegte globale Variable "Form2" kann genau nur eine Instanz beinhalten.
Wenn du mehrere Instanzen benötigst, dann musst du dich um die Verwaltung dieser selber kümmern.
Und ja, wird die Instanz von TForm2 nicht automatisch beim Start erzeugt, dann ist Form2 NIL.
Delphi-Quellcode:
program Test;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};
{$R *.res}
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm1, Form1); // <- da passiert die Zuweisung
Application.CreateForm(TForm2, Form2); // <- und da auch
Application.Run;
end.