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

Diese Seite wurde zuletzt aktualisiert am 09.02.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 IE, 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...

UserControl mit Noteingang

Zurück...


Anzeige

(-hg) mailto:hg_publiccontrols@aboutvb.de

Es ist bestimmt nicht die feine Art, Steuerelemente, die Sie auf einem UserControl platziert haben, einfach in einer Eigenschaft offen zu legen. Doch wenn Sie nur "mal eben schnell" die Fähigkeiten eines vorhandenen Steuerelements ein wenig erweitern und sich dennoch die Mühe sparen wollen, Eigenschaften, Methoden und Ereignisse mühsam nachzubilden und durchzuschleifen (oder sich nicht mit dem Chaos des Schnittstellen-Assistenten herumplagen wollen), dann kann das durchaus ein Notbehelf sein. Allerdings nur, solange Sie erstens genau wissen was Sie tun, weil Sie ja auf diese Weise im objektorientierten Sinne die Kapselung aufgeben. Und zweitens sollten Sie diesen Kniff auf UserControls beschränken, die Sie direkt als nicht-öffentliches UserControl-Modul in ein Projekt geladen haben. Gegegebenenfalls kann das UserControl zwar auch öffentlich sein. Aber dann sollten Sie sich sicher sein, dass die OCX-Datei lokal auf dem gleichen Rechner ausgeführt wird, oder Sie deklarieren die Eigenschaften zur Offenlegung als "Friend".

Enthält ein UserControl mehrere Steuerelemente, können Sie sich sogar den Komfort gönnen, die Controls-Eigenschaft des UserControls in einer Eigenschaft offen zu legen. Dann können Sie darüber auf diese Steuerelemente unter ihrem Namen zugreifen und müssen nicht jedes einzelne als Eigenschaft offen legen. Werden zur Laufzeit dynamisch Steuerelemente zur Controls-Sammlung des UserControls hinzugefügt, stehen diese so auch zur Verfügung.

Haben Sie zum Beispiel auf Ihrem UserControl "ucTest" ein Label mit dem Namen "lblBeschriftung" platziert, dann schreiben Sie eine nur lesbare Eigenschaft zum Zugriff auf das Label so:

Public Property Get lblBeschriftung() As Label
  Set lblBeschriftung = UserControl.lblBeschriftung
End Property

Nun können Sie die Caption-Eigenschaft auf die gleiche Weise setzen, wie bei einem Label, das sich auf einem anderen Form befindet:

ucTest.lblBeschriftung.Caption = "ABCDEFG"

Auf die Methoden des Labels greifen Sie ebenfalls wie gewohnt zu:

ucTest.lblBeschriftung.Move 0, 0

Selbst die Ereignisse des Labels können Sie direkt verarbeiten, indem Sie außerhalb des UserControls eine entsprechende Ereignisempfänger-Variable mit WithEvents deklarieren:

Private WithEvents elblBeschriftung As Label

und etwa im Form_Load-Ereignis das Label des UserControls zuweisen:

Set elblBeschriftung = ucTest.lblBeschriftung

Auf gleiche Weise legen Sie die Controls-Eigenschaft des UserControls als nur lesbare Eigenschaft offen:

Public Property Get Controls() As Controls
  Set Controls = UserControl.Controls
End Property

Wie von der Controls-Sammlung eines Forms her gewohnt finden Sie das Label des UserControls:

ucTest.Controls("lblBeschriftung").Caption = "ZYXWVUT"

Ebenso können Sie nach wie vor alle Steuerelemente auf dem UserControl in einer Schleife durchlaufen:

Dim nControl As Control

For Each nControl in ucTest.Controls
  nControl.Visible = False
Next

Oder Sie fügen der Controls-Sammlung des UserControls zur Laufzeit ein neues Steuerelement hinzu, und zwar gleichfalls von außerhalb inklusive Empfang der Ereignisse:

Private WithEvents eNeuesBild As PictureBox

' ...
Set eNeuesControl = ucTest.Controls.Add(VB.PictureBox, "NeuesBild")
' ...

Aber, um das Eingangs Gesagte noch einmal ganz deutlich zu wiederholen: Eine derartige Offenlegung sollte immer nur eine Notlösung für Ihre privaten Zwecke zur Arbeitsersparnis sein. Ein solchermaßen ungekapseltes UserControl sollten Sie niemals weitergeben, vor allem nicht als kompiliertes OCX öffentlich verbreiten, auch nicht als Freeware, nicht als Shareware und erst recht nicht kommerziell. Sie würden sich nur höchstwahrscheinlich massive Support-Probleme und garantiert einen schlechten Ruf einhandeln!


Artikel
Mail an den Autor dieses Artikel

KnowHow
Zur KnowHow-Übersicht

KnowHow-Themen
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