Just set the number of pixels to move when the event occurs.
Use up and down key or the mousewheel.
Here is the idea:
Use up and down key or the mousewheel.
Here is the idea:
SuperStrict Import MaxGui.Drivers Global PanelAsWindow:TGadget Global PanelToScroll:TGadget Global SB1:TGadget Global Offset:Int 'End of Header File Local Window1:TGadget = CreateWindow:TGadget("Window1",87,108,335,262,Null,WINDOW_TITLEBAR|WINDOW_RESIZABLE |WINDOW_STATUS ) ' a panel used as window we look through to to see a part of the bigger scroll-area PanelAsWindow:TGadget = CreatePanel:TGadget(0,0,299,167,Window1:TGadget,Null,"Panel1") SetGadgetLayout( PanelAsWindow:TGadget,EDGE_ALIGNED,EDGE_ALIGNED,EDGE_ALIGNED,EDGE_ALIGNED ) 'the panel we want to scroll PanelToScroll:TGadget = CreatePanel:TGadget(0,0,299,278,PanelAsWindow:TGadget,PANEL_ACTIVE,"Panel2") SetGadgetLayout( PanelToScroll:TGadget,EDGE_ALIGNED,EDGE_ALIGNED,EDGE_ALIGNED,EDGE_ALIGNED ) ActivateGadget(PanelToScroll) 'some gagdets on top to scroll, not important Local TextField1:TGadget = CreateTextField:TGadget(93,36,80,18,PanelToScroll:TGadget,Null) SetGadgetText( TextField1:TGadget,"TextField1") Local TextArea1:TGadget = CreateTextArea:TGadget(12,173,275,95,PanelToScroll:TGadget,Null) SetTextAreaText( TextArea1:TGadget , "TextArea1" ) Local Label1:TGadget = CreateLabel:TGadget("Label1",12,95,80,16,PanelToScroll:TGadget,LABEL_SUNKENFRAME) Local ProgBar1:TGadget = CreateProgBar:TGadget(207,88,80,23,PanelToScroll:TGadget,Null) UpdateProgBar( ProgBar1:TGadget,0.200000003 ) 'a button outside the scrollarea Local Ok1:TGadget = CreateButton:TGadget("Ok1",224,178,75,23,Window1:TGadget,BUTTON_OK) 'set the scrollbar SB1:TGadget = CreateSlider:TGadget(303,0,23,167,Window1:TGadget,SLIDER_VERTICAL | SLIDER_SCROLLBAR ) SetSliderRange( SB1:TGadget,1 ,100 ) SetSliderRange( SB1:TGadget,GadgetHeight(PanelAsWindow),GadgetHeight(PanelToScroll)) Repeat WaitEvent() Select EventID() Case EVENT_WINDOWCLOSE Select EventSource() Case Window1 Window1_WC( Window1:TGadget ) End Select Case EVENT_GADGETACTION Select EventSource() Case SB1 SB1_GA( SB1:TGadget , EventData() ) Case Ok1 Ok1_GA( Ok1:TGadget ) End Select Case EVENT_MOUSEWHEEL Select EventSource() Case PanelToScroll PanelToScroll_MW( PanelToScroll:TGadget , EventData() ) End Select Case EVENT_KEYDOWN Select EventSource() Case PanelToScroll PanelToScroll_KD( PanelToScroll:TGadget , EventData() ) End Select End Select Forever Function Window1_WC( Window:TGadget ) DebugLog "Window Window1 wants to be closed" ' HideGadget( Window:TGadget ) End End Function Function SB1_GA( Slider:TGadget , Number:Int ) DebugLog "Slider SB1 changed to " + Number SetGadgetShape( PanelToScroll:TGadget,GadgetX(PanelToScroll),GadgetY(PanelAsWindow)-Number,GadgetWidth(PanelToScroll),GadgetHeight(PanelToScroll) ) End Function Function Ok1_GA( Button:TGadget ) DebugLog "Button Ok1 was pressed" End Function Function PanelToScroll_MW( Panel:TGadget , MouseWheel:Int ) DebugLog "Panel PanelToScroll detected "+ MouseWheel +" Mouse Wheel clicks" Offset:+Mousewheel*10 SetGadgetShape( PanelToScroll:TGadget,GadgetX(PanelToScroll),GadgetY(PanelAsWindow)+Offset,GadgetWidth(PanelToScroll),GadgetHeight(PanelToScroll) ) End Function Function PanelToScroll_KD( Panel:TGadget , Key:Int ) DebugLog "Panel PanelToScroll detected Key "+ Key +" pressed" Select Key Case KEY_DOWN Offset:+10 Case KEY_UP Offset:-10 End Select SetGadgetShape( PanelToScroll:TGadget,GadgetX(PanelToScroll),GadgetY(PanelAsWindow)+Offset,GadgetWidth(PanelToScroll),GadgetHeight(PanelToScroll) ) End Function