FG Timer-Platzhalter per [cX.Timer(ID).X]:
Mit diesen Platzhaltern können verschiedene Zeitgeber (unabhängig voneinander und vom laufenden Skript) verwendet werden.
.Abgelaufen | Liefert die Zeit in Millisekunden, die der Timer bereits läuft |
.Ablaufzeit | Ablaufzeitpunkt des Timers als Uhrzeit h:mm:ss ermitteln oder setzen Wird bei Setzen in ms für .Intervall umgerechnet und der Timer sofort (neu) gestartet. |
.Bedingung$ | Definiert eine Bedingungsformel, deren Ergebnis ungleich 0 sein muss, damit das Ereignis gemeldet wird. Diese Variable muss als $-Variable angewendet werden, damit die Platzhalter nicht schon bei der Definition ersetzt werden. |
.Endlos | Verhalten des Timers: 0=einmalig (Standard), 1=wiederholend |
.Ereignis | Ereignismarke eines Unterprogramms für die Bearbeitung des Ablauf-Ereignisses (siehe auch Aufruf-Befehl) Optional kann dabei ein Parameter mit angegeben werden, etwa um den Timer zu identifizieren. Wird also z.B. Timer(Test) angegeben und die Marke lautet ::Timer(Name), wird diese aufgerufen, wobei dann "Test" in der Variablen [Name] steht (siehe Funktionen). Wird als Ereignismarke dagegen nur Timer angegeben, wird ebenfalls die Marke ::Timer(Name) aufgerufen, wobei [Name] dann leer ist. |
.Intervall | Zeitintervall des Timers in Millisekunden oder beim Setzen als h:mm:ss Das Setzen des Intervalls startet den Timer sofort neu, sofern er bereits läuft, andernfalls muss hierfür .Start gesetzt werden. |
.LetzterTimer | ID des zuletzt abgelaufenen Timers (ID-Angabe nicht erforderlich) |
.Start | Timer (neu) starten Setzen auf ein Intervall (Millisekunden oder h:mm:ss) setzt dieses auch fest, Setzen auf 0 stoppt den Timer, Setzen auf leer startet ihn mit dem zuvor eingestellten Intervall. |
.Stopp | Timer stoppen Das Setzen von [cX.Timer.Stopp] ohne ID stoppt alle laufenden Timer |
.Verbleibend | Verbleibende Zeit des Timers bis zum Ablauf in Millisekunden |
Nach Ablauf des eingestellten Intervalls wird das in .Ereignis angegebene Unterprogramm aufgerufen.
Durch erneutes Setzen von .Start wird der Timer neu aufgesetzt, also das komplette Intervall neu abgewartet (Neustart).
Weitere Hinweise:
• | Zu kurz eingestellte sowie viele überlappende Timer können dazu führen, dass die Ereignisse sich gegenseitig unterbrechen, was zu unvorhergesehenen Ergebnissen führen kann. Daher sehr kurze Intervalle bitte mit Bedacht einsetzen und die Ereignis-Unterprogramme möglichst kurz halten! |
• | Vom Anwender zu bestätigende Elemente (z.B. Meldung) sollten im Ereignis nicht verwendet werden, da hierdurch mehrere solche Meldungen gleichzeitig erscheinen können, wenn sie nicht bestätigt wurden. |
• | Die Zeitgeber-Ereignisse werden vom System ausgelöst und sind daher sehr genau. |
• | Die Timer-Intervalle sind unabhängig von einer eventuell aktivierten Zeitlupen-Ausführung. |
• | Das Unterprogramm wird in dem Kontext aufgerufen, aus dem der Timer aktiviert wurde, also im Hauptprogramm oder auch einem Objekt bzw. einer cXtension. Ein solcher Timer sollte daher nicht in einem Unterprogramm mit der Option Lokale Variablen verwendet werden, da dieser Variablen-Kontext nach Beenden des Unterprogramms gelöscht wird. |
Beispiel
*** Test der [cX.Timer(ID).X]-Platzhalter Anzeige-Fenster 'Timer-Test', Breite=50, Höhe=40 Schalter 'Timer 1' (ID='chkT1', X='1', Y='1') Bezeichner Text='---' (ID='bezT1', X='25', Y='4') Schalter 'Timer 2' (ID='chkT2', X='1', Y='15') Bezeichner Text='---' (ID='bezT2', X='25', Y='18') Warte Endlos (Warten auf zu behandelnde Ereignisse)
:: Anzeige_Element(chkT1)_Klick Wenn (? '[.Element(chkT1)]') *** Timer1 aktivieren: Marke definieren und endlose Wiederholungen anfordern Setze in [cX.Timer(Timer1).Ereignis]: 'Timer1_Ist_Abgelaufen' Setze in [cX.Timer(Timer1).Endlos]: '1' Setze in [cX.Timer(Timer1).Start]: '1' Sonst Setze in [cX.Timer(Timer1).Stopp]: '' Setze in [.Element(bezT1).Text]: '---' Ende Wenn Beende Unterprogramm (Zurück)
:: Anzeige_Element(chkT2)_Klick Wenn (? '[.Element(chkT2)]') *** Timer2 aktivieren: nur 1 Ereignis nach 2 Sekunden Setze in [cX.Timer(Timer2).Ereignis]: 'Timer2_Tick' Setze in [cX.Timer(Timer2).Start]: '2' Sonst Setze in [cX.Timer(Timer2).Stopp]: '' Setze in [cX.Anzeige.Element(bezT2).Text]: '---' Ende Wenn Beende Unterprogramm (Zurück)
:: Timer1_Ist_Abgelaufen Setze in [.Element(bezT1).Text]: '[cX.Zeit]' Beende Unterprogramm (Zurück)
:: Timer2_Tick Setze in [.Element(bezT2).Text]: '[cX.Zeit]' Beende Unterprogramm (Zurück)
|
Beispiel als cX4Web-Code:
**cx5AR-LC AAAAAAABAD VVl1v2jAUf Z-0_2D5qTw QhlWkaSKVu o5pbG01iai wVRUyyYVYc ZzIcVbKr99 1-EynEVZCp T3he22d4xO fY9wd-Fqk5 uLtG0K6V7k 0uYaLALqt9 Xg5kcQxV0F WVNuarH69p xRcagtQhhI P5salHmSGB KDJvT9yPBG DPut_ajijh -Z3yc0i5NK ApqS1F3MQJ o9DoYLkcQN rkZoWnJKhC Ezo0s47Sr6 AmIU4fY7jG 6FELBbwMZm 71NZ8Xqr3U 16F4Ee4lJJ -4FI_jLx2i ZtgeZ343Ih EjVy6U_2w1 Qob0T8nymy 5WiuSvdzXf AJySTyBxZa 42WyWSFmnx Hp-HOufill ZMdunuFOrZ Hag5Pb742i HXJgqJ_Ti1 DxVLfqax-k N1xEltzzG- lIt0Iow7km waTgrDNQYf 5PCjyrdbrg 2_SnFrgqEV brst3c6d1z m2Lp3ygQPl bZ-lk57sG3 CIyN-CdCgP hCrAjCxU4y P7ZAcMUAFM skAowaY5TC RuZrhFFfTR GNDVUoCc8e 14BMJlKxHa LL1lbDcR8P pafxqSmSFU oMbXW9x3M_ M-HIyA8nzK dTHV-jaYWv XhVwc4r8A9 2QG9tDrok_ S9IVgG08Vl 0_DsVbZUVJ EskKLCqql4 KJXix47dfT Yy6LHStFTO f6tkHUGiOJ -SBgZQIQRr Mnz7O8ZY2P vkC90IMtz_ 7NX9D87zv8 ItvJQKQnsv 0tCnVdnxaV gX3c_QZjKF JxU61EWrjj skyncvFTsu 7rbWr3EfwO 9TWOhkgsAA A===* |
cX-Webseite: http://www.clickexe.net