Formular in Formular öffnen

Ceza

Grünschnabel
Hallo Leute

ist zwar ne echt einfache Frage, aber irgendwie find ich nirgends eine Antwort dazu.
Also folgendes Problem. Ich öffne eine Form und zwar so

Code:
var frm : TForm2;
begin
    frm := Tform2.Create(self);
    frm.Parent := Panel1;
    skindata1.AddNestForm(self,frm);
    frm.Top := (Panel1.Height - frm.Height) div 2;
    frm.Left := (Panel1.Width - frm.Width) div 2;
    frm.Visible := True;
    frm.Edit1.SetFocus;
end;

Problem ist jetzt, wenn sich das Fenster in meiner Hauptform öffnet, ist sie zwar innerhalb der Hauptform, aber nicht aktivierbar.

Wenn ich das frm.Parent := Panel1; rausnehme, ist das Fenster zwar aktivierbar aber nicht mehr innerhalb der Hauptform. Es soll sich aber nur innerhalb von der Hauptform bewegen, aber dennoch aktivierbar sein. Weiss wer wie das geht?
 
Hallo,
habe folgendes ausprobiert - funktioniert:
Code:
    frm := Tform.Create(self);
    frm.Width := Panel1.Width div 2;
    frm.Height := Panel1.Height div 2;
    frm.Parent := Panel1;
    frm.Top := (Panel1.Height - frm.Height) div 2;
    frm.Left := (Panel1.Width - frm.Width) div 2;
    frm.Visible := True;
    ed := TEdit.Create(frm);
    ed.Parent := frm;
    ed.SetFocus;
 
hi!
ich würde eure fragestellung ein wenig erweitern wollen:

selber sachverhalt: eine form_2 soll in einer form_! in einem panel geöffnet werden.
jetzt liegt aber die form_2 in einer DLL.
bisher funktioniert das ganze nicht, da die Parent eigenschaft dhaingehend mitten ins nirvana zeigt - offenbar teilen sich DLL und aufrufendes fenster nicht die gleichekomponentenbibliothek!?
weiß jemand eine lösung dazu?
 
Hallo,
habe jetzt dazu nichts getestet, aber folgende Möglichkeiten fallen mir dazu ein:
1. den Constructor der Form2 überschreiben, sodass dieser die Übergabe von Form1 als Parameter verlangt und dann wie in meinem Beispiel weiter.
2. in Form2 nach Form1 suchen (FindWindow oder so ähnlich) und dann Form1.Parent zuweisen.
3. mittels Botschaften die Daten austauschen.
 
Zurück