
Ziel dieser Übung ist es, in Visual Basic-Programme einige Zusatz-Steuerelemente einzubinden, und eine einfache Anwendung zu schreiben, die die Einsatzmöglichkeiten dieser Zusatzsteuerelemente zeigt. Am Ende dieser Übung sollten Sie folgendes beherrschen:
In dieser Übung kommen drei Zusatz-Steuerelemente zur Anwendung, die zunächst zur Werkzeugsammlung hinzugefügt werden müssen. Wählen Sie dafür die Menüoption Zusatzsteuerelemente... im Menü Extras. Kreuzen sie in der Liste die Einträge Alarm Control, Rotated Text Control und Screen Control an, und verlassen Sie dieses Dialogfenster durch Clicken auf OK. Jetzt erscheinen in der Werkzeugsammlung folgende drei Symbole:
| Symbol | Bezeichnung |
|---|---|
![]() |
Wecker-Steuerelement |
![]() |
Rotationstext-Steuerelement |
![]() |
Bildschirm-Steuerelement |
Sollten in der Liste der Zusatzsteuerelemente diese Steuerelemente nicht aufscheinen, clicken Sie auf die Schaltfläche Durchsuchen..., und wählen sie im Windows-Systemverzeichnis die Dateien Alarm.ocx, Screen.ocx und RText.ocx nacheinander aus.
Erstellen Sie eine Form und fügen Sie die Steuerelemente hinzu, so wie diese anschließend beschrieben sind. Die Oberfläche wird dann aussehen wie folgt:

| Objekt | Eigenschaft | Einstellung |
|---|---|---|
| Form | BackColor | &H00000000& |
| Caption | Zusatz-Steuerelemente | |
| Height | 4545 | |
| Left | 1530 | |
| Name | Form1 | |
| Top | 2550 | |
| Width | 10605 | |
| Linie | BorderColor | &H00FFFFFF& |
| Name | Line1 | |
| X1 | 3840 | |
| X2 | 3840 | |
| Y1 | 120 | |
| Y2 | 3960 | |
| Horizontale Bildlaufleiste | Height | 255 |
| Left | 120 | |
| Max | 360 | |
| Min | 0 | |
| Name | hscWinkel | |
| Top | 3480 | |
| Width | 3615 | |
| Rotationstext | BackColor | &H00000000& |
| Caption | Winkel = 000 Grad | |
| Font | Verdana, 14pt | |
| ForeColor | &H00FFFFFF& | |
| Height | 2880 | |
| Left | 120 | |
| Name | rtxWinkel | |
| Top | 120 | |
| Width | 2880 | |
| Wecker | Left | 5280 |
| Name | Alarm1 | |
| Top | 2280 | |
| Linie | BorderColor | &H00FFFFFF& |
| Name | Line2 | |
| X1 | 6840 | |
| X2 | 6840 | |
| Y1 | 120 | |
| Y2 | 3960 | |
| Kontrollkästchen | BackColor | &H00000000& |
| Caption | Alarmfunktion aktivieren | |
| ForeColor | &H00FFFFFF& | |
| Height | 375 | |
| Left | 4680 | |
| Name | chkAktivieren | |
| Top | 1320 | |
| Value | 0 - Unchecked | |
| Width | 1335 | |
| Bezeichnungsfeld | Alignment | 2 - Center |
| BackColor | &H00000000& | |
| Caption | 00-09 | |
| Font | Verdana, 14pt | |
| ForeColor | &H00FFFF00& | |
| Height | 375 | |
| Left | 3960 | |
| Name | lbl0009 | |
| Top | 120 | |
| Visible | False | |
| Width | 855 | |
| Bezeichnungsfeld | Alignment | 2 - Center |
| BackColor | &H00000000& | |
| Caption | 10-19 | |
| Font | Verdana, 14pt | |
| ForeColor | &H000000FF& | |
| Height | 375 | |
| Left | 4920 | |
| Name | lbl1019 | |
| Top | 120 | |
| Visible | False | |
| Width | 855 | |
| Bezeichnungsfeld | Alignment | 2 - Center |
| BackColor | &H00000000& | |
| Caption | 20-29 | |
| Font | Verdana, 14pt | |
| ForeColor | &H0000FFFF& | |
| Height | 375 | |
| Left | 5880 | |
| Name | lbl2029 | |
| Top | 120 | |
| Visible | False | |
| Width | 855 | |
| Bezeichnungsfeld | Alignment | 2 - Center |
| BackColor | &H00000000& | |
| Caption | 30-39 | |
| Font | Verdana, 14pt | |
| ForeColor | &H00000080& | |
| Height | 375 | |
| Left | 3960 | |
| Name | lbl3039 | |
| Top | 600 | |
| Visible | False | |
| Width | 855 | |
| Bezeichnungsfeld | Alignment | 2 - Center |
| BackColor | &H00000000& | |
| Caption | 40-49 | |
| Font | Verdana, 14pt | |
| ForeColor | &H0000FF00& | |
| Height | 375 | |
| Left | 4920 | |
| Name | lbl4049 | |
| Top | 600 | |
| Visible | False | |
| Width | 855 | |
| Bezeichnungsfeld | Alignment | 2 - Center |
| BackColor | &H00000000& | |
| Caption | 50-59 | |
| Font | Verdana, 14pt | |
| ForeColor | &H00C0C0C0& | |
| Height | 375 | |
| Left | 5880 | |
| Name | lbl5059 | |
| Top | 600 | |
| Visible | False | |
| Width | 855 | |
| Befehlsschaltfläche | Caption | Be&enden |
| Height | 495 | |
| Left | 4800 | |
| Name | cmdBeenden | |
| Top | 3360 | |
| Width | 1215 | |
| Bezeichnungsfeld | Alignment | 2 - Center |
| BackColor | &H00000000& | |
| Font | Verdana, 14pt | |
| ForeColor | &H00FFFFFF& | |
| Height | 375 | |
| Left | 7080 | |
| Name | lblLinks | |
| Top | 1080 | |
| Width | 855 | |
| Bezeichnungsfeld | Alignment | 2 - Center |
| BackColor | &H00000000& | |
| Font | Verdana, 14pt | |
| ForeColor | &H00FFFFFF& | |
| Height | 375 | |
| Left | 9360 | |
| Name | lblRechts | |
| Top | 1620 | |
| Width | 855 | |
| Bezeichnungsfeld | Alignment | 2 - Center |
| BackColor | &H00000000& | |
| Font | Verdana, 14pt | |
| ForeColor | &H00FFFFFF& | |
| Height | 375 | |
| Left | 7560 | |
| Name | lblOben | |
| Top | 120 | |
| Width | 855 | |
| Bezeichnungsfeld | Alignment | 2 - Center |
| BackColor | &H00000000& | |
| Font | Verdana, 14pt | |
| ForeColor | &H00FFFFFF& | |
| Height | 375 | |
| Left | 8880 | |
| Name | lblUnten | |
| Top | 2880 | |
| Width | 855 | |
| Horizontale Bildlaufleiste | Height | 255 |
| Left | 7080 | |
| Max | 100 | |
| Name | hscLinks | |
| Top | 1560 | |
| Width | 1335 | |
| Horizontale Bildlaufleiste | Height | 255 |
| Left | 8880 | |
| Max | 100 | |
| Name | hscRechts | |
| Top | 1560 | |
| Width | 1335 | |
| Vertikale Bildlaufleiste | Height | 1335 |
| Left | 8520 | |
| Max | 100 | |
| Name | vscOben | |
| Top | 120 | |
| Width | 255 | |
| Vertikale Bildlaufleiste | Height | 1335 |
| Left | 8520 | |
| Max | 100 | |
| Name | vscUnten | |
| Top | 1920 | |
| Width | 255 | |
| Befehlsschaltfläche | Caption | Farben invertieren |
| Height | 495 | |
| Left | 7200 | |
| Name | cmdFarbenInv | |
| Top | 3360 | |
| Width | 1215 | |
| Bildschirm-Steuerelement | Left | 9480 |
| Name | Screen1 | |
| Top | 600 |
Dim WeckZeit1 Dim WeckZeit0 Dim FarbWert(6) Dim BildSchirmBreite Dim BildSchirmHöhe
Hier werden Variablen deklariert, dessen Reichweite über den lokalen Bereich hinausgehen muß.
Private Sub Form_Load()
Alarm1.Alarm(0) = "20000803183900" ' Beispielzeit kann nach Belieben geändert werden.
Alarm1.Alarm(1) = "20000803184020"
Alarm1.Alarm(10) = "????????????10" ' Geschieht minütlich, jeweils zur Sekunde 10.
Alarm1.Alarm(20) = "????????????20"
Alarm1.Alarm(30) = "????????????30"
Alarm1.Alarm(40) = "????????????40"
Alarm1.Alarm(50) = "????????????50"
Alarm1.Alarm(60) = "????????????00"
FarbWert(0) = &HFFFFFF
FarbWert(1) = &HFF&
FarbWert(2) = &HFFFF&
FarbWert(3) = &H80&
FarbWert(4) = &HFF00&
FarbWert(5) = &HC0C0C0
FarbWert(6) = &HFFFF00
Rem Da das Bildschirm-Steuerelement das VB eigene Screen-Objekt
Rem außer Kraft setzt, müssen die folgenden Variablen
Rem entsprechend der eigenen Bildschirmgröße angepaßt werden.
Rem (Die Anweisungen BildSchirmHöhe = Screen.Height und
Rem BilSchirmBreite = Screen.Width sind nicht durchführbar.)
BildSchirmHöhe = 768
BildSchirmBreite = 1024
hscLinks.Min = 0
hscLinks.Max = Fix(BildSchirmBreite / 2)
hscLinks.Value = Fix(BildSchirmBreite / 4)
lblLinks.Caption = hscLinks.Value
hscRechts.Min = Fix(BildSchirmBreite / 2) + 1
hscRechts.Max = BildSchirmBreite - 1
hscRechts.Value = Fix(BildSchirmBreite * 3 / 4)
lblRechts.Caption = hscRechts.Value
vscOben.Min = 0
vscOben.Max = Fix(BildSchirmHöhe / 2)
vscOben.Value = Fix(BildSchirmHöhe / 4)
lblOben.Caption = vscOben.Value
vscUnten.Min = Fix(BildSchirmHöhe / 2) + 1
vscUnten.Max = BildSchirmHöhe - 1
vscUnten.Value = Fix(BildSchirmHöhe * 3 / 4)
lblUnten.Caption = vscUnten.Value
End Sub
Sowohl im Scroll- als auch im Change-Ereignis muß folgender Code eingetragen werden. Dadurch wird bewirkt, daß sich der Text im Rotationstext-Steuerelement dreht, und stets den aktuellen Winkel in seinem Text mitanzeigt.
Private Sub hscWinkel_Change()
rtxWinkel.Angle = hscWinkel.Value
rtxWinkel.Caption = "Winkel = " & Format(hscWinkel.Value, "000") & " Grad"
End Sub
Private Sub Alarm1_Alarm(ByVal Index As Integer, ByVal CurrentTime As String)
If chkAktivieren.Value = Checked Then
If Index = 10 Then
lbl0009.Visible = False
lbl1019.Visible = True
End If
If Index = 20 Then
lbl1019.Visible = False
lbl2029.Visible = True
End If
If Index = 30 Then
lbl2029.Visible = False
lbl3039.Visible = True
End If
If Index = 40 Then
lbl3039.Visible = False
lbl4049.Visible = True
End If
If Index = 50 Then
lbl4049.Visible = False
lbl5059.Visible = True
End If
If Index = 60 Then
lbl5059.Visible = False
lbl0009.Visible = True
End If
Line1.BorderColor = FarbWert(Index / 10)
Line2.BorderColor = FarbWert(Index / 10)
chkAktivieren.ForeColor = FarbWert(Index / 10)
rtxWinkel.ForeColor = FarbWert(Index / 10)
lblOben.ForeColor = FarbWert(Index / 10)
lblUnten.ForeColor = FarbWert(Index / 10)
lblRechts.ForeColor = FarbWert(Index / 10)
lblLinks.ForeColor = FarbWert(Index / 10)
Else
Line1.BorderColor = &HFFFFFF
Line2.BorderColor = &HFFFFFF
chkAktivieren.ForeColor = &HFFFFFF
rtxWinkel.ForeColor = &HFFFFFF
lblOben.ForeColor = &HFFFFFF
lblUnten.ForeColor = &HFFFFFF
lblRechts.ForeColor = &HFFFFFF
lblLinks.ForeColor = &HFFFFFF
lbl0009.Visible = False
lbl1019.Visible = False
lbl2029.Visible = False
lbl3039.Visible = False
lbl4049.Visible = False
lbl5059.Visible = False
End If
End Sub
Wenn die Weckfunktion aktiviert ist (chkAktivieren.Value = Checked), dann werden jeweils im Zehn-Sekunden-Takt Bezeichnungsfelder mit dem aktuellen Sekundenbereich eingeblendet. Zusätzlich dazu werden die Farben aller Bezeichnungsfelder entsprechend der Farbe des Bezeichnungsfeldes mit dem aktuellen Sekundenbereich angepaßt.
Private Sub chkAktivieren_Click()
If chkAktivieren.Value = Checked Then
chkAktivieren.Caption = "Alarmfunktion ist aktiviert"
Else
chkAktivieren.Caption = "Alarmfunktion aktivieren"
Line1.BorderColor = &HFFFFFF
Line2.BorderColor = &HFFFFFF
rtxWinkel.ForeColor = &HFFFFFF
lbl0009.Visible = False
lbl1019.Visible = False
lbl2029.Visible = False
lbl3039.Visible = False
lbl4049.Visible = False
lbl5059.Visible = False
chkAktivieren.ForeColor = &HFFFFFF
lblOben.ForeColor = &HFFFFFF
lblUnten.ForeColor = &HFFFFFF
lblRechts.ForeColor = &HFFFFFF
lblLinks.ForeColor = &HFFFFFF
End If
End Sub
Private Sub cmdBeenden_Click()
End
End Sub
Sowohl im Scroll- als auch im Change-Ereignis muß folgender Code eingetragen werden. Diese und die folgenden drei Bildlaufleisten legen den Bereich fest, innerhalb dem auf dem Bildschirm die Farben invertiert werden sollen.
Private Sub hscLinks_Change()
lblLinks.Caption = hscLinks.Value
End Sub
Sowohl im Scroll- als auch im Change-Ereignis muß folgender Code eingetragen werden.
Private Sub hscRechts_Change()
lblRechts.Caption = hscRechts.Value
End Sub
Sowohl im Scroll- als auch im Change-Ereignis muß folgender Code eingetragen werden.
Private Sub vscOben_Change()
lblOben.Caption = vscOben.Value
End Sub
Sowohl im Scroll- als auch im Change-Ereignis muß folgender Code eingetragen werden.
Private Sub vscUnten_Change()
lblUnten.Caption = vscUnten.Value
End Sub
Private Sub cmdFarbenInv_Click()
Dim Rot As Long
Dim Blau As Long
Dim Grün As Long
Dim Farbe As Long
For X = hscLinks.Value To hscRechts.Value
For Y = vscOben.Value To vscUnten.Value
Farbe = Screen1.Pixel(X, Y)
Rot = 255 - Fix(Farbe / 65536)
HilfeR = Farbe Mod 65536
Grün = 255 - Fix(HilfeR / 256)
HilfeG = HilfeR Mod 256
Blau = 255 - HilfeG
HilfeF = CLng(Rot) * 65536 + CLng(Grün) * 256 + Blau
Screen1.Pixel(X, Y) = HilfeF
Next Y
Next X
End Sub
Diese Prozedur invertiert die Farben innerhalb des Bereiches, der durch die Werte der vier Bildlaufleisten begrenzt worden ist. Es entsteht sozusagen ein Negativbild.
Die Erstellung des Programmes ist damit abgeschlossen. Wenn es gestartet wird, kann im linken Drittel durch Ziehen an der Bildlaufleiste der darüberstehende Text gedreht werden. Wird im mittleren Drittel die Weckfunktion aktiviert, ändert sich alle zehn Sekunden die Farbgebung der Bezeichnungsfelder. Und wird im rechten Drittel die Schaltfläche Farben invertieren angeclickt, entsteht im abgegrenzten Bereich ein "Negativbild".

Übung 12 (Multiple Document Interface-Anwendungen)
Hauptseite
Übung 14 (Klang-Einbindung)