Wir bauen ein Tool mit Visual Basic, das … (Teil 2)

Nachdem die Arbeit für die graphische Gestaltung der Anwendung fertiggestellt ist beschäftigen wir uns nun mit dem Erstellen des entsprechenden Programmcodes für das Tool. Dabei möchte ich zuerst auf zwei interessante Objekte in Visual Basic eingehen: Das Timer-Objekt und das Webbrowser-Objekt. Beide Objekte werden in unserem Timer-Tool mit einigen ihren grundlegenden Eigenschaften verwendet.

Das Timer-Objekt

Das Timer Objekt soll bestimmte Aufgaben durchführen, nachdem ein definierter Zeitraum vergangen ist. In unserem Fall ist das Timer-Objekt ein wesentlicher Bestandteil der Anwendung, wobei das Timer-Objekt hautpsächlich auch für Hintergrundaufgaben benutzt wird. Während das Timer-Objekt aktiv ist, überprüft es immer wieder die Systemuhr, ob der Zeitpunkt gekommen ist, eine bestimmte Aktion auszuführen. In unserem Tool soll es eine Internetseite nach einer bestimmten Anzahl von Sekunden aktualisieren, und die Seite im Web Browserobjekt aktuell darstellen. Die Einstellungen des Zeitintervalls für ein Zeitgeber-Steuerelement wird mit der Intervall-Eigenschaft vorgenommen. Der Wertebereich eines Zeitgeber-Intervalls liegt zwischen 0 und 65535, dabei ist ein Intervall von 1 entsprechend einer Millisekunde (=eine Tausendstel Sekunde).  Dabei zu beachten ist, dass das System nur 18 Einheiten pro Sekunde erzeugt, um die Intervalle zu messen. Somit ergibt sich eine Genauigkeit von einer achtzehntel Sekunde obwohl das Zeitgeber-Element mit Millisekunden arbeitet. Zusammengefasst gesagt, kann ein Timer-Objekt einen Intervall von ein wenig über einer Minute mit einer Genauigkeit einer achtzehntel Sekunde messen. Die zwei Haupteigenschaften dieses Steuerelements sind „Enabled“ und „Interval“. Die Eigenschaft „Enabled“ muss auf „True“ gesetzt sein, damit das Objekt aktiv wird. Die Interval-Eigenschaft enthält die Anzahl von Millisekunden für den festzustellenden Zeitraum. Bitte beachten Sie, dass je kleiner der Zeitintervall desto größer die Prozessorauslastung. Man sollte es also vermeiden, sehr kleine Zeitintervalle zu verwenden, wenn man dies nicht unbedingt braucht. Und ein Letztes zum Zeitgeber-Steuerelement: Es muss in ein Formular eingebunden sein und ist meist als Standardobjekt in der Visual Basic Toolbox vorhanden. Wählen Sie also bitte das Timer-Objekt und zeichnen Sie es in das Formular Form1.

Das Webbrowser-Objekt

Kommen wir zum zweiten Objekt das wir für unser Tool verwenden: Das Webbrowserobjekt. Das Objekt wird in unserem Tool dazu verwendet eine Webseite anzuzeigen und zu aktualisieren. Neben der Möglichkeit Internetseiten anzuzeigen, zu navigieren oder Dateien aus dem Internet zu downloaden, lassen sich mit dem Webbrowser auch die meisten Office Dateien anzeigen, also zum Beispiel Powerpoint-Präsentation oder Excel-Tabellen, auch PDF-Dokumente oder gar der Inhalt des aktuellen Windows-Desktop. Damit ist das Webbrowser-Objekt ein nützlicher Helfer beim Programmieren, wenn man vermeiden möchte bestimmte Arbeitsabläufe durch Hin- und Herwechseln unter verschiedenen Applikationen zu unterbrechen.

Wie bindet man nun das Webbrowser-Objekt in die Anwendung ein?

Gehen Sie in der Symbolleiste auf das Symbol für „Werkzeugsammlung“, und klicken Sie mit der rechten Maustaste in die Werkzeugsammlung und wählen dann „Komponenten“. Danach öffnet sich ein neues Fenster mit den Komponenten. Im Bereich „Steuerelemente“ aktivieren Sie dann das Kästchen bei „Internet Controls“. Schliessen Sie das Fenster mit Klick auf „OK“. Jetzt enthält die Toolbox das neue Objekt „Webbrowser“.  Wählen Sie also das Webbrowser- Objekt und zeichnen Sie es in das Form1-Formular und das Form2-Formular. Damit Sie das Webbrowser-Objekt auch zu Verfügung haben, muss natütlich der Internet-Explorer an Ihrem PC installiert sein.

Das Webbrowser Objekt – Methode Navigate

Damit nun Webseiten oder andere Dokumente im Webbrowser-Objekt in der Anwendung angezeigt werden können müssen Sie die Navigate-Methode benutzen. Die entsprechende Synthax dazu ist z.B. „Webbrowser1.Navigate „URL“. Der Ausdruck „URL“ steht hier für eine Textvariable, die die genaue URL zur Webseite enthält. In unserem Tool möchten wir, dass der Anwender die Url der Webseite per Hand angibt. Wir werden daher später dazu das Text2-Objekt verwenden. Zeigt die URL auf ein Dokument und nicht auf eine Webseite, werden Sie analog zum Internet-Explorer dazu aufgefordert die Datei zu „Öffnen“ oder zu „Speichern“. Als Url käme auch eine lokale Pfadangabe zu Ihrem PC infrage. Zum Schluss sei hier erwähnt, dass das Webbrowser-Objekt nahezu alle Operationen analog zu dem an Ihrem PC installierten Internet-Explorer ausführen kann. Wenn Sie eine Übersicht aller Eigenschaften, Methoden und Ereignisse zum Internet-Explorer haben möchten, wechseln Sie bitte in Visual Basic zur Objektansicht im Projektexplorer und klicken einmal auf das Webbrowser-Objekt in Ihrem Formular. Danach klicken Sie bitte auf den Button für „Objektkatalog“ in der Symbolleiste. Danach wählen Sie das entsprechende Objekt „Webbrowser“ aus und Sie erhalten eine Menge an Information zu diesem Objekt.

Sie haben jetzt einen groben Überblich über die von uns verwendeten Hauptobjekte im Tool erhalten, Timer- und Webbrowserobjekt. Damit unsere Anwendung jetzt über die Oberfläche arbeiten kann, müssen wir Code hinterlegen, der es ermöglicht, dem Webbrowser eine URL zu überliefern und dem Timerobjekt ein Zeitintervall zuzuordnen.  Beginnen wir mit dem Setzen des Zeitintervalls für das Timerobjekt. Das Zeitintervall in Sekunden soll in die TextBox1 eingetragen werden. Beim Drücken des Buttons Command1 („Start“) muss also der Inhalt der Textbox auf die Intervall-Eigenschaft übertragen werden. Um in den entsprechenden Teil des Programm-Codes zu gelangen der das Klicken des Command1-Buttons Code enthält, führen Sie einfach einen Doppelklick auf den Command1-Button aus. Der Programm-Abschnitt beginnt mit „Private Sub Command1_Click()“. Zuerst soll eine Prüfung auf den Inhalt der Text1-Box erfolgen. Wenn die Text1-Box leer ist soll ein kleines Fenster erscheinen mit einem Hinweis. Die Prüfung erfolgt über eine If-Schleife. Geben Sie also den folgenden Code im Abschnitt ein:

If Text1.Text = „“ Then
Msgbox(„Bitte geben Sie einen Intervall in Sekunden ein.“)
Exit Sub
End if

Sollte also kein Text in der Text1-Box eingegeben sein erscheint am Bildschirm ein Fenster mit obigen Inhalt. Das Ausführen des dann folgenden Programm-Codes wird abgeschlossen bzw. unterbrochen durch den Befehl „Exit Sub“, was so viel wie „verlasse diesen Abschnitt“ bedeutet.

Als nächstes soll eine zweite Prüfung stattfinden. Es soll geprüft werden ob der eingegebene Intervall einen Wert zwischen 0 und 60 hat – wir wollen nämlich nur Intervalle von 1 bis 60 Sekunden verwenden. Demnach fügen Sie bitte eine weitere If-Schleife hinzu:

If Val(Text1.Text) > 60 Or Val(Text1.Text) = 0 Then
Msgbox(„Bitte geben Sie einen Sekundenintervall von 1 bis 60 ein.“)
Text1.Text = „“
Exit Sub
End Sub

Sollten bei Text1 Buchstaben oder andere Zeichen ausser Zahlen eingegeben worden sein würde der entsprechende Wert (im Sinne von Zahlenwert) der Text1-Box 0 sein. Daher erfolgt die Prüfung des Text1.Text auf „Val“ von (Text1.Text), d.h. Value (=Wert) von Text1. Text.

Ist der Wert also 0 oder grösser als 60 erfolgt dementsprechend wieder eine Meldung am Bildschirm. Der Abschnitt wird durch „Exit Sub“ verlassen und der Inhalt des Text1.Text wird gelöscht (Text1.Text = „“).

Eine ähnlicher Check muss auch für das zweite Textfeld erfolgen indem die URL eingetragen werden soll. Zum Überprüfen des Inhalts der zweiten Textbox geben Sie dann bitte diesen Code ein:

If Text2.Text = „“ Thens
MsgBox („Bitte geben Sie eine Url ein.“)
Exit Sub
End If

Ist also ein gültiger Wert für den Zeitintervall und eine Angabe für die Url eingegeben worden setzen Sie zunächst den Timer auf aktiv, danach definieren Sie die Intervall-Eigenschaft. Dazu geben Sie bitte diese zwei neuen Zeile nach den drei If-Schleifen ein:

Timer1.Enabled = True
Timer1.Interval = Val(Text1.Text) * 1000

Das Zeitgeberobjekt wird aktiviert und der Intervall wird mit der Multiplikation mit Tausend auf volle Sekunden gesetzt. Jetzt müssen die Navigate-Methoden der Webbrowserobjekte in Form1 und Form2 gesetzt werden. Dies erledigen wir in einem separaten Sub-Abschnitt mit dem Namen „refresh“. Geben Sie dazu nach den drei If-Schleifen (nach dem „End Sub“ des Abschnitts Command1_Click…) folgenden Code ein:

Public Sub refresh()
Webbrowser1.Navigate Text2.Text
Webbrowser1.Visible = True
Form2.Webbrowser1.Navigate Text2.Text
Form2.Webbrowser2.Visible = True
End Sub

Mit Public Sub refresh erzeugen wir einen neuen Programmabschnitt. Das Webbrowser-Objekt in der Form1 und in der Form2 wird auf „visible“ (=sichtbar) gesetzt und die Navigate-Methode enthält die Url, hier den Inhalt aus unserem Text2.Text. Das „End Sub“ wird automatisch generiert.

Das, was der Timer jetzt nach einer selbstdefinierten Zeitperiode erledigen muss wird in einer separaten Routine codiert. Damit Sie in den entsprechende Abschnitt zum Code für das Timerobjekt gelangen müssen Sie einen Doppelklick auf das in Ihrem Formular gezeichneten Timer-Objekts ausführen. Danach gelangen Sie im Code-Editor in den folgenden Bereich:

Private Sub Timer1_Timer()
refresh
End Sub

Der Timer soll also alle x Sekunden den Vorgang im Abschnitt „refresh“ ausführen, d.h. die Anzeige der Url im Webbrowser erneuern. Das Kernstück unseres Tools ist also fertig.

Zum Schluss hinterlegen wir noch die Aktionen, die ausgeführt werden sollen, wenn die Buttons „Fullscreen“, „Interrupt“ und „Exit“ gedrückt werden. Wie vorher schon erwähnt, gelangen Sie mit einem Doppelklick auf den Button in den entsprechenden Code-Abschnitt zum Button.

Für den Button „Fullscreen“ hinterlegen Sie bitte den folgenden Code:

Form2.Visible = True
Form1.Visible = False

Das erste Fenster (Formular) wird unsichtbar und das zweite Fenster (Formular 2, Form2) wird sichtbar. Dieses zeigt den Webbrowser im Vollbildmodus. Dazu muss natürlich das Webbrowser-Objekt im zweiten Formular auch dementsprechend in seiner Größe gezeichnet worden sein. An dieser Stelle zeichnen Sie bitte im Formular2 auch einen kleinen Button, mit dem es möglich ist, wieder in das erste Fenster zu wechseln. Der Code dieses Buttons dürfte jetzt klar sein.

Um eine aktive Webseiten-Aktualisierung zu unterbrechen hinterlegen Sie bitte den folgenden Code für den Button „Interrupt“:

MsgBox („Die Aktualisierung ist unterbrochen. Bitte drücken Sie Start um die Aktualisierung fortzusetzen“)
Timer1.Enabled = False

Die Funktion des Zeitgebersteuerelements wird deaktiviert durch Setzen der Eigenschaft „enabled = False“.

Um das Programm zu beenden ist folgender Code für den Button „Exit“ zu schreiben:

Form1.Visible = False
Form2.Visible = False
Unload Form2
Unload Form1

Am Ende erstellen Sie aus dem ganzen ein eigenständiges ausführbares (.exe) Programm. Dazu gehen Sie einfach in das Menü „Datei“ und …“.exe“ erstellen. Das Programm können Sie dadurch weitergeben. Bitte beachten Sie dass bei jeder Änderung des Programmes die .exe neu geschrieben werden muss, wenn die Änderungen nachvollzogen werden sollen.

Ich hoffe die obige Beschreibung ist nicht allzu kompliziert gewesen und hat Ihre Fantasie angeregt für neue Ideen beim Umgang mit Visual Basic.