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