Označení/odznačení položek v ListBoxu

Postup:
Deklarujte v deklarační části formuláře:

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
  (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
  lParam As Any) As Long 

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
  (dest As Any, dest As Any, ByVal numBytes As Long) 

Private Const LB_SELITEMRANGE = &H19B

Funkce pro označení/odznačení položek:

Sub ListBoxSelectRange (lb As ListBox, ByVal newState As Boolean, _ 
  Optional firstItem As Long, Optional lastItem As Long = -1) 

   Dim lParam As Long 
   If lastItem < 0 Then lastItem = lb.ListCount - 1 
   CopyMemory lParam, firstItem, 2 CopyMemory ByVal _
      VarPtr(lParam) + 2, lastItem, 2 
   SendMessage lb.hwnd, LB_SELITEMRANGE, newState, ByVal lParam 

End Sub

Použijte newState = True na označení, nebo False na odznačení. Pokud vynecháte poslední dva argumenty, bude se akce týkat všech položek

Zpět

Autor: The Bozena