Marbu's Variante benutze ich auch immer und sie reicht vollkommen. Einen Thread für den Vorgang zu proggen sollte nicht daran entschieden werden ob die Bearbeitung zwischendurch abgebrochen wird. Für einen eigenen Thread entscheidet man sich aus anderen Gründen. Das ist so bei dir sicher nicht nötig.
Das Exit würde ich hier einfügen:
Delphi-Quellcode:
If Fehler <> true Then
begin
For x := min_x to max_x do
begin
For y := min_y to max_y do
begin
Application.ProcessMessages;
IF FUserBreak then Exit;
....
Die Variable FUserBreak wird wie Marabu beschrieben hat im ButtonClick-Ereignis gesetzt auf welches die Anwendung nach Application.ProcessMessages hinreichend reagieren kann.
Gruß oki