Re: Zwei ListIcons verbunden - Nur warum Scrollt es Falsch ?
Verfasst: 22.05.2010 00:35
So, nach längerem suchen & Experimentieren habe ich nun endlich die Lösung gefunden.
Manchmal kann es so einfach sein, aber man kommt nicht gleich darauf.
Man braucht nur die variable NeueScrollPos - AlteScrollPos setzen und schon passt alles wunderbar.
Eventuell kanns ja noch jemand gebrauchen.

Manchmal kann es so einfach sein, aber man kommt nicht gleich darauf.
Man braucht nur die variable NeueScrollPos - AlteScrollPos setzen und schon passt alles wunderbar.
Eventuell kanns ja noch jemand gebrauchen.

Code: Alles auswählen
Global Subclass1, Subclass2
Procedure.l ListIconProc1(Handle, Message, wParam, lParam)
Shared OldPosHORZ, pitem.POINT
If Message=#WM_VSCROLL
v=GetScrollPos_(GadgetID(0),#SB_VERT)
If v=0:v=-1:EndIf
SendMessage_(GadgetID(1), #LVM_GETITEMPOSITION, v-1, pitem.POINT)
SendMessage_(GadgetID(1), #LVM_SCROLL, 0, pitem\y)
ElseIf Message=#WM_HSCROLL
h=GetScrollPos_(GadgetID(0),#SB_HORZ)
pos=h-OldPosHORZ
OldPosHORZ=h
SendMessage_(GadgetID(1), #LVM_SCROLL, pos, 0)
EndIf
ProcedureReturn CallWindowProc_(Subclass1, Handle, Message, wParam, lParam)
EndProcedure
Procedure.l ListIconProc2(Handle, Message, wParam, lParam)
Shared OldPosHORZ, pitem.POINT
If Message=#WM_VSCROLL
v=GetScrollPos_(GadgetID(1),#SB_VERT)
If v=0:v=-1:EndIf
SendMessage_(GadgetID(0), #LVM_GETITEMPOSITION, v-1, pitem.POINT)
SendMessage_(GadgetID(0), #LVM_SCROLL, 0, pitem\y)
ElseIf Message=#WM_HSCROLL
h=GetScrollPos_(GadgetID(1),#SB_HORZ)
pos=h-OldPosHORZ
OldPosHORZ=h
SendMessage_(GadgetID(0), #LVM_SCROLL, pos, 0)
EndIf
ProcedureReturn CallWindowProc_(Subclass2, Handle, Message, wParam, lParam)
EndProcedure
OpenWindow(0, 160, 160, 812, 600, "ListIcons")
ListIconGadget(0, 5, 5, 400, 590, "Column", 800, #PB_ListIcon_FullRowSelect)
ListIconGadget(1, 407, 5, 400, 590, "Column", 800, #PB_ListIcon_FullRowSelect)
For x = 1 To 300
AddGadgetItem(0, -1, "Testzeile "+RSet(Str(x),3,"0")+" - ABCDEFGHIGKLMNOPQRSTUVWXYZ 1234567890")
AddGadgetItem(1, -1, "Testzeile "+RSet(Str(x),3,"0")+" - ABCDEFGHIGKLMNOPQRSTUVWXYZ 1234567890")
Next x
Subclass1 = SetWindowLong_(GadgetID(0), #GWL_WNDPROC, @ListIconProc1())
Subclass2 = SetWindowLong_(GadgetID(1), #GWL_WNDPROC, @ListIconProc2())
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow