Im Zusammenhang mit Dialogen wird üblicherweise nach dem Aufbau des Fensters ein Warte endlos-Befehl eingesetzt. Hierdurch stoppt das Skript erst einmal und wartet selbständig auf eine Aktion des Anwenders ("Schlaf-Modus"). Dies kostet übrigens kaum Rechenzeit, da keine ständig wiederholten Abfragen von Maus oder Tastatur notwendig sind.
Tritt ein Ereignis auf, etwa durch Anklicken des Fensters oder eines Elements, einen Tastendruck, Vergrößern oder Schließen des Fensters, wird automatisch ein entsprechendes Unterprogramm aufgerufen, sofern es existiert. Die möglichen Unterprogramme werden etwa bei der Erläuterung des ::Marke-Befehls oder den jeweiligen Beschreibungen der Befehle, die Ereignisse auslösen können, aufgeführt.
Aufrufe
Eine andere Möglichkeit, einen automatischen Aufruf eines Unterprogramms zu bewirken, bietet der Befehle Aufruf. Hier kann durch Setzen der Option Hintergrund der Aufruf des Unterprogramms in einem bestimmten Intervall geschehen oder von einer bestimmten Bedingung abhängig gemacht werden, etwa dem Erreichen einer bestimmten Uhrzeit.
Hinweis: Das Unterprogramm wird nicht im Hintergrund bzw. parallel zum Programmfluss ausgeführt, sondern nur unabhängig vom Hauptprogramm aufgerufen. Während der Ausführung wird das Hauptprogramm unterbrochen, daher sollten keine länger dauernde Vorgänge darin stattfinden. Um eine echte Hintergrundverarbeitung zu erreichen, kann dies im Aufruf-Befehl über die asynchrone Programmierung erfolgen.
Das Unterprogramm wird dann ausgeführt, wobei das ggf. noch laufende Skript kurz unterbrochen wird (Interrupt). Nach Abschluss des Unterprogramms mit Zurück arbeitet das Skript dort weiter, wo es unterbrochen wurde. In der Praxis ist es aber meist der Fall, dass ein Skript mit solchen Ereignis-Unterprogrammen mit Warte endlos in Wartestellung geht und nur noch bei entsprechenden Ereignissen "geweckt" wird. Nach Beenden des Unterprogramms geht es dann wieder in die Wartestellung.
Auch einige Befehle können ein Unterprogramm aufrufen, etwa Suche Datei, wenn eine passende Datei gefunden wurde.
Wenn Sie zuerst die Aufruf- oder Datei suchen-Befehle in das Skript setzen und dann die Unterprogramme schreiben möchten, setzen Sie am Ende des Skripts jeweils neue Marken ein. In dem Eingabedialog werden die in den aufrufenden Befehlen vorgegebenen Markenbezeichnungen bereits in der Liste angeboten, so dass Sie sie nur noch anwählen müssen. Danach muss noch ggf. der Zurück-Befehl eingesetzt werden, und das Unterprogramm ist fertig vorbereitet.
Unterprogramme müssen mit dem Befehl Beende Unterprogramm abgeschlossen werden, sofern nicht durch Beende Skript das Programmende ausgelöst wird.
Beispiel Hintergrundaufruf *** Aufruf im Hintergrund-Demo
Anzeige-Fenster 'Uhr', ID='Uhr', Breite=32, Höhe=10
Aufruf Marke 'Uhrzeit' im Hintergrund, Intervall 1, max. 0 mal
Warte Endlos (Warten auf zu behandelnde Ereignisse)
:: Uhrzeit
Setze in [cX.Anzeige.Titel]: '[cX.Zeit]'
Beende Unterprogramm (Zurück)
**cx5AR-LC AAAAAAABAC NUk1PAjEQv Zv4HyZzF_y 4bkkQScAEL 6yukXio24G duG1JbWXl1 9uubBAP4KW dN9N5700z2 bx0vPaD8zO AbBRqHxwNF GX9Lv4pWK2 lUR8t2mPY3 fnXmgQmQMY j5NR4gcOwd GEJrGHCxpN buWDUxR1pi 9A_SjSv7KZ go-wGYaoEP lauI23DgpW vBN5cI0yIV 1XMX10izNi w5i3d2kZgw rI5wMdF74N eI6RzJt37g 9TUqm2JfVL 0Vc6aXFT6h aZprk9ZH2a j7rihMni2Z mSD8f9QL2S SOe0weUP44 -7Eb5J_ko7 lW00IXSSwf O4NTexfUS9 nTzXGrjhOc ruItZfI_Hq KemxU9yQuz H5Hsv5uq74 B64drV14CA AA==*
Hinweis 1: Tritt ein neues Ereignis auf und das entsprechende Unterprogramm wird aufgerufen, während es oder ein anderes noch abgearbeitet wird, kann es zu unerwünschten Ergebnissen kommen. Unterprogramme wie Anzeige_Mausbewegung oder von Aufruf in sehr kurzen Intervallen aufgerufene Unterprogramme sollten daher möglichst kurz sein.
Auch kann in dem Sprungmarken-Befehl die Option Keine rekursiven Aufrufe eingeschaltet werden, die bewirkt, dass ein erneuter Aufruf der Marke, während das Unterprogramm noch läuft, ignoriert wird.
Hinweis 2: In der -Version stehen auch spezielle Zeitgeber (Timer) zur Verfügung, mit denen ebenfalls Hintergrundprozesse realisiert werden können.
Hinweis 3: In der -Version ist sogar möglich, Unterprogramme in einem eigenen Task laufen zu lassen, wodurch dieses parallel (asynchron) läuft und nicht das eigentliche Skript blockiert.
cX-Webseite: http://www.clickexe.net