Hallo zusammen,
die Antworten finde ich alle richtig und schlüssig.
Ich verstehe auch nicht ganz warum die Form neu geladen werden soll.
Aber wenn es denn sein muss könnte man die Form in ein Panel bauen und per Runtime nachladen oder auswechseln:
Ungefähr so:
Code:
// AForm is newly created externally and then can be embedded to a control, such as a panel or a tabsheet.
procedure Form_EmbedTo(const AForm:TCustomForm; const AParent:TControl);
begin
while AForm.ChildrenCount>0 do
AForm.Children[0].Parent:=AParent;
end;
// Und der Aufruf in Etwa
mxNewForm := TMyNewForm.Create(nil);
Form_EmbedTo(myNewForm, MyTargetPanel);
Das ist zwar für Fmx gedacht, sollte aber auch mit
VCL Laufen.
Damit könnte
- die neue Form im Thread erzeugt werden (warum auch immer)
- die neue Form erzeugt werden
- auf das Panel geworfen werden (das solte recht schnell gehen)
- und danach die alte Form wieder entsorgt werden
So sollte der Wechsel recht schnell gehen.
Rollo