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