Übung: Zusatz-Steuerelemente


[ Hinzufügen von Steuerelementen | Oberfläche | Programmcode]



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:




Hinzufügen von Zusatz-Steuerelementen

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.

Oberfläche

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


Eingabe des Programmcodes

Allgemeiner Deklarationsbereich

Dim WeckZeit1
Dim WeckZeit0
Dim FarbWert(6)
Dim BildSchirmBreite
Dim BildSchirmHöhe

Hier werden Variablen deklariert, dessen Reichweite über den lokalen Bereich hinausgehen muß.

Form

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

Horizontale Bildlaufleiste hscWinkel

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

Wecker-Steuerelement

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.

Kontrollkästchen Weckfunktion aktivieren

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

Befehlsschaltfläche Beenden

Private Sub cmdBeenden_Click()
    End
End Sub

Horizontale Bildlaufleiste hscLinks

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

Horizontale Bildlaufleiste hscRechts

Sowohl im Scroll- als auch im Change-Ereignis muß folgender Code eingetragen werden.


Private Sub hscRechts_Change()
    lblRechts.Caption = hscRechts.Value
End Sub

Vertikale Bildlaufleiste vscOben

Sowohl im Scroll- als auch im Change-Ereignis muß folgender Code eingetragen werden.


Private Sub vscOben_Change()
    lblOben.Caption = vscOben.Value
End Sub

Vertikale Bildlaufleiste vscUnten

Sowohl im Scroll- als auch im Change-Ereignis muß folgender Code eingetragen werden.


Private Sub vscUnten_Change()
    lblUnten.Caption = vscUnten.Value
End Sub

Schaltfläche Farben invertieren

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".



Diese Beispiel-Anwendung mit Zusatz-Steuerelementen können Sie im Download-Abschnitt der Hauptseite (ZusOcx.zip) finden.


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