AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Showmodal sperrt zyklisches Event

Ein Thema von Delphi_Rainer · begonnen am 10. Jun 2021 · letzter Beitrag vom 10. Jun 2021
Antwort Antwort
Seite 2 von 2     12
Delphi_Rainer

Registriert seit: 24. Apr 2009
11 Beiträge
 
#11

AW: Showmodal sperrt zyklisches Event

  Alt 10. Jun 2021, 14:28
Hallo !

Ja die Anwendung ist so programmiert das der Anwender erst Eingaben , Auswahl einer Funktion ausführen darf bevor er eine andere Funktion ausführen kann. Ist vom Kunden so vorgegeben.

Aber...Warum unterbricht Delphi mitten im Event die Ausführung und öffnet das Modale Fenster ???

Das ist doch falsch !!!

Gruß Rainer
  Mit Zitat antworten Zitat
EmWieMichael

Registriert seit: 28. Mär 2012
103 Beiträge
 
#12

AW: Showmodal sperrt zyklisches Event

  Alt 10. Jun 2021, 14:36
...
Aber...Warum unterbricht Delphi mitten im Event die Ausführung und öffnet das Modale Fenster ???
...
Nimm doch mal "application.ProcessMessages" raus.
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#13

AW: Showmodal sperrt zyklisches Event

  Alt 10. Jun 2021, 14:42
Ursache ist klar das application.ProcessMessages innerhalb eines Timer-Ereignisses aufgerufen wird.
Wenn innerhalb dieses application.ProcessMessages dann ShowModal aufgerufen wird, wartet die Anwendung an dieser Stelle und setzt das Timer-Ereigniss erst danach fort.
  Mit Zitat antworten Zitat
BerndS

Registriert seit: 8. Mär 2006
Ort: Jüterbog
480 Beiträge
 
Delphi 11 Alexandria
 
#14

AW: Showmodal sperrt zyklisches Event

  Alt 10. Jun 2021, 14:51
Dein Beispiel macht mit drei kleinen Änderungen das, was du warscheinlich erreichen willst.
Aber ich würde das Design überdenken und eine andere Lösung suchen.
1. Änderung Unit2:
Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
begin
 form1.show;
end;
2./3. Änderung Unit1
Delphi-Quellcode:
implementation

{$R *.dfm}

uses Unit2;

procedure TForm1.FormHide(Sender: TObject);
begin
  Form2.Enabled := True;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
  Form2.Enabled := False;
end;
Bernd
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Showmodal sperrt zyklisches Event

  Alt 10. Jun 2021, 15:06
Der nachfolgende Code in diesem Event (ButtonClick) wartet natürlich so lange, bis das ShowModal fertig ist (also nachdem das Fenster wieder geschlossen wurde) ... darum heißt es ja auch "modal".

Andere Events (Timer) können wärenddessen gesatertet werden.
Auf anderen Fenstern könnte man sogar wärenddessen Buttons klicken. (wenn sie nicht durch das Modal "disabled" würden ... z.B. wenn man in einem Timer ein neues Fenster öffnet, oder bei gesperrten Fenstern Diese wieder "enabled")
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
BigAl

Registriert seit: 6. Sep 2008
Ort: Kehl
495 Beiträge
 
Delphi 12 Athens
 
#16

AW: Showmodal sperrt zyklisches Event

  Alt 10. Jun 2021, 20:46
Natürlich wartet der Code im ButtonClick. Das modale Fenster könnte auch was zurück liefern. Normalerweise frage ich das ModelResult ab um z.B. zu erkennen wie der User den Dialog verlassen hat. Aber das ändert nichts daran, dass die Botschaftsverarbeitung des aufrufenden Formulars weiterhin funktioniert - also z.B. Timer-Ereignisse ausgelöst werden.

Das mit dem ProcessMessages wurde auch missverstanden. Das sollte dann eingesetzt werden wenn man längere Verarbeitung macht. Im Timer-Event macht das ja nicht wirklich Sinn...
Man sollte nie so viel zu tun haben, dass man zum Nachdenken keine Zeit mehr hat. (G.C. Lichtenberg)
  Mit Zitat antworten Zitat
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 12:09 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