Ausgangslage:
TMainForm = Bisheriges Hauptformular
TNewForm = Künftiges Formular
In den Projektoptionen muss TNewForm so konfiguriert sein, dass es
nicht automatisch erzeugt wird.
(1) Neues Form erzeugen:
Z. B. über einen Button auf TMainForm:
Delphi-Quellcode:
procedure TMainForm.btnCreateNewFormClick(Sender: TObject);
begin
With TNewForm.Create(application) do Init(Self);
end;
Hier wird eine neue Instanz von TNewForm erzeugt, als Owner "Application" eingetragen und anschliessend die in TNewForm auscodierte Methode "Init" aufgerufen. Diese bekommt als Parameter eine Referez auf TMainForm geliefert, damit TNewForm anschliessend TMainForm zerstören kann.
(2) MainForm zerstören, z. B. über einen Button auf TNewForm.
Hier mal ein komplettes (rudimentäres) TNewForm als Beispiel:
Delphi-Quellcode:
unit UFrmNewForm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TNewForm =
class(TForm)
btnKillMainForm: TButton;
procedure btnKillMainFormClick(Sender: TObject);
private
fcaller: TForm;
public
procedure Init(aCaller: TForm);
end;
var
NewForm: TNewForm;
implementation
{$R *.dfm}
procedure TNewForm.Init(aCaller: TForm);
begin
fcaller := aCaller;
Show;
end;
procedure TNewForm.btnKillMainFormClick(Sender: TObject);
begin
fcaller.Free;
end;
end.
Funktioniert