Ich hab jetzt die If-klauseln noch mal alle überarbeitet.
folgendes problem kommt zum vorschein:
ich habe 2 timer für die zwei. radiogroups:
Timer1 (timerzeit)
Delphi-Quellcode:
...
//////// ZEITDAUER IN MIN
timerfest.Enabled :=false; //der timer von der 2.rg
if edzeit.Text='00'
then begin edzeit.text:='01'
end;
Button1.Caption:='Abbrechen';
if cbsignal.Checked=false then begin
// opendialog1.Execute;
cbsignal.checked:=true;
end;
rgzwei.Enabled:=false;
dtAlarm2 := StrToTime(edende.Text + ':' + edende2.Text + ':' + edende3.Text) + StrToDate(cbdatum.Text);
if Now < dtAlarm2 then
ShowRemainingTime2(dtAlarm2)
else begin //datei abspielen
CoolTrayIcon1.ShowMainForm;
with MediaPlayer1 do
begin
if cbsignal.checked
then begin
Filename := OpenDialog1.Filename;
Open;
Play;
timerzeit.Enabled:=false;
end;
end;
..
Timer2 (Timerfest)
Delphi-Quellcode:
//////// Feste Uhrzeit
timerzeit.Enabled :=false; //timer1
dtAlarm := StrToTime(edhours.Text + ':' + edmin.Text + ':' + edseconds.Text) + StrToDate(cbdatum.Text);
if rgzwei.Checked then begin
rgeins.Enabled:=false;
cbdatum.Enabled:=false;
cbsignal.Enabled:=false;
end;
Button1.Caption:='Abbrechen';
if (dtAlarm) < (now) //einen tag höher setzen
then begin cbdatum.ItemIndex:= 1;
end;
if cbsignal.Checked=false then begin
// opendialog1.Execute;
cbsignal.checked:=true;
end;
if Now < dtAlarm then
ShowRemainingTime(dtAlarm)
else begin //datei abspielen
CoolTrayIcon1.ShowMainForm;
with MediaPlayer1 do
begin
if cbsignal.checked
then begin
Filename := OpenDialog1.Filename;
Open;
Play;
speedbutton2.Visible:=true;
timer3.Enabled:=true;
end;
end;
...
Um die Timer zu starten betätigt man den START-Button:
Delphi-Quellcode:
if rgeins.checked=true
then if button1.Caption='Starten'
then begin timerzeit.Enabled:=true;
end;
if rgzwei.checked=true
then if button1.Caption='Starten'
then begin timerfest.Enabled:=true;
end;
if (button1.Caption='Abbrechen')
then if (rgeins.checked) and (timerzeit.Enabled=true)
then if MessageDlg('Timer ändern?', mtConfirmation, [mbYes, mbNo], 0) =
mrYes then begin
timerzeit.Enabled:=false;
// timerfest.Enabled:=true;
rgzwei.Enabled:=true;
mehours.text:='00';
memin.Text:='00';
meseconds.text:='00';
mediaplayer1.Close;
cbsignal.Enabled:=true;
button1.Caption:='Starten';
mediaplayer1.Close;
end;
if (button1.Caption='Abbrechen')
then if (rgzwei.checked) and (timerfest.Enabled=true)
then if MessageDlg('Timer ändern?', mtConfirmation, [mbYes, mbNo], 0) =
mrYes then begin
timerfest.Enabled:=false;
// timerzeit.Enabled :=true;
rgeins.Enabled:=true;
mehours.text:='00';
memin.Text:='00';
meseconds.text:='00';
mediaplayer1.Close;
cbsignal.Enabled:=true;
button1.Caption:='Starten';
mediaplayer1.Close;
end;
Sobald bspw. die 1.radiogroup geklickt wurde und der START-Button,
wird der zähler in den 3 unteren memofeldern um 1 verringert. (wie countdown)
das geschieht solange bis '00'; dann wird eine datei abgespielt.
durch betätigen des START-Buttons wird automatisch die caption in Abbrechen umbenannt.
wenn der zähler vorzeitig abgebrochen (Abbrechen -> Caption wieder STARTEN umbenannt) wird, soll anhand der 2.radiogroups der timer2 geladen werden und time1 zurückgesetzt werden. das funzt ja auch alles einwandfrei nur ist das problem, sobald man die 1.radiogroup abbricht, und dann in der 2.radiogroup klickt und da STARTEN klickt wird der timer von der 1.radiogroup aktiviert. warum?
andersherum ist es genauo...