Einzelnen Beitrag anzeigen

Benutzerbild von littleDave
littleDave

Registriert seit: 27. Apr 2006
Ort: München
556 Beiträge
 
Delphi 7 Professional
 
#12

Re: Wieso läuft Timer weiter wenn MessageDlg gezeigt wird?

  Alt 17. Okt 2008, 15:36
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
Jabber: littleDave@jabber.org
in case of 1 is 0 do external raise while in public class of object array else repeat until 1 is 0
  Mit Zitat antworten Zitat