Ja genau RavenIV und Sherlock, das ist das was ich mir vorstellen.
Geht prinzipiell auch mit Application.ProcesMessages, das Probelm ist jetzt nur noch, dass
wenn "abbrechen" order "stop" gedrückt wurde, die Schleife nicht mehr gestartet werden kann.
Delphi-Quellcode:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 =
class(TForm)
b_start: TButton;
b_stop: TButton;
Memo1: TMemo;
procedure b_startClick(Sender: TObject);
procedure ResetEscPressed;
function EscPressed():Boolean;
procedure b_stopClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
KnopfGedrueckt:boolean;
implementation
{$R *.dfm}
procedure TForm1.b_startClick(Sender: TObject);
var i:integer;
begin
i:=0;
resetescpressed;
repeat
memo1.Text:=inttostr(i);
inc(i);
sleep (10);
Application.ProcessMessages;
until EscPressed()
or KnopfGedrueckt;
end;
procedure TForm1.ResetEscPressed;
begin
GetAsyncKeyState(VK_ESCAPE);
GetAsyncKeyState(VK_PAUSE);
end;
procedure TForm1.b_stopClick(Sender: TObject);
begin
KnopfGedrueckt := True;
end;
function TForm1.EscPressed():Boolean;
begin
Result := ((GetAsyncKeyState(VK_ESCAPE)
and $8001) <> 0)
or
((GetAsyncKeyState(VK_PAUSE)
and $8001) <> 0);
end;
end.