Code: Select all
;by einander
;january 19-2009
;PB 4.30
Procedure SpinWrap(SG,EvTyp, ARRAY Arr.s(1))
Static Value
Select EvTyp
Case 1
If Value=GetGadgetAttribute(SG,#PB_Spin_Maximum)
SetGadgetState(SG,GetGadgetAttribute(SG,#PB_Spin_Minimum))
EndIf
Case -1
If Value = GetGadgetAttribute(SG,#PB_Spin_Minimum)
SetGadgetState(SG,GetGadgetAttribute(SG,#PB_Spin_Maximum))
EndIf
EndSelect
If ArraySize(Arr())
SetGadgetText(SG, Arr(GetGadgetState(SG)))
Else
SetGadgetText(SG, Str(GetGadgetState(SG)))
EndIf
Value=GetGadgetState(SG)
EndProcedure
;<<<<<<<<<<<<<<<<<<<
; test it
If OpenWindow(0, 200,200,300,100, "SpinWrap", #PB_Window_SystemMenu | 1 )
StickyWindow(0,1)
SG=SpinGadget(#PB_Any, 40, 10, 100, 25, 0, 4)
SetGadgetState (SG, 2)
;==============
; To wrap numbers (without text), Dim SpinArr.s(0)
Dim SpinArr.s(4)
SpinArr(0)="Zero"
SpinArr(1)="One"
SpinArr(2)="Two"
SpinArr(3)="Three"
SpinArr(4)="Four"
SetGadgetText(SG,SpinArr(GetGadgetState(SG)))
;=============
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_Gadget
If EventGadget() = SG
SpinWrap(SG,EventType(),SpinArr() )
EndIf
EndIf
Until Event = #PB_Event_CloseWindow
EndIf