![]() |
AW: Verrückte Eventreihenfolge, wenn Fenster mit ShowModal geöffnet wurde
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; |
AW: Verrückte Eventreihenfolge, wenn Fenster mit ShowModal geöffnet wurde
Zitat:
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. |
AW: Verrückte Eventreihenfolge, wenn Fenster mit ShowModal geöffnet wurde
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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:10 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-2025 by Thomas Breitkreuz