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/)
-   -   Fenster im Vordergrund (https://www.delphipraxis.net/156951-fenster-im-vordergrund.html)

eike42 21. Dez 2010 16:06

Fenster im Vordergrund
 
Hallo @all,

ich habe folgendes Problem. Während im Hintergrund eine Berechnung läuft, soll im Vordergrund ein Fenster mit Fortschrittsbalken sein. Dieser wird auch wunderbar aktualisiert, nur:

Entweder, ich setze FormStyle:=fsStayOnTop, dann beschweren sich die Kunden weil das Fortschrittsfenster vor allen anderen Applikationen angezeigt wird
Oder, ich setzt FormStyle:=fsNormal, dann können die Kunden weiter in den vorhandenen Fenstern rumklicken (ganz schlechte Idee ;-))
Modal geht nicht, da die Berechnung ja im Hintergrund weiterläuft, d.h. das Fortschrittsfenster wird geöffnet, gelegentlich aktualisiert und dann geschlossen.

Ich suche eine Eigenschaft, die mir das Fenster quasi wie ein modales Fenster über die anderen Fenster legt, aber eben nur über die Fenster der eigenen Anwendung.

Hat jemand das schonmal gemacht?

Danke und viele Grüße
Eike

DeddyH 21. Dez 2010 16:22

AW: Fenster im Vordergrund
 
Könnte man das Fenster nicht doch modal anzeigen und die Berechnung in einen Thread auslagern?

s.h.a.r.k 21. Dez 2010 16:32

AW: Fenster im Vordergrund
 
Schau dir mal das hier an. Ich programmiere im Moment einen transparent Overlay, der genau das macht, was du haben willst und dabei benutze ich diese Eigenschaft. Hört sich zwar seltsam an -- also eher nach einem TPopup-Menü --, funktioniert aber wunderbar!

Bummi 21. Dez 2010 17:14

AW: Fenster im Vordergrund
 
Modal anzeigen und dort die Routine aus dem Hauptmodul aufrufen?

eike42 22. Dez 2010 11:14

AW: Fenster im Vordergrund
 
Hi,

Zitat:

Zitat von DeddyH (Beitrag 1069818)
Könnte man das Fenster nicht doch modal anzeigen und die Berechnung in einen Thread auslagern?

das wollte ich eigentlich vermeiden, da ich das Fortschrittsfenster an vielen Stellen verwende und deshalb so allgemein wie möglich gehalten habe.

Zitat:

Zitat von s.h.a.r.k (Beitrag 1069824)
Schau dir mal das hier an. Ich programmiere im Moment einen transparent Overlay, der genau das macht, was du haben willst und dabei benutze ich diese Eigenschaft. Hört sich zwar seltsam an -- also eher nach einem TPopup-Menü --, funktioniert aber wunderbar!

Danke für den interessanten Tipp, die Eigenschaft kannte ich noch nicht. Allerdings ist mir das Fenster ja "zu sehr" im Vordergrund, weil es sich eben auch vor die anderen Programme legt. Das würde ich gerne abstellen, habe dazu aber keine Information gefunden.

eike42 22. Dez 2010 12:11

AW: Fenster im Vordergrund
 
Ich habe jetzt die fsStayOnTop-Eigenschaft entfernt (fsNormal) und dafür die darunterliegenden Forms jeweils auf enable=false gesetzt und PopupMode auf pmExplicit gesetzt. Das sieht jetzt ganz gut aus.

s.h.a.r.k 22. Dez 2010 14:07

AW: Fenster im Vordergrund
 
Muss mich auch dezent korrigieren :oops: Ich meinte eigentlich folgendes:
Delphi-Quellcode:
FChildForm.PopupParent := FParentForm;
. So ist FChildForm immer über FParentForm, aber nie über anderen Fenster. Eben über diese Eigenschaft kannst du den zIndex (wie aus CSS evtl. bekannt ist) der Forms steuern.

turboPASCAL 22. Dez 2010 15:19

AW: Fenster im Vordergrund
 
Wie wäre es denn wenn man einfach nur ein Panel nutzt und darauf die Froschrittsanzeige ? :gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:46 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-2025 by Thomas Breitkreuz