Eins der wohl meist benutzten Controls in VB ist der CommandButton. Doch was ihm fehlt, ist ein DblClick-Ereignis. Hier haben die Entwickler von Microsoft gegeizt Ab sofort ist damit Schluss - wir verpassen dem Button einfach nachträglich dieses Ereignis. Sicherlich könnten Sie jetzt sagen - ist ja kein Problem, ich prüfe einfach das Click Ereignis mit einem Timer. Eleganter und unabhängiger geht es aber mit einer Klasse. Das Klassenmodul clsCmdDblClick: Eigenschaften:
Ereignis:
Die Klasse liest bei der Initialisierung automatisch die im System eingestellte Doppelklickzeit aus und weist sie der Eigenschaft DblClickTime als Default-Wert zu. Starten Sie ein neues Projekt und legen Sie ein neues Klassenmodul an. Benennen Sie die Klasse clsCmdDblClick. Fügen Sie den nachfolgenden Code in das Codefenster der Klasse ein. ' ******************************************************** ' * ' * clsCmdDblClick - Klasse ' * ' * Stattet einen CommandButton mit einem DblClick ' * Ereignis aus. Die Klasse wird dabei automatisch ' * mit der im System eingestellten DblClickTime ' * eingestellt. ' * ' * Eigenschaften: ' * ButtonToHandle: Übergeben wird der Button aus ' * der aufrufenden Form. ' * DblClickTime: Optional, übergeben wird die ' * DblClickTime in mSek. ' * ' * Mai 2004 - www.vb-power.net und Roland Wutzke ' * ' ******************************************************** Option Explicit ' benötigte API Private Declare Function GetDoubleClickTime Lib "user32" () As Long ' KlassenVars Private WithEvents oButton As CommandButton Private oDblClickTime As Single ' Ereignis Public Event DblClick() Private Sub Class_Initialize() ' Wir holen uns die DoubleClickTime ' aus dem System ;-) oDblClickTime = GetDoubleClickTime / 1000 End Sub Private Sub Class_Terminate() ' Klasse zerstören If Not oButton Is Nothing Then Set oButton = Nothing End If End Sub Private Sub oButton_Click() Static DblClickLast As Single ' Prüfen, ob innerhalb der DblClickTime ' der CommandButton 2 mal gedrückt wurde. If Timer - DblClickLast < oDblClickTime Then ' DblClick Ereignis auslösen RaiseEvent DblClick End If ' Prüfzeit initialisieren DblClickLast = Timer End Sub ' Eigenschaften der Klasse Public Property Set ButtonToHandle(ByVal vData As CommandButton) Set oButton = vData End Property Public Property Let DblClickTime(ByVal vData As Long) oDblClickTime = vData / 1000 End Property Nachfolgend ein Beispiel, wie Sie einen Button mit dem neuen Ereignis ausstatten können. Platzieren Sie auf der Form einen CommandButton (Command1) und fügen Sie den nachfolgenden Code in das Codefenster der Form ein: Option Explicit ' Klasse mit Ereignis Private WithEvents MyButton As clsCmdDblClick Private Sub Form_Load() ' Klasse instanzieren Set MyButton = New clsCmdDblClick ' Eigenschaften zuweisen With MyButton Set .ButtonToHandle = Command1 .DblClickTime = 500 ' optional End With End Sub ' Das Ereignis DblClick Private Sub MyButton_DblClick() MsgBox "Doppelklick" End Sub Dieser Tipp wurde bereits 12.976 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. |
vb@rchiv CD Vol.6 Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen 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 TOP! Unser Nr. 1 Neu! sevDataGrid 3.0 Mehrspaltige Listen, mit oder ohne DB-Anbindung. Autom. Sortierung, Editieren von Spalteninhalten oder das interaktive Hinzufügen von Datenzeilen sind ebenso möglich wie das Erstellen eines Web-Reports. |
||||||||||||||||
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. |