Seite 1 von 1
Problem Canvas und MouseWheel
Verfasst: 04.06.2022 10:52
von ProgOldie
Warum ergibt sich im folgenden Programmausschhnitt immer der positive Wert 8, egal wie herum ich das Mausrad drehe?
Code: Alles auswählen
If Event = #PB_Event_Gadget And EventGadget() = CanvasID
Select EventType()
Case #PB_EventType_MouseWheel
MouseWheel=#PB_Canvas_WheelDelta
StatusBarText(0,1,"Wheel "+Str(MouseWheel))
Re: Problem Canvas und MouseWheel
Verfasst: 04.06.2022 13:00
von Thorsten1867
Das Mausrad gibt keine absolute Postition wieder, sondern nur die Schritte vorwärts (+1) bzw. rückwärts (-1).
Im Beispiel unten wird die Scrollbar-Position bei jedem Drehen entsprechend geändert. Die Procedure ist mit dem entsprechendem Event verknüpft.
=> BindGadgetEvent(MarkDown()\CanvasNum, @_MouseWheelHandler(), #PB_EventType_MouseWheel)
Code: Alles auswählen
Procedure _MouseWheelHandler()
Define.i GNum = EventGadget()
Define.i Delta
Delta = GetGadgetAttribute(GNum, #PB_Canvas_WheelDelta)
If MarkDown()\VScroll\Hide = #False
SetThumbPosY_(MarkDown()\VScroll\Pos - Delta)
Draw_(#Vertical)
EndIf
EndIf
EndProcedure
Re: Problem Canvas und MouseWheel
Verfasst: 06.06.2022 14:27
von Andesdaf
Damit weist du der Variable nur den Wert der Konstante zu. Du brauchst aber das Ergebnis von GetGadgetAttribute.
Re: Problem Canvas und MouseWheel
Verfasst: 07.06.2022 08:12
von ProgOldie
Danke, klappt