AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Wird in meiner Application gerade ein modales Fenster angezeigt?
Thema durchsuchen
Ansicht
Themen-Optionen

Wird in meiner Application gerade ein modales Fenster angezeigt?

Ein Thema von RSE · begonnen am 26. Apr 2011 · letzter Beitrag vom 27. Apr 2011
Antwort Antwort
Seite 1 von 2  1 2      
RSE

Registriert seit: 26. Mär 2010
254 Beiträge
 
Delphi XE Enterprise
 
#1

Wird in meiner Application gerade ein modales Fenster angezeigt?

  Alt 26. Apr 2011, 17:08
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?!
"Seit er seinen neuen Computer hat, löst er alle seine Probleme, die er vorher nicht hatte."
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

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

  Alt 26. Apr 2011, 17:19
Merk es dir doch einfach.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

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

  Alt 26. Apr 2011, 17:23
Vielleicht mit.. IsWinModal then ?

so wie Luckie schon sagt! merken.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#4

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

  Alt 26. Apr 2011, 17:26
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
Frank Reim
  Mit Zitat antworten Zitat
blauweiss

Registriert seit: 19. Jun 2007
142 Beiträge
 
#5

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

  Alt 26. Apr 2011, 17:35
Hallo RSE,

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

Gruß,
blauweiss
  Mit Zitat antworten Zitat
RSE

Registriert seit: 26. Mär 2010
254 Beiträge
 
Delphi XE Enterprise
 
#6

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

  Alt 26. Apr 2011, 18:52
@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.
"Seit er seinen neuen Computer hat, löst er alle seine Probleme, die er vorher nicht hatte."
  Mit Zitat antworten Zitat
blauweiss

Registriert seit: 19. Jun 2007
142 Beiträge
 
#7

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

  Alt 26. Apr 2011, 19:06
@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
  Mit Zitat antworten Zitat
RSE

Registriert seit: 26. Mär 2010
254 Beiträge
 
Delphi XE Enterprise
 
#8

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

  Alt 27. Apr 2011, 08:51
ja, die Funktion liefert FALSE, falls gerade ein modaler Dialog geöffnet ist.
Es klappt einwandfrei vielen Dank! Die anderen Lösungsansätze habe ich dann gar nicht mehr probiert.
"Seit er seinen neuen Computer hat, löst er alle seine Probleme, die er vorher nicht hatte."
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#9

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

  Alt 27. Apr 2011, 09:46
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
Chris
Die Erfahrung ist ein strenger Schulmeister: Sie prüft uns, bevor sie uns lehrt.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#10

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

  Alt 27. Apr 2011, 10:01
... kann die Löschfunktion nicht finden :)
Michael Justin

Geändert von mjustin (27. Apr 2011 um 10:06 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:28 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