Einzelnen Beitrag anzeigen

Hoshy

Registriert seit: 27. Apr 2006
32 Beiträge
 
Delphi 7 Architect
 
#4

Re: MainForm zur Laufzeit wechseln?

  Alt 27. Nov 2006, 13:40
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
  Mit Zitat antworten Zitat