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/)
-   -   Delphi Wird in meiner Application gerade ein modales Fenster angezeigt? (https://www.delphipraxis.net/160072-wird-meiner-application-gerade-ein-modales-fenster-angezeigt.html)

RSE 26. Apr 2011 16:08

Wird in meiner Application gerade ein modales Fenster angezeigt?
 
Hallo!

Ich benutze TJvTrayIcon aus JvCustomD5D.bpl mit Delphi 5 (ja, richtig gelesen, nicht 2005). Wenn ich HideApplication aufrufe während ein modales Fenster angezeigt wird, dann führt das zu einem Stacküberlauf.

Frage: Wie bekomme ich heraus, ob ein zu meiner Application gehöriges modales Fenster angezeigt wird (um dann HideApplication nicht aufzurufen)?

Erster Ansatz: Mittels WinAPI alle Fenster durchklappern, ob sie zu meiner Application gehören und modal sind. Da ich mich recht wenig mit der WinAPI auskenne, würde das einen erheblichen Einarbeitungsaufwand für mich bedeuten. Außerdem dauert das offenbar ´ne Weile, laut diesem Artikel von Microsoft. Dafür muss es doch eine einfachere Lösung geben?!

Luckie 26. Apr 2011 16:19

AW: Wird in meiner Application gerade ein modales Fenster angezeigt?
 
Merk es dir doch einfach.

EWeiss 26. Apr 2011 16:23

AW: Wird in meiner Application gerade ein modales Fenster angezeigt?
 
Vielleicht mit.. IsWinModal then ?

so wie Luckie schon sagt! ;) merken.

gruss

dataspider 26. Apr 2011 16:26

AW: Wird in meiner Application gerade ein modales Fenster angezeigt?
 
IMHO hate ein modales Fenster fsModal in Formstate.
Also sollte es mit einer Schleife durch Screen.Forms und
if (fsModal in Screen.Forms[i].FormState) ...
doch lösbar sein.

Frank

blauweiss 26. Apr 2011 16:35

AW: Wird in meiner Application gerade ein modales Fenster angezeigt?
 
Hallo RSE,

Du könntest Dir auch mal IsWindowEnabled anschauen.
Ich verwende so etwas in der Art
Delphi-Quellcode:
IsWindowEnabled(Application.Mainform.Handle)
um festzustellen, ob das Hauptfenster gerade "Input-willig" ist.

Gruß,
blauweiss

RSE 26. Apr 2011 17:52

AW: Wird in meiner Application gerade ein modales Fenster angezeigt?
 
@Luckie:
Merken ist schön und gut, aber nicht in jedem Fall (z.B. in meinem) durchführbar. Das Fenster, das mir aktuell im Weg ist, kommt zum beispiel, weil eine Hilfedatei nicht gefunden wurde, von einer Erweiterung, die mein Kollege eingebaut hat. Ich bin mir nicht mal sicher, ob das ein VCL-Fenster ist.

@dataspider:
Screen.Forms klingt interessant. Das werde ich morgen mal testen.

@blauweiss:
IsWindowEnabled klingt zwar nicht nach dem, was ich suche (mein Mainform ist Visible und Enabled), aber ich werde es mir morgen auf Arbeit ebenso mal ansehen. Vielleicht liefert die Funktion ja false, wenn mein Mainform blos aufgrund eines anderen modalen Fensters den Fokus grad nicht erhalten kann... viel sagt MSDN ja nicht darüber.

blauweiss 26. Apr 2011 18:06

AW: Wird in meiner Application gerade ein modales Fenster angezeigt?
 
Zitat:

Zitat von RSE (Beitrag 1097076)
@blauweiss:
IsWindowEnabled klingt zwar nicht nach dem, was ich suche (mein Mainform ist Visible und Enabled), aber ich werde es mir morgen auf Arbeit ebenso mal ansehen. Vielleicht liefert die Funktion ja false, wenn mein Mainform blos aufgrund eines anderen modalen Fensters den Fokus grad nicht erhalten kann... viel sagt MSDN ja nicht darüber.

Hallo RSE,

ja, die Funktion liefert FALSE, falls gerade ein modaler Dialog geöffnet ist.

Gruss,
blauweiss

RSE 27. Apr 2011 07:51

AW: Wird in meiner Application gerade ein modales Fenster angezeigt?
 
Zitat:

Zitat von blauweiss (Beitrag 1097082)
ja, die Funktion liefert FALSE, falls gerade ein modaler Dialog geöffnet ist.

Es klappt einwandfrei :-D vielen Dank! Die anderen Lösungsansätze habe ich dann gar nicht mehr probiert.:oops:

Deep-Sea 27. Apr 2011 08:46

AW: Wird in meiner Application gerade ein modales Fenster angezeigt?
 
Auch wenn der TE das Problem für sich ja gelöst zu haben scheint, möchte ich trotzdem noch Application.ModalLevel nennen. Vlt. hilft es ja jemand anderen :-D

mjustin 27. Apr 2011 09:01

AW: Wird in meiner Application gerade ein modales Fenster angezeigt?
 
... kann die Löschfunktion nicht finden :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:57 Uhr.
Seite 1 von 2  1 2      

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