Wenn Sie selbst ActiveX-Steuerelemente (UserControls) erstellen, haben Sie sich sicherlich auch schon einmal gefragt, wie man es schafft, dass im Eigenschaftenfenster des Controls beim Klick auf den "..."-Knopf z.B. der Windows Standard-Dialog zum Auswählen einer Datei erscheint. Der "..."-Button wird im Eigenschaftenfenster bekanntlich nur dann angezeigt, wenn man für die Eigenschaft eine Eigenschaften-Seite (PropertyPage) erstellt und diese über "Prozedurattribute" entsprechend auch zugeordnet hat oder es sich um die Font-, StdPicture- oder OLE-Color Eigenschaft handelt. Nehmen wir einmal an, Sie haben ein UserControl mit der Eigenchaft "Filename" erstellt. Verwendet der Anwender nun das UserControl auf einer Form und öffnet das VB-Eigenschaftenfenstzer soll rechts der "..."-Button zur Auswahl einer Datei erscheinen. Gehen Sie hierzu wie folgt vor:
Jetzt würde der Anwender beim Klick auf den "..."-Button eine leere Eigenschaften-Seite angezeigt bekommen. Wir möchten allerdings keine "echte" Eigenschaften-Seite, sondern den Datei-Öffnen-Dialog. Keine Angst, wir müssen den Dialog jetzt nicht nachbauen Beim Öffnen der Eigenschaftenseite wird gleichzeitig auch das Ereignis "EditProperty" ausgelöst. Da die Eigenschaftsseite auch nur ein Windows-Fenster ist, lässt es sich auch genauso leicht modifizieren. Zu beachten ist nur, dass die Eigenschaftsseite selbst zwei Ebenen höher liegt als das PropertyPage-Objekt in VB. Deshalb benutzen wir "GetParent" um an das höhergelegene Element zu gelangen. Zunächst blenden wir die Seite über "ShowWindow" aus, dann können Sie beliebigen Code ausführen und zum Schluss muss die Eigenschaftsseite geschlossen werden. Dies ist enorm wichtig, da sonst beim nächsten Klick auf ein Steuerelement in der IDE das Fenster wieder angezeigt wird, mit einer Meldung, dass es für dieses Steuerelement keine Eigenschaftsseiten gibt. Das ist schon der komplette Code. Eigentlich einfach, nicht wahr? Fügen Sie im Codefenster der Eigenschaftenseite (PropertyPage1) folgenden Code ein: Option Explicit ' Benötigte API-Deklarationen Private Const WM_CLOSE = &H10 Private Const SW_HIDE = 0 Private Declare Function SendMessage Lib "user32" _ Alias "SendMessageA" ( _ ByVal hwnd As Long, _ ByVal wMsg As Long, _ ByVal wParam As Long, _ lParam As Any) As Long Private Declare Function ShowWindow Lib "user32" ( _ ByVal hwnd As Long, _ ByVal nCmdShow As Long) As Long Private Declare Function GetParent Lib "user32" ( _ ByVal hwnd As Long) As Long Private Sub PropertyPage_EditProperty(PropertyName As String) If PropertyName = "Filename" Then Dim sFile As String Dim nHWnd As Long ' Fensterhandle ermitteln nHWnd = GetParent(GetParent(PropertyPage.hwnd)) ' Fenster verstecken ShowWindow nHWnd, SW_HIDE ' Datei-Öffnen-Dialog anzeigen sFile = GetOpenName("*.*|*.*", "") ' Fenster schließen SendMessage nHWnd, WM_CLOSE, 0, 0& ' Falls Dateiname ausgewählt wurde, ' jetzt dem Control zuweisen If sFile <> "" Then SelectedControls(0).Filename = sFile End If End Sub Anmerkung: Dieser Tipp wurde bereits 34.446 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
sevISDN 1.0 Überwachung aller eingehender Anrufe! Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 sevOutBar 4.0 Vertikale Menüleisten á la Outlook Erstellen von Outlook ähnlichen Benutzer- interfaces - mit beliebig vielen Gruppen und Symboleinträgen. Moderner OfficeXP-Style mit Farbverläufen, Balloon-Tips, u.v.m. |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |