Vor kurzem wurde im Forum gefragt, wie man beim Einsatz des ListView-Controls eine Mehrfachauswahl per einfachen Mausklick realisieren kann, ohne hierbei immer die STRG-Taste drücken zu müssen. Nachfolgend ein Ansatz, wie sich das Ganze realisieren lässt. Der Trick besteht darin, dem System vorzugaukeln, dass die STRG-Taste immer gedrückt ist. Dies erreichen wir, indem wir im GotFocus-Ereignis die Keybd_Event-Funktion aufrufen. Im LostFocus-Ereignis wird das Ganze dann wieder deaktiviert. Option Explicit ' benötigte API-Deklarationen Private Declare Sub keybd_event Lib "user32" ( _ ByVal bVk As Byte, _ ByVal bScan As Byte, _ ByVal dwFlags As Long, _ ByVal dwExtraInfo As Long) Private Const KEYEVENTF_KEYUP = &H2 Private Const VK_CONTROL = &H11 Dim bCtlPressed As Boolean Private Sub Form_Load() Dim i As Long With ListView1 ' ListView initialisieren .View = lvwReport .MultiSelect = True .FullRowSelect = True .ColumnHeaders.Add , , "Spalte", 2000 ' ein paar Test-Einträge For i = 1 To 100 .ListItems.Add , , "Eintrag " & CStr(i) Next i End With End Sub Private Sub ListView1_GotFocus() ' Niederdrücken der STRG-Taste simulieren ' (STRG-Taste bleibt hierbei solange gedrückt, ' wie das ListView den Fokus besitzt) bCtlPressed = True keybd_event VK_CONTROL, 1, 0, 0 End Sub Private Sub ListView1_LostFocus() ' STRG-Taste wieder loslassen If bCtlPressed Then keybd_event VK_CONTROL, 1, KEYEVENTF_KEYUP, 0 bCtlPressed = False End If End Sub Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) ' Sicherstellen, dass die STRG-Taste wieder losgelassen wird ListView1_LostFocus End Sub Dieser Tipp wurde bereits 10.747 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 Mai 2024 Hermann Röttger Wochentage eines Datumsbereichs ermitteln Wochentage eines Datumsbereichs ermitteln, optional mit Feiertagsberechnung sevOutBar 4.0 Vertikale Menüleisten á la Outlook Erstellen von Outlook ähnlichen Benutzer- interfaces - mit beliebig vielen Gruppen und Symboleinträgen. Moderner OfficeXP-Style mit Farbverläufen, Balloon-Tips, u.v.m. |
||||||||||||||||
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. |