Eksempel: Lad os sige jeg har: En gruppe radiobutton til at vælge ugedage (mandag, tirsdag....sundag) To edit felter. 1 time time og 1 til minut.
Så en bruger kan f.eks vælge mandag 14:30. Dette skal nu laves om til et timerinterval sådan at timeren fyrer eventet af den førstkommende mandag kl. 14:00:00
Du kan benytte funktionen MilliSecondsBetween i DateUtils uniten til at findes antal milisekunder indtil den ønskede dato/tid og sætter så din Timer.Interval til dette, bemærk at du kun kan benytte dette hvis OnTimer skal fyres af inden der er gået 49,7 døgn.
Det lykkedes da til sidst. Har Delphi 5 så ingen DateUtils. Lykkedes mig dog at finde koden og hive den ud
function SpanOfNowAndThen(const ANow, AThen: TDateTime): TDateTime; begin if ANow < AThen then Result := AThen - ANow else Result := ANow - AThen; end;
function MilliSecondSpan(const ANow, AThen: TDateTime): Double; begin Result := MSecsPerDay * SpanOfNowAndThen(ANow, AThen); end;
function MilliSecondsBetween(const ANow, AThen: TDateTime): Int64; begin Result := Trunc(MilliSecondSpan(ANow, AThen)); end;
Du kan også bare generere tidspunktet hvor det skal ske, og så lade en timer tjekke det hvert sekund. Det er ikke noget der kan mærkes:
procedure OnTimerTick(Sender : TObject); begin if (fExecuteDate <> 0.0) and (fExecuteDate >= now) then begin DoIt; fExecuteDate := 0.0; // eller Timer1.Enabled := false; end; end;
Hvis man en onsdag vælger mandag, er det så mandag i næste uge?
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.