Klingt so, als wenn im Hintergrund die Schleife noch laufen und das Formular blockieren würde. Entweder man ruft in der Schleife Application.ProcessMessages auf oder man lagert das alles in einen Thread au.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
i : Integer;
begin
ResetEscPressed;
for i := 0 to 10000000 do
begin
Application.ProcessMessages;
Caption := inttostr(i);
if EscPressed('Schleife abbrechen ?') then break;
end; //For
Label1.Caption:= 'stop';
end; //proc
Application.ProcessMessages bringt keine Änderung.
Beim Klick auf ESC zeigt das Label sofort 'Stop' an, die Schleife wird also sofort verlassen.
Es muss einen anderen Grund geben. Gibt es eine andere Möglichkeit als GetAsyncKeyState?