Timer (Zeitgeber-Steuerelement)

Zeitgeber-Steuerelemente reagieren auf den Zeitverlauf. Sie sind vom Benutzer unabhängig, und Sie können Zeitgeber-Steuerelement so programmieren, dass Aktionen in regelmäßigen Intervallen durchgeführt werden. Eine typische Reaktion eines solchen Steuerelements besteht im Überprüfen der Systemuhr, um festzustellen, ob der Zeitpunkt zur Durchführung einer bestimmten Aufgabe gekommen ist. Zeitgeber sind auch bei anderen Arten von Verarbeitungen von Hintergrundaufgaben hilfreich.

 Abbildung:   Das Zeitgeber-Steuerelement

Jedes Zeitgeber-Steuerelement enthält eine Interval-Eigenschaft, die die Anzahl der Millisekunden zwischen zwei Timer-Ereignissen angibt. Solange der Zeitgeber aktiviert ist, erhält er weiterhin ein Ereignis (das als Timer-Ereignis bezeichnet wird) in ungefähr gleichen Zeitabständen.

Für die Interval-Eigenschaft gelten einige wenige Einschränkungen, die bei der Programmierung eines Zeitgeber-Steuerelements berücksichtigt werden sollten:

·     Falls Ihre oder eine andere Anwendung die Systemressourcen stark beansprucht - z.B. durch lange Schleifen, intensive Berechnungen oder Laufwerk-, Netzwerk- oder Anschlusszugriffe - erhält Ihre Anwendung möglicherweise nicht so oft Timer-Ereignisse, wie in der Interval-Eigenschaft angegeben wurden.

·     Das Intervall kann zwischen 0 und 65.535 (einschließlich) liegen, was bedeutet, dass sogar das längste Intervall nicht viel länger als eine Minute sein kann (ungefähr 65,5 Sekunden).

·     Es ist nicht sicher, dass das Intervall genau zu der angegebenen Zeit abläuft. Um größtmögliche Genauigkeit sicherzustellen, sollte der Zeitgeber die Systemuhr je nach Bedarf überprüfen, anstatt intern die abgelaufene Zeit zu addieren.

·     Das System generiert 18 Zeitgebereinheiten pro Sekunde. Dies bedeutet, dass die Genauigkeit eines Intervalls nicht größer als einachtzehntel einer Sekunde sein kann, obwohl die Interval-Eigenschaft in Millisekunden gemessen wird.

Jedes Zeitgeber-Steuerelement muss mit einem Formular verknüpft werden. Daher müssen Sie zum Erstellen einer Zeitgeber-Anwendung mindestens ein Formular erstellen (das Formular muss jedoch nicht sichtbar sein, falls Sie es nicht benötigen).

Anmerkung   Das Wort "Zeitgeber" wird in Visual Basic in mehreren Kontexten verwendet, wobei jeder Kontext eng mit der Funktionsweise des Zeitgeber-Steuerelements zusammenhängt. Neben dem Steuerelementnamen und dem Steuerelement­typ wird der Begriff "Zeitgeber" im Timer-Ereignis und in der Timer-Funktion verwenden (engl. Timer = Zeitgeber). 

Beispielanwendung: Alarm.vbp

Techniken zum Einsetzen des Zeitgeber-Steuerelements können Sie anhand der Beispielanwendung Alarm (Alarm.vbp) nachvollziehen. Wenn Sie die Beispiel­anwendungen installiert haben, finden Sie diese Anwendung im Unterverzeichnis \Alarm des Hauptverzeichnisses von Visual Basic (\VB\Samples\Pguide).

Positionieren eines Zeitgeber-Steuerelements in einem Formular

Das Positionieren eines Zeitgeber-Steuerelements in einem Formular funktioniert ähnlich wie das Zeichnen anderer Steuerelemente: Klicken Sie in der Werkzeugsammlung auf die Zeitgeber-Schaltfläche, und ziehen Sie das Zeitgeber-Steuerelement in ein Formular.

Der Zeitgeber wird in dem Formular nur zur Entwurfszeit angezeigt, so dass Sie das Steuerelement auswählen, die Eigenschaften des Steuerelements einsehen und eine Ereignisprozedur für das Steuerelement schreiben können. Zur Laufzeit ist ein Zeitgeber-Steuerelement nicht sichtbar und seine Position und Größe sind ohne Bedeutung.

Initialisieren eines Zeitgeber-Steuerelements

Ein Zeitgeber-Steuerelement hat zwei Haupteigenschaften.

Eigenschaft

Einstellung

Enabled

Wenn das Zeitgeber-Steuerelement arbeiten soll, sobald das Formular geladen wird, setzen Sie diese Eigenschaft auf True. Andernfalls lassen Sie die Eigenschaft auf False gesetzt. Sie können wählen, ob ein externes Ereignis (z.B. das Klicken auf eine Befehlsschaltfläche) die Arbeit des Zeitgebers startet.

Interval

Anzahl von Millisekunden zwischen Timer-Ereignissen. 

Beachten Sie, dass sich die Enabled-Eigenschaft für das Zeitgeber-Steuerelement von der Enabled-Eigenschaft für andere Objekte unterscheidet. Bei den meisten Objekten bestimmt die Enabled-Eigenschaft, ob das Objekt auf ein vom Benutzer verursachtes Ereignis reagieren kann. Beim Zeitgeber-Steuerelement (Timer) können Sie die Funktion des Zeitgebers durch Festlegen der Enabled-Eigenschaft auf False unterbrechen.

Beachten Sie, dass das Timer-Ereignis periodisch ist. Die Interval-Eigenschaft legt nicht fest, "wie lange" das Intervall dauert, sondern bestimmt, "wie häufig" das Intervall auftritt. Die Länge des Intervalls sollte von der Genauigkeit abhängen, die Sie wünschen. Da Fehler auf Programm-Seite auftreten können, sollte das Intervall der Hälfte des Zeitabstands entsprechen, der genau gewünscht wird.

Anmerkung   Je häufiger ein Timer-Ereignis ausgelöst wird, desto mehr Prozessorzeit wird zum Reagieren auf das Ereignis benötigt. Dies kann die Gesamtleistung verlangsamen. Sie sollten deshalb kein ausgesprochen kleines Intervall festlegen, wenn Sie es nicht benötigen.

Anwendungsbeispiel für das Timer-Steuerelement: Reagieren auf das Timer-Ereignis

Wenn das Intervall eines Zeitgeber-Steuerelements verstreicht, löst Visual Basic das Timer-Ereignis aus. In der Regel reagieren Sie auf dieses Ereignis, indem Sie eine allgemeine Bedingung überprüfen, wie z.B. die Systemuhr.

Eine digitale Uhr ist eine sehr einfache, aber sinnvolle Anwendung, die das Zeitgeber-Steuerelement nutzt. Sobald Sie verstehen, wie die Anwendung funktioniert, können Sie die Anwendung erweitern, so dass Sie den Zeitgeber als Wecker, Stoppuhr oder anderes Gerät zur Zeiterfassung verwenden können.

Die Anwendung Digitale Uhr enthält einen Zeitgeber und ein Bezeichnungsfeld mit einem Rahmen. Zur Entwurfs­zeit sieht die Anwendung wie in Abbildung 30 gezeigt aus.

 Abbildung 30   Die Anwendung "Digitale Uhr"

Zur Laufzeit ist der Zeitgeber nicht sichtbar. Die folgende Tabelle listet die Eigenschafteneinstellungen für die Anwendung "Digitale Uhr" auf.

Steuerelement

Eigenschaft

Einstellung

Label1

BorderStyle

Fest Einfach

Timer1

Interval

500 (eine halbe Sekunde)

Timer1

Enabled

True

Eine Ereignisprozedur für den Zeitgeber ist die einzige Prozedur in dieser Anwendung:

Private Sub Timer1_Timer ()

   If lblTime.Caption <> CStr(Time) Then

      lblTime.Caption = Time

   End If

End Sub

Die Prozedur zeigt die Systemzeit an, indem die integrierte Time-Funktion aufgerufen wird. Diese Funktion gibt einen Wert vom Typ Variant zurück, der die aktuelle Uhrzeit als Datum/Uhrzeit-Wert (VarType 7) enthält. Wenn Sie diesen Wert einer Zeichenfolgenvariable oder einer Eigenschaft (z.B. der Caption-Eigenschaft) zuweisen, wandelt Visual Basic den Wert in einer Zeichenfolge unter Verwendung des in der Systemsteuerung festgelegten Zeitformats um. (Wenn Uhrzeit in anderem Format angezeigt werden soll, bitte Format-Funktion verwenden.)

Die Interval-Eigenschaft für den Zeitgeber ist auf 500 gesetzt. Dies entspricht der Regel, dass das Intervall auf die Hälfte der gewünschten Zeitperiode gesetzt werden soll (eine Sekunde in diesem Fall). Die Einstellung kann bewirken, dass der Zeitgeber-Code das Bezeichnungsfeld zweimal mit derselben Uhrzeit innerhalb einer Sekunde aktualisiert. Da dies überflüssig ist und zu sichtbarem Flimmern führen kann, überprüft der Code erst, ob die Uhr­zeit sich von der im Bezeichnungsfeld angezeigten Uhrzeit unterscheidet, bevor die Beschriftung geändert wird.

Sie können das Aussehen der digitalen Uhr ändern, ohne zusätzliche Anweisungen schreiben zu müssen. So können Sie beispielsweise eine andere Schriftart für das Bezeichnungsfeld auswählen oder die BorderStyle-Eigenschaft des Formulars ändern.