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 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 14.111 mal aufgerufen.
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv (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 Michael String-Replace ganz einfach selbst gebaut Eine Ersatzfunktion für die in VB6 vorhandene Replace-Version. sevZIP40 Pro DLL ![]() Zippen und Unzippen wie die Profis! Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. |
||||||||||||||||
|
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. |
|||||||||||||||||


DblClick Event für den CommandButton
Ab sofort ist damit Schluss - wir verpassen dem Button einfach nachträglich dieses Ereignis.


