Einzelnen Beitrag anzeigen

Dejan Vu
(Gast)

n/a Beiträge
 
#7

AW: Laufende whileschleife auf Knopfdruck unterbrechen

  Alt 14. Feb 2015, 08:11
Ich verwende das:
Delphi-Quellcode:
Type
  TMyForm = class (TForm)
    
    Procedure ButtonAbbruchClick(Sender : TObject);
...
    FSchleifenAbbruchErwuenscht : Boolean;
    Property SchleifenAbbruchErwuenscht : Boolean Read FSchleifenAbbruchErwuenscht Write SetSchleifenAbbruchErwuenscht;
  ...
    Procedure MeineSchleife;
  end;

Procedure TMyForm.SetSchleifenAbbruchErwuenscht (value : Boolean);
begin
  ButtonAbbruch.Enabled := not Value;
  FButtonAbbruch := Value;
End;

Procedure TMyForm.MeineSchleife;
begin
  SchleifenAbbruchErwuenscht := false;
  try
    while true do begin
       Application.ProcessMessages;
       if SchleifenAbbruchErwuenscht then break;
       DoSomething();
    end;
  finally
    SchleifenAbbruchErwuenscht := false;
  end
end;

Procedure TMyForm.ButtonAbbruchClick(Sender : TObject);
Begin
  SchleifenAbbruchErwuenscht := true;
end;
Durch den Aufruf von Application.ProcessMessages wird auch der Click-Handler des ButtonAbbruch ausgeführt. Dieser zeigt nun an, das ein Schleifenabbruch erwünscht ist.
Die Schleife bekommt das mit und kann sich beenden.

Diese Property steuert gleichzeitig, ob der Button überhaupt klickbar ist.
  Mit Zitat antworten Zitat