procedure TForm1.Button1Click(Sender: TObject);
const
SECONDS_PER_DAY = 24 * 60 * 60;
var
t, t0, p: Double;
begin
if FRunning then begin
FRunning := false;
Button1.Caption := 'Start';
end else
begin
Button1.Caption := 'Stop';
FRunning := true;
Chart1LineSeries1.Clear;
t0 := Now;
while FRunning do begin
t := (Now - t0) * SECONDS_PER_DAY; // Elapsed time in seconds
Sleep(2000); // Simulates a lengthy calculation
p := 1000 * exp(-t/60);
Chart1LineSeries1.AddXY(t, p);
Application.ProcessMessages;
end;
end;
end;