リストボックス内の項目を全選択・解除          <TOP>


リストボックス内の項目を全選択、解除を実行します。

SendMessage ウィンドウにメッセージを送信

LB_SETSEL(&H185) 複数選択リストボックス内の文字列を選択する

 

ListBoxのプロパティで複数選択、または拡張選択どちらか一方をありに設定しておきます。

 

'================================================================
'= リストボックス内の項目を全選択・解除
'=    (SelectingAllItems.bas)
'================================================================
#include "Windows.bi"

' ウィンドウにメッセージを送信。この関数は、指定したウィンドウのウィンドウプロシージャが処理を終了するまで制御を返さない
Declare Function Api_SendMessage& Lib "user32" Alias "SendMessageA" (ByVal hWnd&, ByVal wMsg&, ByVal wParam&, lParam As Any)

#define LB_SETSEL &H185                 '複数選択リストボックス内の文字列を選択する

Var Shared List1 As Object
Var Shared Button1 As Object
Var Shared Button2 As Object

List1.Attach GetDlgItem("List1") : List1.SetFontSize 14 : List1.SetWindowSize 208, 123
Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14
Button2.Attach GetDlgItem("Button2") : Button2.SetFontSize 14

'================================================================
'=
'================================================================
Declare Sub MainForm_Start edecl ()
Sub MainForm_Start()
    For i = 1 To 20
        List1.AddString format$(rnd(i) * 10000000, "###,###,###.##")
    Next
End Sub

'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    Var Ret As Long

    Ret = Api_SendMessage(List1.GethWnd, LB_SETSEL, True, ByVal -1)
End Sub

'================================================================
'=
'================================================================
Declare Sub Button2_on edecl ()
Sub Button2_on()
    Var Ret As Long

    Ret = Api_SendMessage(List1.GethWnd, LB_SETSEL, False, ByVal -1)
End Sub

'================================================================
'=
'================================================================
While 1
    WaitEvent
Wend
Stop
End