VB 5/6-Tipp 0655: WithEvents auch bei später Bindung (Late Binding) nutzen
von madmax
Beschreibung
Dieses Beispiel demonstriert die Verwendung des VBControlExtender-Objektes. Mit dem VBControlExtender ist es möglich ein beliebiges Steuerelement zur Laufzeit "WithEvents" zu laden, und das ohne einen Verweis auf das Steuerelement zu setzen oder es in der Komponetenliste einzubinden. Also LateBinding WithEvents ...
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 Projekt1.vbp ------------- '--------- Anfang Formular "Form1" alias Form1.frm --------- ' Steuerelement: Beschriftungsfeld "Label1" Option Explicit Private WithEvents lvwTest As VBControlExtender Private Sub Form_Load() Licenses.Add "MSComctlLib.ListViewCtrl.2" ' strLicenseKey ' ^^ ' || 'MsgBox Licenses.Item(0).LicenseKey ' --------------++ ' ACHTUNG: ' -------- ' Um ein Steurelement mit Late Binding verwenden zu können, ' benötigt man eine Lizenz für das Steuerelement. Auf einem ' Entwicklungsrechner auf dem VB installiert ist, ist diese ' Lizenz i.d.R. schon vorhanden. Damit das Programm aber auch ' auf einem Client Rechner funktioniert muss beim Hinzufügen ' der Lizenz, der Lizenz Schlüssel mitangegeben werden: ' Licenses.Add ProgID [, LicenseKey] ' Den LicenseKey kann man sich auf einem Entwicklungsrechner ' anzeigen lassen wenn man die Message Box auskommentiert. ' Das ist der Schlüssel den ihr bei Licenses.Add benötigt damit ' das Programm auf einem Client Rechner läuft. Set lvwTest = Form1.Controls.Add("MSComctlLib.ListViewCtrl.2", "lvwTest") lvwTest.Visible = True lvwTest.object.View = 3 lvwTest.object.ColumnHeaders.Add , , "Spalte 1", 1500 lvwTest.object.ColumnHeaders.Add , , "Spalte 2", 1500 lvwTest.object.ListItems.Add , , "Item 1" lvwTest.object.ListItems(1).SubItems(1) = "SubItem 1" lvwTest.object.ListItems.Add , , "Item 2" lvwTest.object.ListItems(2).SubItems(1) = "SubItem 2" lvwTest.object.ListItems.Add , , "Item 3" lvwTest.object.ListItems(3).SubItems(1) = "SubItem 3" End Sub Private Sub Form_Resize() lvwTest.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight End Sub Private Sub lvwTest_ObjectEvent(Info As EventInfo) Select Case Info.Name Case "ItemClick" MsgBox "Das Item mit dem Titel '" & _ Info.EventParameters.Item(0).Value.Text & _ "' wurde angeklickt." Case "DblClick" MsgBox "Doppelklick" Case "KeyPress" MsgBox "Die Taste '" & Chr(Info.EventParameters(0).Value) & _ "' wurde gedrückt." End Select End Sub '---------- Ende Formular "Form1" alias Form1.frm ---------- '-------------- Ende Projektdatei Projekt1.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.
Archivierte Nutzerkommentare
Klicken Sie diesen Text an, wenn Sie die 2 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.
Kommentar von hurby am 22.05.2006 um 14:36
ist es auch so möglich ein Objekt zu referenzieren mit dem man ein Button in einer Commandbar in Word anlegt und dann die Events "abfängt". Ich bekomm das irgendwie nicht hin.
Wäre schön wenn mir Jemand auf die sprünge hilft.
MfG hurby
Kommentar von Michael Puchta am 10.06.2005 um 09:22
Hallo,
ich habe mit diesem Beispiel ein Problem, wenn ich ein selbstgebautes OCX laden und aus diesem Ereignisse herausreichen will. Das Laden und Platzieren in der Form funktioniert noch, aber ...
In dem OCX habe ich einen Command-Button, über den ich mit RaiseEvent usw. das Click-Ereignis herausreiche. Beim normalen Einbinden in eine Form funktioniert das auch, aber nicht hier nach dem dynamischen Laden. Im ObjectEvent-Ereignis erfolgt absolut keine Reaktion.
Woran kann es liegen, oder geht das Herausreichen von Ereignissen beim dynamische Laden von einem selbstgebauten OCX generell nicht?
(VB6, Betriebssystem W2000)
Für Hinweise bedanke ich mich schon im voraus.
Mit freundlichen Grüßen
Michael Puchta