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 19.11.2002

Diese Seite wurde zuletzt aktualisiert am 19.11.2002
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 den 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...

Von innen nach außen lauschen

Zurück...


Anzeige

(-hg) mailto:hg_uclselfevents@aboutvb.de

Über das Problem, dass eine Klasse oder ein UserControl anscheinend keine Ereignisse des gleichen Objekt-Typs empfangen können, werden auch Sie vielleicht schon einmal gestolpert sein. So können Sie beispielsweise nicht ein UserControl alle Ereignisse empfangen lassen, die der Container dieses UserControls erhalten kann. In der Ereignis-Liste des UserControls fehlen nämlich die so genannten Extender-Ereignisse wie DragDrop, DragOver, DragDrop, GetFocus und LostFocus.

Den Verlust der beiden letztgenannten Ereignisse können wir ohne Weiteres verschmerzen, da das UserControls selbst gleich lautende Ereignisse zur Verfügung stellt. Doch wenn Sie im UserControl die auf der darüber liegenden Ebene des Containers (Form, UserControl als Container, UserDocument, PropertyPage) generierten Ereignisse bei "alten" VB-Drag&Drop-Vorgängen erhalten wollen, müssen Sie den Umweg über das Extender-Objekt gehen. Bei einem UserControl ist dies aus der Sicht des Containers immer ein Objekt des Typs VBControlExtender. Somit liegt auch die passende und notwendige Deklaration der Ereignisempfänger-Variablen auf der Hand:

Private WithEvents eSelf As VBControlExtender

Nun stehen die gesuchten Drag&Drop-Ereignisse zur Verfügung:

Private Sub eSelf_DragDrop(Source As Control, X As Single, _
 Y As Single)

  Debug.Print "DragDrop", Source.Name, X, Y
End Sub

Private Sub eSelf_DragOver(Source As Control, X As Single, _
 Y As Single, State As Integer)

  Debug.Print "DragOver", Source.Name, X, Y, State
End Sub

Damit die Ereignisse auch tatsächlich ankommen (die bloße Deklaration einer Ereignisempfänger-Variablen bleibt ja noch ohne Funktion), ist nun noch ein wenig Verwaltungsarbeit notwendig:

Private Sub UserControl_InitProperties()
  If Ambient.UserMode Then
    Set eSelf = Extender
  End If
End Sub

Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
  If Ambient.UserMode Then
    Set eSelf = Extender
  End If
End Sub

Private Sub UserControl_Terminate()
  Set eSelf = Nothing
End Sub

Beispiel-Projekt (uclselfevents.zip - ca. 2,8 KB)


Artikel
Zum Download-Bereich dieses Artikel
Mail an den Autor dieses Artikels

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