Zitat:
Den gibt's doch, wie Sherlock in seiner Antwort angab: OnTimer.
Genau!
Example
Zitat:
Wie bringe ich ihn dazu, am Ende einen Sound abzuspielen.
Addiere eine Wave-Datei zur Ressource.
Addiere MMSystem zu den Uses..
Führe diese Funktion aus.
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
timer1.Enabled := false;
PlaySound('SOUND1', hInstance, SND_RESOURCE or SND_ASYNC);
Panel1.Color := clRed;
end;
Davon ab würde ich gar keinen Timer nehmen sondern einen Thread dafür verwenden.
Delphi-Quellcode:
procedure Alarm(Delay: Integer); stdcall;
var
//...
begin
//...
Repeat
//... Was auch immer du für die Zeit Berechnung benötigst.
// Wenn Bedingung erfüllt.
if (bla = bla) then
begin
EndAlarm := True;
PlaySound('SOUND1', hInstance, SND_RESOURCE or SND_ASYNC);
Panel1.Color := clRed;
end;
Sleep(Delay);
Until (EndAlarm = True); // globale variable EndAlarm Definieren und über Button auf True setzen. Oder darauf warten bis Bedingung erfüllt
end;
Delphi-Quellcode:
function StartAlarm(Delay: Integer): Integer;
var
Return: Integer;
hThread, dwThreadId: DWORD;
begin
Return := LB_ERR;
hThread := CreateThread(nil, 0, @Alarm, Pointer(Delay), 0, dwThreadId);
if (hThread <> 0) then
begin
Return := LB_OKAY;
Sleep(100);
end;
CloseHandle(hThread);
Result := Return;
end;
Aufruf!
Delphi-Quellcode:
if (StartAlarm(60) = LB_OKAY) then
// bla, bla