Innerhalb der Prozedure (welche wohl eine Schleife hat) musst Du hin und wieder
Application.ProcessMessages; aufrufen, damit der Klick des Users auf den Button registriert wird.
Wenn der User auf den Button klickt solltest Du z.B. eine Boolean-Variable setzen und diese immer in der Schleife überprüfen. Wenn die Schleife feststellt, daß sich der Wert der Boolean-Variable geändert hat, dann bricht die halt einfach ab
Ein Beispiel:
Delphi-Quellcode:
type
TForm1 = class(TForm)
[...]
btnAbbrechen: TButton;
procedure btnAbbrechenClick(Sender: TObject);
private
{ Private declarations }
FAbbrechen: Boolean;
procedure MachMichTot;
[...]
public
{ Public declarations }
[...]
end;
[...]
procedure TForm1.btnAbbrechenClick(Sender: TObject);
begin
FAbbrechen := True;
end;
procedure TForm1.MachMichTot;
begin
FAbbrechen := False;
while not FAbbrechen do
begin
// schwere Rechnung
[...]
// und abarbeiten der Messages
Application.ProcessMessages;
end;
end;
...
...