ABOUT Visual Basic Programmieren Programmierung Download Downloads Tips & Tricks Tipps & Tricks Know-How Praxis VB VBA Visual Basic for Applications VBS VBScript Scripting Windows ActiveX COM OLE API ComputerPC Microsoft Office Microsoft Office 97 Office 2000 Access Word Winword Excel Outlook Addins ASP Active Server Pages COMAddIns ActiveX-Controls OCX UserControl UserDocument Komponenten DLL EXE
Diese Seite wurde zuletzt aktualisiert am 09.01.2000

Diese Seite wurde zuletzt aktualisiert am 09.01.2000
Aktuell im ABOUT Visual Basic-MagazinGrundlagenwissen und TechnologienKnow How, Tipps und Tricks rund um Visual BasicActiveX-Komponenten, Controls, Klassen und mehr...AddIns für die Visual Basic-IDE und die VBA-IDEVBA-Programmierung in MS-Office und anderen AnwendungenScripting-Praxis für den Windows Scripting Host und das Scripting-ControlTools, Komponenten und Dienstleistungen des MarktesRessourcen für Programmierer (Bücher, Job-Börse)Dies&Das...

Themen und Stichwörter im ABOUT Visual Basic-Magazin
Code, Beispiele, Komponenten, Tools im Überblick, Shareware, Freeware
Ihre Service-Seite, Termine, Job-Börse
Melden Sie sich an, um in den vollen Genuss des ABOUT Visual Basic-Magazins zu kommen!
Informationen zum ABOUT Visual Basic-Magazin, Kontakt und Impressum

Zurück...

Zurück...


Anzeige

(-hg) mailto:hg_stateenabled@aboutvb.de

Hier geht es allerdings nicht um Fliegen oder Riesen im Märchen, sondern um eine komfortable Möglichkeit, wie Sie eine Eigenschaft mehrerer Steuerelemente auf einmal setzen oder ändern können.

Im einfachsten Fall beispielsweise soll die Eigenschaft Enabled eines Textfeldes und eines dazugehörenden Beschriftungsfeldes (Label) immer zugleich geändert werden:

txtFeld.Enabled = False
lblFeld.Enabled = False

und umgekehrt:

txtFeld.Enabled = True
lblFeld.Enabled = True

Bei einem einzigen solchen Paar bereitet Ihnen das sicherlich keine sonderliche Mühe. Enthält eine Datenmaske jede Menge solcher Paare, wäre es doch praktischer, den Aufwand zu halbieren, erst recht dann, wenn Sie die Enabled-Eigenschaft eines Paares sogar von verschiedenen Stellen in Ihrem Code aus ändern wollen.

Die Aufgabe können Sie mit Hilfe eines Klassen-Moduls auf bequeme Weise erledigen. Sie versehen die Klasse, nennen wir sie clsStateEnabled, mit einer Enabled-Eigenschaft und der Möglichkeit, sie mit Steuerelementen zu füllen. Dann brauchen Sie künftig nur noch die Enabled-Eigenschaft einer Instanz dieser Klasse zu ändern und bei allen darin aufgenommenen Steuerelementen wird deren Enabled-Eigenschaft entsprechend gesetzt.

Private mControls() As Object

Private pEnabled As Boolean

Public Property Get Enabled() As Boolean
    Enabled = pEnabled
End Property

Public Property Let Enabled(ByVal New_Enabled As Boolean)
    Dim i As Integer
    Dim u As Integer
    
    pEnabled = New_Enabled
    On Error GoTo LetEnabled_Error
    u = UBound(mControls)
    On Error Resume Next
    For i = 1 To u
        mControls(i).Enabled = pEnabled
    Next 'i
    Exit Property
    
LetEnabled_Error:
End Property

Public Sub AddControl(iControl As Object)
    Dim u As Integer
    
    On Error Resume Next
    u = UBound(mControls)
    If Err.Number = 9 Then
        ReDim mControls(1 To 1)
        u = 1
    Else
        u = u + 1
        ReDim Preserve mControls(1 To u)
    End If
    On Error GoTo AddControl_Error
    Set mControls(u) = iControl
    iControl.Enabled = pEnabled
    Exit Sub
    
AddControl_Error:
End Sub

Die Klasse clsStateEnabled

Die Verwaltung der aufgenommenen Steuerelemente beruht auf einem Array. Dieses wird für jedes hinzugefügte Steuerelement um ein Element erweitert. In der Prozedur AddControl wird vor dem Einfügen die Obergrenze des Arrays geprüft. Stellt sich heraus (der auftretende Fehler wird abgefangen), dass das Array noch jungfräulich ist, wird es erstmals mit 1 als Unter- und Obergrenze initialisiert. Abschließend wird die Enabled-Eigenschaft des frisch hinzugefügten Steuerelements entsprechend des internen Wertes von pEnabled gesetzt.

Wird über die Property Let-Prozedur Enabled der interne Wert pEnabled geändert, wird auch die Enabled-Eigenschaft aller in dem Array enthaltenen Steuerelemente entsprechend gesetzt. Sollte das Array noch leer (unitialisiert) sein, wird die Prozedur über den abgefangenen Fehler verlassen.

Interessanter wird der Nutzen dieser Klasse, wenn Sie beispielweise mehrere Steuerelemente auf einem Rahmen (Frame) platziert haben und deren Enabled-Eigenschaft gleichzeitig mit dem Rahmen setzen wollen. Das Setzen der Enabled-Eigenschaft des Rahmens alleine sperrt zwar die darauf platzierten Steuerelemente. Da deren Enabled-Eigenschaft jedoch nicht direkt geändert wird, ändert sich auch nicht deren Erscheinungsbild, das dem Anwender die Sperrung signalisiert. Nehmen Sie also den Rahmen samt den Steuerelementen darauf in eine Instanz der clsStateEnabled-Klasse auf, erledigt diese auf bequeme Weise die Aufgabe.

Betrifft eines dieser Steuerelemente auf dem Rahmen obendrein noch eine Funktion Ihres Programms, das beispielsweise ebenfalls von einem Menü-Element kontrolliert wird, ist nichts einfacher, als auch noch das Menu-Element in die Instanz aufzunehmen.

Die beiden folgenden Abbildungen und das Beispiel-Listing zeigen Ihnen, wie einfach und bequem das auf diese Weise wird.

   

Ein Klick auf die CheckBox genügt

Option Explicit

Private mFelder As clsStateEnabled

Private Sub chkEnableFelder_Click()
    mFelder.Enabled = CBool(chkEnableFelder.Value)
End Sub

Private Sub Form_Load()
    Set mFelder = New clsStateEnabled
    With mFelder
        .Enabled = True
        .AddControl fraFelder
        .AddControl lblFeld1
        .AddControl txtFeld1
        .AddControl lblFeld2
        .AddControl txtFeld2
        .AddControl mnuFelder
    End With
End Sub

Praktische Anwendung der Klasse clsStateEnabled

Selbstverständlich können Sie auch andere Eigenschaften von Steuerelementen auf diese Weise auf einen Streich kontrollieren. Sie brauchen in der Klasse clsStateEnabled lediglich die Enabled-Eigenschaft gegen eine andere Eigenschaft austauschen, wie gegen Visible - die Klasse würde dann etwa clsStateVisible heißen. Oder Sie erstellen eine Klasse clsStates, die Sie gleichzeitig mit mehreren Eigenschaften versehen: Enabled, Visible, Font und mehr.


Klasse clsStateEnabled und Beispiel-Projekt (statenab.zip - ca. 4,5 KB)






Themen - Allgemeines
Themen - Entwicklungsumgebung (VB-IDE)
Themen - Forms
Themen - Steuerelemente (Controls)
Themen - Grafik
Themen - Dateien
Themen - UserControls
Themen - Einsteiger-Tipps
Themen - Wussten Sie...?

Übersicht nach Titeln in alphabetischer Reihenfolge
Übersicht nach Erscheinungsdatum

Schnellsuche



Zum Seitenanfang

Copyright © 1999 - 2017 Harald M. Genauck, ip-pro gmbh  /  Impressum

Zum Seitenanfang

Zurück...

Zurück...

Download Internet Explorer