Einzelnen Beitrag anzeigen

Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#6

AW: Eine Procedure durch Stop Button unterbrechen

  Alt 25. Feb 2012, 01:48
Eigentlich ist das Problem ganz einfach zu lösen.
Man braucht dazu ein Flag, einen Start- und einen Stopbutton und zwei kleine Hilfsfunktionen:

Delphi-Quellcode:
TForm1=class(TForm)

pivate
  FRunning : Boolean; // =True wenn Arbeitsprocedure läuft
  procedure DoWork; // die Arbeitsprocedure; kann längere Zeit laufen
protected
  function IsRunning:Boolean;
  procedure UpdateButtons;
end;
....

function TForm1.IsRunning:Boolean;
begin
  // wichtig, VCL muss die Gelegenheit bekommen
  // auf einen Klick auf Stopbutton zu reagieren
  Application.ProcessMessages;
  Result := FRunning;
end;

// Start- und Stopbutton an- bzw. abschalten
procedure TForm1.UpdateButtons;
begin
  ButtonStart.Enabled := not FRunning;
  ButtonStop.Enabled := FRunning;
end;

procedure TForm1.StartButtonClick(Sender:TObject)
begin
  FRuning := True;
  UpdateButtons;
  DoWork;
  FRunning := False;
  UpdateButtons;
end;

procedure TForm1.StopButtonClick(Sender:TObject)
begin
  FRuning := False;
end;


// die Arbeitsprocedure
// hier kann man alles mögliche tun,
// man muss nur regelmässig die Funktion IsRunning aufrufen
// und mit Exit abbrechen falls nötig
procedure TForm1.DoWork;
begin
  for i:=1 to 1000 do
  begin
    if not IsRunning then Exit;
    ....
  end;
end;
  Mit Zitat antworten Zitat