Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Wieso läuft Timer weiter wenn MessageDlg gezeigt wird? (https://www.delphipraxis.net/122508-wieso-laeuft-timer-weiter-wenn-messagedlg-gezeigt-wird.html)

Viktorii 17. Okt 2008 14:23

Re: Wieso läuft Timer weiter wenn MessageDlg gezeigt wird?
 
Also bleibt die Anwendung in gewisser Weise doch stehen, oder nicht?
Irgendwie steh ich auf dem Schlauch :?:

littleDave 17. Okt 2008 14:36

Re: Wieso läuft Timer weiter wenn MessageDlg gezeigt wird?
 
Stell dir die Funktion ShowModal einfach als Schleife vor:

Delphi-Quellcode:
// Pseudocode
function TForm.ShowModal: TModalResult;
begin
  // Zuerst Enabled aller anderen Fenster auf False setzen
  for i:=0 to Screen.Form.Count-1 do
    if Screen.Forms[i] <> Self then
      Screen.Forms[i].Enabled := False;

  // Dann die Schleife
  while not Self.KnopfGedrückt do
  begin
    Sleep(1);
    Application.ProcessMessages;
  end;

  // und zum schluss noch die anderen Forms wieder reaktivieren
  for i:=0 to Screen.Form.Count-1 do
    if Screen.Forms[i] <> Self then
      Screen.Forms[i].Enabled := True;
end;
Vielleicht ist es dadurch verständlicher, warum die darauffolgende Zeile erst nach der Funktion ShowModal aufgerufen wird: die Anwendung hängt in der Schleife :zwinker:

jfheins 17. Okt 2008 14:48

Re: Wieso läuft Timer weiter wenn MessageDlg gezeigt wird?
 
Also ich habs mal mit C# in .net ausprobiert, da läuft der Timer tatsächlich weiter ... :shock:

Hätte ich nicht gedacht :stupid:


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:21 Uhr.
Seite 2 von 2     12   

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