Ich versuchs mal.. aber nur weil mir langweilig ist, da ich auf eventuelle Antworten auf meinen Thread warte...
Delphi-Quellcode:
procedure TForm1.sButton1Click(Sender: TObject);
var i : integer;
begin
zeit := strtointdef(sedit1.text, 1);
if sedit1.text = '' then begin
sedit1.text := '1';
end;
ms := zeit * 60 * 1000;
// Das Intervall bestimmt, in welchen Abständen der Timer aufgerufen wird.
// Also nehmen wir 1000ms = 1sek
// Die Schleife war hier völlig über, weil sie nichts anderes gemacht
// hat, als sgauge1.Position auf 100 zu setzen (wenn Position 0 war).
timer1.Interval := 1000;
sgauge1.Position := 0;
sgauge1.MinValue := 0;
sgauge1.MaxValue := ms;
Timer1.Enabled := true;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Timer1.Enabled := false;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var i: integer;
begin
// Und hier wird der Progress eben erhöht.
// Warum sollte hier 100 mal gebeept werden?
sgauge1.progress := sgauge1.progress + 1000;
if sgauge1.progress = sgauge1.max then
begin
// Wenn Ende erreicht, piepen
windows.beep(1000, 100);
end;
end;
Hui, der rote Kasten... Whatevers Beispiel wäre auch okay, wenn das Timer-Intervall auf 1000 stehen würde, man auf Gauge1.Progress 1000 addieren würde und man Sleep(1000) benutzen würde. Das liegt daran, weil du hier mit Millisekunden hantierst - warum eigentlich?
HTH - und weil Freitag ist und ein Bierchen drin ist keine Garantie auf Richtigkeit, ausserdem ist alles ungetestet.