Ausführen von speziellen Aktionen in bestimmten Intervallen
Das Zeitgeber-Steuerelement ermöglicht es Ihnen, in bestimmten Intervallen Aktionen auszuführen oder Werte zu prüfen.
Verwenden des Zeitgeber-Steuerelements
Zeitgeber-Steuerelemente reagieren auf den Zeitablauf unabhängig vom Benutzerdialog. Daher lassen sich Zeitgeber so programmieren, dass sie in regelmäßigen Intervallen Aktionen ausführen. Eine typische Anwendung ist die Überwachung der Systemuhr, um zu prüfen, ob der Zeitpunkt für die Ausführung eines bestimmten Tasks erreicht ist. Zeitgeber können auch bei anderen Hintergrundprozessen sinnvoll eingesetzt werden.
So zeigen Sie Beispiele für die Verwendung von Zeitgebern an
- Führen Sie Solution.app im Visual FoxPro-Verzeichnis …\Samples\Microsoft Visual FoxPro 7\Solution aus.
- Klicken Sie in der Strukturansicht auf Steuerelemente, und klicken Sie dann auf Zeitgeber.
Jeder Zeitgeber besitzt eine Interval-Eigenschaft, die festlegt, wie viele Millisekunden zwischen einem und dem nächsten Zeitgeberereignis vergehen. Sofern ein Zeitgeber nicht deaktiviert ist, empfängt er kontinuierlich in annähernd gleichen Zeitabständen ein Ereignis (Timer-Ereignis). Wenn Sie einen Zeitgeber programmieren, müssen Sie einige Einschränkungen bei der Interval-Eigenschaft berücksichtigen:
- Das Intervall kann zwischen 0 und 2.147.483.647 einschließlich eingestellt werden. Damit beträgt das längste Intervall ungefähr 596,5 Stunden (mehr als 24 Tage).
- Das Intervall läuft nicht unbedingt exakt zum richtigen Zeitpunkt ab. Um die Genauigkeit sicherzustellen, sollte der Zeitgeber die Systemuhr bei Bedarf prüfen, statt zu versuchen, die akkumulierte Zeit intern zu verfolgen.
- Das System erzeugt 18 Impulse pro Sekunde. Selbst wenn die Interval-Eigenschaft in Millisekunden gemessen wird, beträgt die maximale Genauigkeit eines Intervalls 1/18 Sekunde.
- Wenn Ihre Anwendung oder eine andere Anwendung das System stark beansprucht (z. B. mit langen Schleifen, umfangreichen Berechnungen oder mit Zugriffen auf Datenträger, Netzwerk oder Anschlüsse), erhält Ihre Anwendung Zeitgeberereignisse eventuell nicht so oft, wie in der Interval-Eigenschaft festgelegt wurde.
Einfügen eines Zeitgeber-Steuerelements in einem Formular
Ein Zeitgeber-Steuerelement wird wie jedes andere Steuerelement durch Ziehen in ein Formular eingefügt: Klicken Sie auf der Symbolleiste für Formular-Steuerelemente auf das Zeitgeber-Steuerelement, und ziehen Sie es in das Formular.
Zeitgeber-Steuerelement
Der Zeitgeber wird im Formular zur Entwurfszeit angezeigt, so dass Sie ihn auswählen, seine Eigenschaften anzeigen und eine entsprechende Ereignisprozedur schreiben können. Zur Laufzeit wird ein Zeitgeber nicht angezeigt, und seine Position und Größe sind unwichtig.
Initialisieren eines Zeitgeber-Steuerelements
Ein Zeitgeber-Steuerelement besitzt zwei Haupteigenschaften.
Eigenschaft | Einstellung |
---|---|
Enabled | Wenn der Zeitgeber beim Laden des Formulars starten soll, stellen Sie diese Eigenschaft auf Wahr (.T.) ein. Andernfalls behalten Sie die Einstellung Falsch (.F.) bei. Vielleicht möchten Sie auch, dass ein äußeres Ereignis (wie das Klicken auf eine Befehlsschaltfläche) die Ausführung des Zeitgebers startet. |
Interval | Anzahl der Millisekunden zwischen den Zeitgeberereignissen. |
Die Enabled-Eigenschaft ist beim Zeitgeber anders als bei anderen Objekten. Bei den meisten Objekten legt die Enabled-Eigenschaft fest, ob das Objekt auf ein vom Benutzer verursachtes Ereignis reagieren kann. Beim Zeitgeber-Steuerelement unterbricht die Enabled-Einstellung Falsch (.F.) dessen Ausführung.
Denken Sie daran, dass das Timer-Ereignis periodisch ist. Die Interval-Eigenschaft legt nicht die Zeitdauer, sondern die Häufigkeit fest. Die Länge des Intervalls sollte von der gewünschten Genauigkeit abhängen. Da es ein integriertes Fehlerpotential gibt, stellen Sie das Intervall auf die Hälfte des benötigten Genauigkeitsgrades ein.
Anmerkung Je öfter ein Zeitgeberereignis erzeugt wird, desto mehr Prozessorzeit wird bei der Reaktion auf das Ereignis beansprucht. Dies kann die Gesamtleistung verlangsamen. Stellen Sie deshalb ein besonders kleines Intervall nur bei Bedarf ein.
Reagieren auf das Timer-Ereignis
Wenn das Intervall eines Zeitgeber-Steuerelements abläuft, erzeugt Visual FoxPro das Timer-Ereignis. Normalerweise reagieren Sie auf dieses Ereignis, indem Sie eine allgemeine Bedingung, wie die Systemuhr, prüfen lassen.
Eine Digitaluhr ist eine sehr einfache, doch äußerst zweckmäßige Anwendung, die ein Zeitgeber-Steuerelement enthält. Wenn Sie verstehen, wie diese Anwendung funktioniert, können Sie sie so verbessern, dass sie als Wecker, Stoppuhr oder andere Zeitanzeige eingesetzt werden kann.
Die Digitaluhranwendung umfasst einen Zeitgeber und eine Beschriftung mit einem Rahmen. Zur Entwurfszeit sieht die Anwendung folgendermaßen aus:
Die Digitaluhranwendung
Zur Laufzeit wird der Zeitgeber nicht angezeigt.
Steuerelement (Control) | Eigenschaft | Einstellung |
---|---|---|
LblTime | Caption | |
Timer1 | Interval | 500 (eine halbe Sekunde) |
Timer1 | Enabled | Wahr |
Die einzige Prozedur in dieser Anwendung ist die Timer-Ereignisprozedur:
IF THISFORM.lblTime.Caption != Time()
THISFORM.lblTime.Caption = Time()
ENDIF
Dies entspricht der Regel, dass das Intervall auf die Hälfte des kürzesten Zeitraums einzustellen ist, den Sie unterscheiden möchten (im vorliegenden Fall eine Sekunde). Dies kann dazu führen, dass der Zeitgebercode die Beschriftung mit derselben Zeit zweimal pro Sekunde aktualisiert. Da dies zu einem sichtbaren Flackern führen könnte, testet der Code, ob sich die Zeit von der in der Beschriftung angezeigten unterscheidet, bevor er die Beschriftung ändert.
Siehe auch
Ausführen von speziellen Aktionen in bestimmten Intervallen | Anzeigen von Daten | Verwenden von Steuerelementen | Verbessern der Anzeige von Steuerelementen | Steuerelemente und Objekte