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.973 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. |
Neu! sevCommand 4.0 Professionelle Schaltflächen im modernen Design! Mit nur wenigen Mausklicks statten auch Sie Ihre Anwendungen ab sofort mit grafischen Schaltflächen im modernen Look & Feel aus (WinXP, Office, Vista oder auch Windows 8), inkl. große Symbolbibliothek. 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 Access-Tools Vol.1 Über 400 MByte Inhalt Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB |
||||||||||||||||
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. |