AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Prüfen, ob ShowModal läuft?

Ein Thema von AlexII · begonnen am 22. Mai 2015 · letzter Beitrag vom 17. Mär 2018
Antwort Antwort
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#1

Prüfen, ob ShowModal läuft?

  Alt 22. Mai 2015, 17:35
Hallo,

ich möchte wissen, ob eine modales Formular läuft bzw. gerade offen ist.

Delphi-Quellcode:
if Form.ShowModal = 1 {oder andere Zahl?} then
if Form.Visible then
if ShowModal.Show then
Wie macht man das richtig? Danke!
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#2

AW: Prüfen, ob ShowModal läuft?

  Alt 22. Mai 2015, 17:44
ShowModal ist eine Funktion, die eine Form modal aufruft und beim Schließen einen Integer zurückliefert. Daher macht es aus meiner Sicht keinen Sinn, nach dem Aufruf von ShowModal darauf zu test, ob die Form noch visible ist, denn das ist sie mit Sicherheit nicht.
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Prüfen, ob ShowModal läuft?

  Alt 22. Mai 2015, 17:47
Ok... aber wie kann ich prüfen, ob das modale Form gerade offen ist oder nicht?
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.485 Beiträge
 
Delphi 10.1 Berlin Professional
 
#4

AW: Prüfen, ob ShowModal läuft?

  Alt 22. Mai 2015, 18:02
Ok... aber wie kann ich prüfen, ob das modale Form gerade offen ist oder nicht?
Während ShowModal läuft, ist fsModal in FormState gesetzt.
Delphi-Quellcode:
if fsModal in MyForm.FormState then
begin
  // VCL-Formular wird modal angezeigt
end;
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#5

AW: Prüfen, ob ShowModal läuft?

  Alt 22. Mai 2015, 18:08
Ok... aber wie kann ich prüfen, ob das modale Form gerade offen ist oder nicht?
... oder einfach Form.Visible abfragen. Nachdem du ein Formular modal aufgerufen hast, ist die Prüfung im aufrufenden Formular sinnlos, denn die ergibt immer Visible = False. Das ist deshalb so, weil der Programmzeiger ja erst nach dem Schließen der modalen Form zurückkehrt, und nach dem Schließen einers Formulars ist Visible immer False, sonst wäre das Formular ja nicht geschlossen worden.

Oder anders ausgedrückt: Du kannst vom aufrufenden Formular aus nicht prüfen, ob ein modal aufgerufenes Formular sichtbar ist, denn du bist zu diesem Zeitpunkt nicht im aufrufenden Formular. Wenn du wieder im aufrufenden Formular bist, ist das modal aufgerufene Formular wieder geschlossen.

Ich hoffe, das war jetzt unmißverständlich

Ok... aber wie kann ich prüfen, ob das modale Form gerade offen ist oder nicht?
Während ShowModal läuft, ist fsModal in FormState gesetzt.
Delphi-Quellcode:
if fsModal in MyForm.FormState then
begin
  // VCL-Formular wird modal angezeigt
end;
Von wo aus soll denn das modal angezeigte Formular abgefragt werden?

Geändert von Perlsau (22. Mai 2015 um 18:13 Uhr)
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Prüfen, ob ShowModal läuft?

  Alt 22. Mai 2015, 18:34
OK, danke euch!
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.485 Beiträge
 
Delphi 10.1 Berlin Professional
 
#7

AW: Prüfen, ob ShowModal läuft?

  Alt 22. Mai 2015, 20:30
Von wo aus soll denn das modal angezeigte Formular abgefragt werden?
Von einem Timer oder OnIdle zum Beispiel.

Ich habe in der initialen Frage nichts gesehen, was darauf schließen lässt, dass er die Modalität erst nach dem ShowModal abfragen möchte. Seine Beispiele demonstrieren nur drei verschiedene (nicht funktionierende) Versuche die Modalität abzufragen. Zumindest habe ich das so aufgefasst.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

AW: Prüfen, ob ShowModal läuft?

  Alt 22. Mai 2015, 20:31
@jbg
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 15:12 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 by Thomas Breitkreuz