Rubrik: Maus & Tastatur · Tastatursteuerung | VB-Versionen: VB4, VB5, VB6 | 27.04.05 |
Tastenstatus beim Doppelklick abfragen Dieses Beispiel zeigt, wie sich die Tasten "Shift, ALT und Strg" beim Doppelklick auf ein Control abfragen lassen. | ||
Autor: Dieter Otter | Bewertung: | Views: 16.731 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Vor kurzem wurde ich gefragt, wie man beim Doppelklick auf ein ImageBox-Control im "DblClick"-Ereignis abfragen kann, ob gleichzeitig auch die Umsch-, Strg- und/oder ALT-Taste gedrückt wurde.
Hier die Lösung:
Im MouseDown-Ereignis des Controls merke man sich einfach den "Shift"-Parameter, so dass man diesen dann im DblClick-Ereignis entsprechend auswerten kann.
Option Explicit Private nShiftState As Long
Private Sub Image1_MouseUp(Button As Integer, Shift As Integer, _ X As Single, Y As Single) ' Tastenstatus von Umsch/Strg/ALT merken nShiftState = Shift End Sub
Private Sub Image1_DblClick() ' Tastenstatus von Umsch/Strg/ALT auswerten If nShiftState = (vbShiftMask + vbCtrlMask + vbAltMask) Then MsgBox "Alt+Shift+Strg sind gedrückt!" EleIf nShiftState = (vbCtrlMask) Then MsgBox "Strg ist gedrückt!" Else ... End If End Sub
Anwendungsbeispiel:
Beim Doppelklick auf das ImageBox-Control ohne dass eine der zusätzlichen Tasten (Strg, Umsch, ALT) gedrückt ist, soll der User über den Microsoft Common Dialog ein neues Bild auswählen können. Drückt der User hingegen beim Doppelklick gleichzeitig auch die STRG-Taste, soll das aktuell zugeordnete Bild gelöscht werden.
Private Sub Image1_DblClick() If nShiftState = vbCtrlMask Then ' Bild löschen Image1.Picture = LoadPicture() ElseIf nShiftState = 0 Then ' Neues Bild auswählen On Error Resume Next With CommonDialog1 .CancelError = True .Filter = "GIF-Datei (*.gif)|*.gif" .ShowOpen If Len(.Filename) > 0 Then Image1.Picture = LoadPicture(.Filename) End If End With End If End Sub