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/)
-   -   Delphi Unabhängige neue TForm erzeugen (https://www.delphipraxis.net/88697-unabhaengige-neue-tform-erzeugen.html)

berens 19. Mär 2007 16:29


Unabhängige neue TForm erzeugen
 
Hi!

Ich habe eine TForm (Form2) die zu Programmstart in einem anderem Form (Form1) liegt. Bei Bedarf soll diese jedoch auch so verwendet werden können, dass ich Form2 als eigenständiges Fenster (auch in Taskleiste sichtbar) habe und auch noch sehen kann, wenn ich Form1 minimiere (normalerweise werden alle "Client"-Forms mit minimiert...).

Code:
  FContainerForm := TForm.CreateNew(NIL, 0);
  with FContainerForm do begin
    Left := 0;
    Top := 0;
    Parent := Form1;
    OnKeyDown := FormKeyDown;
    DoubleBuffered := True;
    BorderStyle := bsNone;
    KeyPreview := True;
    if not isDeveloperMode then begin
      FormStyle := fsStayOnTop;
    end;
    Show;
    Align := alClient;
  end;

MacGuyver 19. Mär 2007 17:03

Re: Unabhängige neue TForm erzeugen
 
Moin auch! :hi:

Wenn du beim Create Application übergibt geschiet das doch automatisch, oder?

IngoD7 19. Mär 2007 17:43

Re: Unabhängige neue TForm erzeugen
 
Zitat:

Zitat von berens
Ich habe eine TForm (Form2) die zu Programmstart in einem anderem Form (Form1) liegt. Bei Bedarf soll diese jedoch auch so verwendet werden können, dass ich Form2 als eigenständiges Fenster (auch in Taskleiste sichtbar) habe und auch noch sehen kann, wenn ich Form1 minimiere (normalerweise werden alle "Client"-Forms mit minimiert...).

Unabhängig von der eigentlichen Frage würde ich in jedem Fall die Application (oder meinetwegen das Hauptform Form1) dem Konstruktor als Owner übergeben!

Du kannst dein Form "eigenständig" anzeigen lassen, indem du folgendes machst:
Delphi-Quellcode:
DeinForm.Parent := nil;
DeinForm.ParentWindow := GetDesktopWindow;
Danach verhält es sich aber nicht mehr unbedingt so, wie es sich zuvor verhalten hat. Möglicherweise muss die Eigenschaft ControlStyle auch angepasst werden (z.B. bei TButton nötig, wenn man ihn auf den Desktop legt und weiterhin seine Klicks in der Ursprungsanwendung empfangen möchte). Vielleicht muss auch an anderen Stellen noch eingegriffen werden.

Daher ist diese "Lösung" hier lediglich ein Ansatz.

berens 19. Mär 2007 18:06

Re: Unabhängige neue TForm erzeugen
 
Hat funktioniert, vielen Dank!

Owner wurde angepasst, danke für den Hinweis.

An ParentWindow hatte ich garnet gedacht!
Thx.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:49 Uhr.

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