AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Verrückte Eventreihenfolge, wenn Fenster mit ShowModal geöffnet wurde
Thema durchsuchen
Ansicht
Themen-Optionen

Verrückte Eventreihenfolge, wenn Fenster mit ShowModal geöffnet wurde

Ein Thema von freejay · begonnen am 14. Dez 2017 · letzter Beitrag vom 15. Dez 2017
Antwort Antwort
Seite 2 von 2     12   
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#11

AW: Verrückte Eventreihenfolge, wenn Fenster mit ShowModal geöffnet wurde

  Alt 14. Dez 2017, 23:28
Hallo,
du kannst ein Fenster auch semimodal öffnen.
Nach aussen hin (für den Benutzer) ist es modal,
aber intern (für den Programmierer) wird es mit Show geöffnet
und man kann seine Berechnungen laufen lassen.

Und da es mit Show geöffnet wird, funktioniert z.B. auch ein Cancel-Button.

Delphi-Quellcode:
// Erzeugen
var
  WindowList : Pointer;

  Form:= TForm1.Create(nil);
  WindowList:= DisableTaskWindows(Form.Handle);
  Form.Show;
  Application.ProcessMessages;

// Freigeben
  Form.FCanClose := True;
  EnableTaskWindows(WindowList);
  Form.Free;
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Verrückte Eventreihenfolge, wenn Fenster mit ShowModal geöffnet wurde

  Alt 15. Dez 2017, 01:17
du kannst ein Fenster auch semimodal öffnen.
...
Dann raucht aber sein Button-Code ab, denn das Hauptproblem ist, dass der sich nicht beendet, sobald das Fenster zu gehn soll.
Also ginge das Fenster wirklich zu und würde freigegeben.

Auch in deinem Code bleibt es dann in dem ProcessMessages (nach Show) hängen, bis der Button fertig ist.
und da fehlt auch noch eine Schleife um das ProcessMessages, denn sonst rauscht es sofort bis zum Free durch (ShowModal wartet von selber) und die Form ist sofort wieder weg.

Selbst wenn das Fenster geschlossen/ausgeblendet wird, dann müsste danach dennoch bis zur Freigabe gewartet werden, bis der Button fertig ist (was in einem Thread nicht möglich ist ... klingt fast nach 'nem Deadlock).
Also ob sichtbar oder unsichtbar, gewartet werden muß immer, wenn seine Arbeitsschleife sich nicht beendet.
$2B or not $2B

Geändert von himitsu (15. Dez 2017 um 02:25 Uhr)
  Mit Zitat antworten Zitat
freejay

Registriert seit: 26. Mai 2004
Ort: Nürnberg
272 Beiträge
 
Delphi 11 Alexandria
 
#13

AW: Verrückte Eventreihenfolge, wenn Fenster mit ShowModal geöffnet wurde

  Alt 15. Dez 2017, 08:57
Danke an alle für Eure Anregungen.

Ich werde das jetzt mit einem Thread und OnTerminate lösen. Dann läuft kein Button-Code, der die Ausführung von OnClose verhindern/verschieben könnte.
[Delphi 11.3.1 Enterprise; Win10/11; MySQL; VCL]
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 03:30 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