Einzelnen Beitrag anzeigen

venice2
(Gast)

n/a Beiträge
 
#6

AW: Wecker - ELEGANTE Lösung mit Abbruch via Button gesucht

  Alt 24. Mai 2022, 18:02
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:
var
  EndAlarm : BOOL;
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

Geändert von venice2 (25. Mai 2022 um 10:11 Uhr)
  Mit Zitat antworten Zitat