Thema: Delphi MDI-Child simulieren

Einzelnen Beitrag anzeigen

meiner einer

Registriert seit: 24. Jul 2007
12 Beiträge
 
Turbo Delphi für Win32
 
#1

MDI-Child simulieren

  Alt 29. Okt 2007, 19:41
Hallo,

ich hab ein Panel1 auf meinem Form1. Ein Form2 soll sich nur innerhalb dieses Panel1 bewegen dürfen. Das funktioniert wie noch ganz gut:

Delphi-Quellcode:
type
  TForm2 = class(TForm)
   public
    procedure CreateParams(var Params: TCreateParams); override;
  end;

...

procedure TForm2.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  with Params do begin
    Style := Style or WS_CHILD;
    WndParent := Form1.Panel1.Handle;
  end;
end;
Im Form1 zeig ich dann mein Form2 wie folgt mit Buttom1-drücken an:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
     Form2.Show;
    Form2.Edit1.SetFocus
end;
UND JETZT MEINE GROSSE FRAGE:
Das ganze geht nur wenn ich Form1 und Form2 unter Format/Optionen beide automatisch erzeugen lasse. Jetzt möchte ich aber Form2 nich automatisch erzeugen lassen, sondern stell es in die Spalte "verfügbare Formulare", möchte es erst zur Laufzeit erzeugen und das geht nicht - der folgende Code erzeugt einen Fehler - Warum???

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
    if Form2 = nil then Form2 := Form2.Create(Self);
    Form2.Show;
    Form2.Edit1.SetFocus
end;
Vielleich weiß jemand Rat?

Ich möchte in einer Komponente, hier z. B. das Panel1 verschiedenste Forms darstellen können und wieder zerstören, gegebenfalls aber wieder aufrufen können. Sie sollen nicht unnötig den Arbeitsspeicher füllen, wärend ein anderes gerade angezeig wird.

Danke
Martin
  Mit Zitat antworten Zitat