ListViewGadget
Code: Select all
OpenWindow(0,0,0,415,320,"void",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ContainerGadget(0,5,5,200 - 2 - 17,310)
ListViewGadget(1,0,0,200,310)
CloseGadgetList()
ListViewGadget(2,190,5,200,310)
For i=1 To 500
AddGadgetItem(1,-1,"Gadget Item #" + RSet(Str(i),3,"0"))
AddGadgetItem(2,-1,"Gadget Item #" + RSet(Str(i),3,"0"))
Next
Procedure WindowCallback(hWnd,uMsg,wParam,lParam)
Select uMsg
Case #WM_CTLCOLORLISTBOX
If lParam = GadgetID(2)
SendMessage_(GadgetID(1),#LB_SETTOPINDEX,GetScrollPos_(GadgetID(2),#SB_VERT),0)
EndIf
EndSelect
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
SetWindowCallback(@WindowCallback())
While WaitWindowEvent() ! #PB_Event_CloseWindow : Wend
Code: Select all
OpenWindow(0,0,0,415,320,"void",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ContainerGadget(0,5,5,200 - 2 - 17,310)
ListIconGadget(1,0,0,200,310,"Name",170)
CloseGadgetList()
ListIconGadget(2,190,5,200,310,"Name",170)
For i=1 To 500
AddGadgetItem(1,-1,"Gadget Item #" + RSet(Str(i),3,"0"))
AddGadgetItem(2,-1,"Gadget Item #" + RSet(Str(i),3,"0"))
Next
Structure NMLVSCROLL
hdr.NMHDR
dx.l
dy.l
EndStructure
Procedure WindowCallback(hWnd,uMsg,wParam,lParam)
Select uMsg
Case #WM_NOTIFY
Protected *pnmh.NMHDR = lParam
If *pnmh\hwndFrom = GadgetID(2)
If *pnmh\code = #LVN_ENDSCROLL
Protected *pnms.NMLVSCROLL = lParam
Protected LVTI = SendMessage_(GadgetID(2),#LVM_GETTOPINDEX,0,0)
Protected LVCP = SendMessage_(GadgetID(2),#LVM_GETCOUNTPERPAGE,0,0)
If *pnms\dy < 0
SendMessage_(GadgetID(1),#LVM_ENSUREVISIBLE,LVTI,0)
ElseIf *pnms\dy > 0
SendMessage_(GadgetID(1),#LVM_ENSUREVISIBLE,LVTI + LVCP - 1,0)
EndIf
EndIf
EndIf
EndSelect
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
SetWindowCallback(@WindowCallback())
While WaitWindowEvent() ! #PB_Event_CloseWindow : Wend