Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0721: Eigenschaften eines Steuerelements auflisten

 von 

Beschreibung 

Dieser Code verwendet die TypeLib Information-Bibliothek und die Funktion CallByName, um die Eigenschaften und Methoden eines Steuerelements auszulesen und zu ändern.

Die TypeLib Information-Bibliothek ist erst ab der Professional Edition von Visual Basic verfügbar.

Schwierigkeitsgrad:

Schwierigkeitsgrad 1

Verwendete API-Aufrufe:

keine

Download:

Download des Beispielprojektes [3,04 KB]

'Dieser Quellcode stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source!

'---- Anfang Projektdatei prjEigenschaftenAuflisten.vbp  ----
' Es muss ein Verweis auf 'TypeLib Information' gesetzt werden.

'--- Anfang Formular "frmEigenschaftenAuflisten" alias frmEigenschaftenAuflisten.frm  ---
' Steuerelement: Schaltfläche "cmdÄndern"
' Steuerelement: Textfeld "txtWert"
' Steuerelement: Listen-Steuerelement "lstEigenschaften"
' Steuerelement: Listen-Steuerelement "lstSteuerelemente"
' Steuerelement: Rahmensteuerelement "fraBeispiele"
' Steuerelement: Horizontale Scrollbar "hscBeispiel" auf fraBeispiele
' Steuerelement: Textfeld "txtBeispiel" auf fraBeispiele
' Steuerelement: Schaltfläche "cmdBeispiel" auf fraBeispiele
' Steuerelement: Beschriftungsfeld "lblArt"
' Steuerelement: Beschriftungsfeld "lblWert"
' Steuerelement: Beschriftungsfeld "lblEigenschaften"
' Steuerelement: Beschriftungsfeld "lblSteuerelemente"
Option Explicit

Private mControlObject As Object
Private mControlInformation As SearchResults
Private mProperty As String

Private Sub cmdÄndern_Click()
    CallByName mControlObject, mProperty, VbLet, CVar(Me.txtWert.Text)
End Sub

Private Sub Form_Load()
    Dim Control As Object
    
    For Each Control In Me.Controls
        If Control.Container Is Me.fraBeispiele Then _
            Me.lstSteuerelemente.AddItem Control.Name
    Next Control
End Sub

Private Sub lstEigenschaften_Click()
    mProperty = Me.lstEigenschaften.Text
    
    With mControlInformation
        With .Item(.Locate(mProperty))
        
            If .InvokeKinds And INVOKE_FUNC Then
                Me.lblArt.Caption = "Funktion"
                Me.lblWert.Enabled = False
                Me.txtWert.Enabled = False
                Me.txtWert.Text = vbNullString
                Me.cmdÄndern.Enabled = False
                
            ElseIf .InvokeKinds And INVOKE_PROPERTYGET Then
                Me.lblWert.Enabled = True
                Me.txtWert.Enabled = True
                On Error Goto PropertyReadError
                
                Me.txtWert.Text = CStr(CallByName(mControlObject, mProperty, _
                    VbGet))
                    
                On Error Goto 0
                
                If CBool(.InvokeKinds And INVOKE_PROPERTYPUT) Or CBool( _
                    .InvokeKinds And INVOKE_PROPERTYPUTREF) Then
                    
                    Me.lblArt.Caption = "Eigenschaft"
                    Me.txtWert.Locked = False
                    Me.cmdÄndern.Enabled = True
                Else
                    Me.lblArt.Caption = "Schreibgeschützte Eigenschaft"
                    Me.txtWert.Locked = True
                    Me.cmdÄndern.Enabled = False
                End If
            End If
        End With
    End With
    
    Exit Sub
    
PropertyReadError:
    Me.txtWert.Text = "Fehler"
    Resume Next
End Sub

Private Sub lstSteuerelemente_Click()
    Dim Item As SearchItem
    
    Set mControlObject = Me.Controls.Item(Me.lstSteuerelemente.Text)
    
    Set mControlInformation = InterfaceInfoFromObject( _
        mControlObject).Members.GetFilteredMembers
        
    With Me.lstEigenschaften
        .Clear
        
        For Each Item In mControlInformation
            .AddItem Item.Name
        Next Item
        
        Me.lblEigenschaften.Enabled = True
        .Enabled = True
    End With
    
    Me.lblWert.Enabled = False
    Me.txtWert.Enabled = False
    Me.cmdÄndern.Enabled = False
End Sub
'--- Ende Formular "frmEigenschaftenAuflisten" alias frmEigenschaftenAuflisten.frm  ---
'----- Ende Projektdatei prjEigenschaftenAuflisten.vbp  -----

Tipp-Kompatibilität:

Windows/VB-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.