AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Prüfen, ob ShowModal läuft?

Ein Thema von AlexII · begonnen am 22. Mai 2015 · letzter Beitrag vom 17. Mär 2018
Antwort Antwort
Seite 1 von 3  1 23      
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.483 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.483 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
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.682 Beiträge
 
Delphi 5 Professional
 
#9

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

  Alt 22. Mai 2015, 20:35
Aber wenn man innerhalb eines modalen Formulars die Modalität abfragt, weiß man doch bereits vorher, dass es modal ist. Klar, das Form könnte auch mit .Show (also nicht-modal) aufgerufen worden sein, aber das kann man doch als Programmierer selbst steuern. Oder hab ich da was nicht verstanden oder mitbekommen?

MfG Dalai
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#10

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

  Alt 22. Mai 2015, 20:43
Man kann in einer gemeinsam genutzten Methode sowas abfragen, wenn man es wissen muß und nicht weiß ob es das ist.

Aber solange hier in zwei Threads nur zusammenhanglose Stückchen gezeigt werden und alles Wichtige fehlt, hat es eh keinen Sinn eine Lösung finden zu wollen.
Meine Galskugel ist grade in der Reinigung.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 10:08 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