45 timer
Mit Hilfe dieses Objektes können Sie Aktionen zu festdefinierten Zeitpunkten mit festdefinierten Abständen durchführen. Z.B. kann damit an einem bestimmten Wochentag ein spezieller Prozess gestartet werden, oder an Termine (Tage, Stunden…) erinnert werden.
Sie können mit dem timer Zeiten in Monaten, Wochen, Tagen, Stunden, Minuten und Sekunden definieren. Ebenso sind Zeitabstände in diesen Einheiten definierbar.
Definition
{ export | reexport } { model } timer { <Bezeichner> } { <Objektspezifische Attribute> }
Da Timer über das Message-Handling des Fenstersystems arbeiten, gibt es Situationen, in denen kein Timer-Ereignis auftreten kann. Vor allem auf den PC Fenstersystemen (Microsoft Windows) funktioniert der Timer in folgenden Situationen nicht:
- Ein Menü ist offen
- Eine zur Anwendung gehörende Messagebox ist offen
Ereignisse
Kinder
Vater
Menü
keins
45.1 Attribute
45.2 Spezifische Attribute
Attribut | Beschreibung |
---|---|
Aktivität des Timers:
|
|
Anzahl der Wiederholungen. Bei 0 wird der Timer unendlich wiederholt. |
|
Abstände zwischen den Aktivierungen des Timers (nur bei Zeitabstand). |
|
Startzeitpunkt des Timers (bei absoluter Zeitdefinition oder beim Zeitabstand). |
45.2.1 Definition der Zeitabstände
Für die Zeitdefinition gibt es zwei Möglichkeiten:
- absolute Zeitdefinition
- relative Zeitdefinition
{<hour>}:{<minute>}{:{<second>}}
{<day>}.{<month>}.{<year>} {<hour>}:{<minute>}{:{<second>}}
{<month>}/{<day>}/{<year>} {<hour>}:{<minute>}{:{<second>}}
{<DoW>} {<hour>}:{<minute>}{:{<second>}}
DoW: Wochentag (1 = Montag, 2 = Dienstag, .... , 7 = Sonntag)
+ {<hour>}:{<minute>}{:{<second> {' <millisecond>}}
+ n d
+ n D
+ n m
+ n M
+ n y
+ n Y
d, D: |
Tage |
m, M: |
Monate |
y, Y: |
Jahre |
Wird bei der absoluten Zeitdefinition ein Wert nicht mitangegeben, wird als Default der entsprechende Wert aus der aktuellen Zeit, dem "Jetzt", übernommen.
Werden die Sekunden nicht angegeben, werden sie bei fehlendem : auf 0, bei angegebenem : auf die Sekunden der aktuellen Zeit gesetzt.
Für jeden Monat sind Tageswerte bis 31 erlaubt. Hat der Monat weniger Tage, so wird der letzte Tag als letzter Tag des Monats angenommen.
Als Jahre können Werte von 1901 bis 2099 angegeben werden. Alternativ sind Werte von 0 bis 99 erlaubt, die auf den Zeitraum 1970 bis 2069 abgebildet werden.
Die Kennzeichnung der Millisekunden wird mit dem Zeichen ' eingeleitet.
Beispiel
.incrtime "+0:0:0'5";
Der Timer schickt jede halbe Sekunde einen Select-Event.
Hinweise
Aus Systemgründen können die Windows-Systeme keine bessere Auflösung als 55 Millisekunden. Der Dialog Manager wählt die nächst mögliche höhere Zeiteinheit.
Die Angabe von Millisekunden ist nur bei relativen Zeitangaben unter einer Minute möglich. Bei absoluten Zeitangaben liefern Millisekunden eine Fehlermeldung. Bei relativen Zeitangaben über eine Minute werden Millisekunden ignoriert - es erfolgt keine Fehlermeldung.
Beispiele
-
Jeden Freitag um 12.00 Uhr
.starttime "5 12:00";
.incrtime "+7D";
-
Jeden Tag um 16.00 Uhr
.starttime "16:00";
.incrtime "+1D";
-
Weihnachten 19.00 Uhr
.starttime "24.12 19:00";
.incrtime "+1Y";
-
4 Stunden nach Programmstart
.starttime "+04:00";
45.3 Beispiel
Verwendung eines timers für eine Autosave-Funktion:
timer TiAutoSave { } window WnAutoSave { child checkbox CbAutoSave { } !! Timer is activated and deactivated with this checkbox. child edittext EtMin { } !! Includes the number of minutes after which the !! select event for the timer is to be sent. child edittext EtFileName { } !! Name of the file in which is to be stored. } on CbAutoSave select { if CbAutoSave.active then CbAutoSave.text := "yes"; TiAutoSave.incrtime := (("+:" + EtMin.content) + ":"); TiAutoSave.active := true; else CbAutoSave.text := "no"; TiAutoSave.active := false; endif } on TiAutoSave select { !! Rule R_SaveFile(EtFileName.content) is called at each !! select event. }