リストボックス同士の同期          <TOP>


左右のリストボックスのスクロールと項目選択を同期させます。

 

'================================================================
'= リストボックス同士の同期
'=    (ListBoxSync.bas)
'================================================================
#include "Windows.bi"

Var Shared List1 As Object
Var Shared List2 As Object
Var Shared Timer1 As Object

List1.Attach GetDlgItem("List1") : List1.SetFontSize 14
List2.Attach GetDlgItem("List2") : List2.SetFontSize 14
Timer1.Attach GetDlgItem("Timer1")

'================================================================
'=
'================================================================
Declare Sub MainForm_Start edecl ()
Sub MainForm_Start()
    For i = 1 To 20
        List1.AddString Str$(i)
        List2.AddString Str$(i)
    Next

    Timer1.SetInterval 5
    Timer1.Enable -1
End Sub

'================================================================
'=
'================================================================
Declare Sub Timer1_Timer edecl ()
Sub Timer1_Timer()
    Var List1TopIndex As Integer
    Var List2TopIndex As Integer
    
    '先頭に表示される項目を揃える
    List1TopIndex  = List1.GetTopIndex
    If List1TopIndex  <> List2TopIndex  Then
        List2.SetTopIndex List1TopIndex 
        List2TopIndex  = List1TopIndex 
    End If

    '選択項目を揃える
    If List1.GetCursel <> List2.GetCursel Then
        List2.SetCursel List1.GetCursel
    End If
End Sub

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