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/)
-   -   MainForm kommt nicht in den Vordergrund (https://www.delphipraxis.net/191753-mainform-kommt-nicht-den-vordergrund.html)

sahimba 16. Feb 2017 11:56

MainForm kommt nicht in den Vordergrund
 
So... Windows 10, Delphi Seattle Professional.
Die nahezu einfachst denkbare Anwendung:

Ein Hauptformular - alles Standardeinstellungen - und ein Button.
Im ButtonClick wird ein weiteres Formular erzeugt und angezeigt.

Delphi-Quellcode:
LForm := TForm2.Create(Self);
LForm.Show;
Klicke ich nun auf das Hauptformular wird es aktiviert, das zweite Formular verbleibt jedoch im Vordergrund.

An keinem der beiden Formulare wurde irgendeine Property geändert.

Ist das Standardverhalten? Das ist mir in tausend Jahren noch nicht aufgefallen.

sahimba 16. Feb 2017 12:11

AW: MainForm kommt nicht in den Vordergrund
 
Das Verhalten zeigt sich, sobald
Delphi-Quellcode:
Application.MainFormOnTaskbar := True;
gesetzt ist.

Geda 16. Feb 2017 12:58

AW: MainForm kommt nicht in den Vordergrund
 
Zur Run- oder Designtime gesetzt?

http://docs.embarcadero.com/products...nTaskBar.html:
Zitat:

If a change to default behavior is required, MainFormOnTaskBar should be set in the .dpr file after Application.Initialize and before main form creation. The MainFormOnTaskBar setting is intended to persist for the life of the application; later runtime changes of this property could result in unexpected behavior.

MainFormOnTaskBar defaults to True for applications created in Delphi 2007 and later products and False for earlier products.

The property can be applied to older applications. Note that it affects the Z-order of your MainForm in case your application depends on this.

To update existing VCL applications, add the following line to the project's .dpr file after Application.Initialize;:

himitsu 16. Feb 2017 18:15

AW: MainForm kommt nicht in den Vordergrund
 
Die VCL sucht sich inzwischen standardmäßig den PopupParent automatisch raus und das ist das aktuell aktive/fokusierte Fenster, bevor dein neues Fenster angezeigt wird.
Und der PopupParent ist das Fenster, bei dem man immer darüber liegt.
PS: Das Selbe passiert auch bei Dialogen.

siehe Delphi-Referenz durchsuchenTForm.PopupMode und Delphi-Referenz durchsuchenTForm.PopupParent

Delphi-Laie 16. Feb 2017 18:22

AW: MainForm kommt nicht in den Vordergrund
 
FormStyle auf (fs)StayOnTop setzen?!

Oder ist das schon wieder obsolet?

sahimba 16. Feb 2017 23:56

AW: MainForm kommt nicht in den Vordergrund
 
Moin und Danke.

Es war wohl eine Kombination aus MainFormOnTaskbar und dem PopupMode.
Mit MainFormOnTaskBar True tritt das Verhalten hier immer auf, unabhängig vom PopupMode. Bei False und einem PopupMode von pmNone ist es so, wie ich das nun erwartet/gewollt habe.

Ist mir tatsächlich noch nie wirklich aufgefallen, allerdings verwendet unsere Anwendung auch meist modale Dialoge. Irgendwie geh ich da dann doch lieber in den Keller, Bits schubsen... da weiß man, was man hat.

himitsu 17. Feb 2017 15:21

AW: MainForm kommt nicht in den Vordergrund
 
MainFormOnTaskbar=True ist aber das bessere Verhalten.

Die Preview in der Taskleiste zeigt dann die Form und nicht das leere Application (das steuernde MessageOnlyWindow der VCL).


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:02 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