Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Owner einer Formulars nachträglich ändern (https://www.delphipraxis.net/152974-owner-einer-formulars-nachtraeglich-aendern.html)

idefix2 15. Jul 2010 11:01

Owner einer Formulars nachträglich ändern
 
Hallo, Ich würde gerne wissen, ob das irgendwie geht.
Ein Formular wird erzeugt, Owner ist ein zunächst anderes Formular - d.h.wenn der Owner geschlossen und gelöscht wird, wird auch dieses formular gelöscht. Ich möchte jetzt die Möglichkeit haben, dieses Formular vom Owner abzukoppeln, d.h. dann soll es bestehen bleiben, wenn das erste Formular gelöscht wird.
Der Ansatz
Delphi-Quellcode:
Owner := Application
funktioniert nicht, weil Owner eine Read-only property ist.

himitsu 15. Jul 2010 11:10

AW: Owner einer Formulars nachträglich ändern
 
Das Einfachste wäre hier, erst garkeinen Owner anzugeben.
Delphi-Quellcode:
 ... := TMyForm.Create(nil)
.

Delphi-Quellcode:
// Owner entfernen
MyForm.Owner.RemoveComponent(MyForm);

// Owner hinzufügen
NewOwner.InsertComponent(MyForm);
Delphi-Quellcode:
procedure ChangeOwner(Component, NewOwner: TComponent);
begin
  if Assigned(Component.Owner) then
    Component.Owner.RemoveComponent(Component);
  if Assigned(NewOwner) then
    NewOwner.InsertComponent(Component);
end;

ChangeOwner(MyForm, NewOwner)

idefix2 15. Jul 2010 11:20

AW: Owner einer Formulars nachträglich ändern
 
Danke

Zitat:

Das Einfachste wäre hier, erst garkeinen Owner anzugeben.
Das Formular soll ja erst einmal als abhängiges Formular erzeugt werden. Nur unter bestimmten Bedingungen wird es später dann abgekoppelt.

DeddyH 15. Jul 2010 11:29

AW: Owner einer Formulars nachträglich ändern
 
Die Codebeispiele in himis Post hast Du Dir aber angeschaut?

idefix2 15. Jul 2010 12:06

AW: Owner einer Formulars nachträglich ändern
 
Ja, das "danke" allein war vielleicht zu kurz. So werde ich es machen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:55 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz