Delphi-PRAXiS
Seite 1 von 2  1 2      

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/)
-   -   Mehrere Formulare (https://www.delphipraxis.net/211198-mehrere-formulare.html)

RayEn 12. Aug 2022 12:27

Mehrere Formulare
 
Hallo,

ich habe jetzt schon einige Zeit gesucht, aber nichts gefunden, dass mir geholfen hätte:
Ich habe eine Anwendung, in der ich zusätzliche VCL-Formulare habe, die ich bei Bedarf anzeigen lassen möchte. Funktioniert soweit wie erwartet.
Jetzt möchte ich zwei Formulare offen halten und zwischen den beiden (Main + ein anderes) hinundherwechseln. Wenn ich auf das Hauptfenster klicke,
kann ich zwar auf sichtbare Komponenten zugreifen, aber das andere Fenster bleict trotzdem vorne.
Gibt es eine Möglichkeit das andere Formular nach hinten zu schieben und bei Bedarf wieder nach vorne zu holen (ich möchte es nicht schliessen)?

VG
Ray

juergen 12. Aug 2022 12:35

AW: Mehrere Formulare
 
Wie wäre es mit einem Pagecontrol? Für jede Form ein Tabsheet.

RayEn 12. Aug 2022 12:43

AW: Mehrere Formulare
 
Versteh ich jetzt nicht.
Ich möchte keine (zusätzlichen) Tabs, sondern tatsächlich ein zusätzliches Fenster, in dem ich bei Bedarf Sachen anzeigen kann.
Wie gesgt funktioniert soweit auch, aber für manche Anwendungsfälle wäre es schön, wenn man schnell zwischen den beiden Fenstern hin-
und herwechseln kann. Leider habe ich es noch nicht geschafft, das Hauptfenster zu holen.

Uwe Raabe 12. Aug 2022 12:51

AW: Mehrere Formulare
 
Setz mal in der DPR-Datei das Application.MainFormOnTaskbar auf False. Das hat zwar andere Nachteile, stellt aber das gewünschte Verhalten her.

himitsu 12. Aug 2022 12:52

AW: Mehrere Formulare
 
Welche Delphiversion? (Tipp, damit man es bei jeder Frage nicht neu anzugeben braucht: https://www.delphipraxis.net/profile...le#csel_field5 )

Die reagieren ja teilweise unterschiedlich.



Ansonsten hat jede Form einen Delphi-Referenz durchsuchenPopupMode und PopupParent, worüber man steuern kann, was wie ausgerichtet werden soll.

Eigentlich sollte es standardmäßig aber auf pmNone stehen. :gruebel:

z.B. Dialoge und ShowModal hängen sich an die gerade aktive Form, damit sie immer davor bleiben.
Eventuell hängt sich deine Form automatisch an die MainForm, damit sie nicht ausversehn dahinter verschwindet.

Gausi 12. Aug 2022 13:10

AW: Mehrere Formulare
 
Wenn die Nicht-Hauptformen immer im Vordergrund bleiben, dann scheint es sich um eine neuere Delphi-Version zu handeln. Wenn dabei zwei Fenster in den Vordergrund kommen dürfen sollen, dann hilft ein Überschreiben der CreateParams der Nicht-Hauptformen:
Delphi-Quellcode:
TMySecondForm = class(TForm)
// ...
protected
  procedure CreateParams(var Params: TCreateParams); override;
end;

procedure TMySecondForm.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  Params.WndParent := Application.Handle;
end;
Dann kann die Mainform auch wieder in den Vordergrund, auch während die zweite Form sichtbar ist.

himitsu 12. Aug 2022 13:20

AW: Mehrere Formulare
 
Boar eh, wer hat sich denn den Sch*** ausgedacht?

Bei pmNone und MainFormOnTaskBar wird die Form wirklich an die MainForm gehängt.
Eigentlich sollte das doch nur bei pmExplicit und PopupParant=0 passieren ..... so, wie es auch in der Hilfe steht. :wall:

RayEn 12. Aug 2022 13:31

AW: Mehrere Formulare
 
Hallo,

vielen Dank für die Antworten.

die Version ist Delphi 11.

der Eintrag in der DPR hat leider keine Wirkung gezeigt.

Der PopUpMode steht auf pmNone.

Das Überschreiben der CreateParams scheint zu funktionieren - super Danke schön.

himitsu 12. Aug 2022 16:26

AW: Mehrere Formulare
 
Zitat:

Zitat von RayEn (Beitrag 1510058)
der Eintrag in der DPR hat leider keine Wirkung gezeigt.

Vor dem CreateForm?

peterbelow 13. Aug 2022 12:45

AW: Mehrere Formulare
 
Zitat:

Zitat von himitsu (Beitrag 1510056)
Boar eh, wer hat sich denn den Sch*** ausgedacht?

Bei pmNone und MainFormOnTaskBar wird die Form wirklich an die MainForm gehängt.
Eigentlich sollte das doch nur bei pmExplicit und PopupParant=0 passieren ..... so, wie es auch in der Hilfe steht. :wall:

PopupMode wird nur bei modalen Forms verwendet, bei der Frage geht es aber um nicht-modale Forms. Per Default sind halt seit vielen Delphi-Versionen alle sekundären Forms Eigentum des Mainforms (auf der API-Ebene), das war seit Windows Vista notwendig, um für die Anwendung einen normal funktionierenden Taskbar-Button zu bekommen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:10 Uhr.
Seite 1 von 2  1 2      

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