VB 5/6-Tipp 0721: Eigenschaften eines Steuerelements auflisten
von Philipp Stephani
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: | Verwendete API-Aufrufe: keine | Download: |
'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-Version | Win32s | Win95 | Win98 | WinME | WinNT4 | Win2000 | WinXP |
VB4 | |||||||
VB5 | |||||||
VB6 |
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.