Einzelnen Beitrag anzeigen

Rollo62
Online

Registriert seit: 15. Mär 2007
4.093 Beiträge
 
Delphi 12 Athens
 
#21

AW: Formular im Thread neu erzeugen

  Alt 25. Jul 2015, 08:17
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
  Mit Zitat antworten Zitat