Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#18

AW: 2. Form schliessen Variable=Nil

  Alt 23. Aug 2011, 03:02
Hallo,

@Sir Rufo: Soweit ich das Verstanden habe wollte er kein Modal-Form haben.
Du hast recht ... es war modal und jetzt nicht mehr ...
Ich würde es einfach so machen:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  if Assigned(TestForm) then
  begin
    ShowMessage('Schon da');
    TestForm.Show;
  end else
  begin
    TestForm:=TForm2.Create(Self);
  end;
end;
öhhm ... würde ich so machen
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  if not Assigned( Form2 ) then
    begin
      Form2 := TForm2.Create( Self );
    end
  else
    begin
      ShowMessage( 'Schon da' );
    end;
  Form2.Show;
end;
Delphi-Quellcode:
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree;
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
  Caption:= 'Form1 - Test';
  Show;
end;

procedure TForm2.FormDestroy(Sender: TObject);
begin
  if Assigned(TestForm) then
  begin
    TestForm:=NIL;
  end;
end;

end.
Bis bald Chemiker
Das kann aber auch ins Auge gehen, wenn es 2 Instanzen von TForm2 gibt. Darum besser so
Delphi-Quellcode:
procedure TForm2.FormDestroy(Sender: TObject);
begin
  // Nur wenn die aktuelle Instanz mit der in der globalen Variablen "Form2" gespeicherten übereinstimmt
  if Form2 = Self then
  begin
    Form2 := NIL;
  end;
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat