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

Code: Alles auswählen

MouseWheel=#PB_Canvas_WheelDelta
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