Oder was falsch gemacht? Im folgenden Code sollen bei SpinGadgets automatisch Wert und Inhalt aneinander angepasst werden. Das funzt unter PB3.91 auch für das Gadget im Fenster und das Gadget auf einem PanelGadget. Bei SpinGadgets auf ScrollArea- und ContainerGadgets ist keine sinnvolle Eingabe möglich, aber das Spin auf und ab geht. Unter PB3.8 war auch für PanelGadgets keine Eingabe möglich.
Habe ich was nicht beachtet? Wenn es ein Bug ist, kann er behoben werden? Darauf läßt ja hoffen, dass es für das PanelGadget anscheinend schon behoben ist. Oder geht das einfach nicht?
Sven
Code: Alles auswählen
Enumeration
#idwdmain
EndEnumeration
Enumeration
#idspin1
#idspin2
#idspin3
#idspin4
#idpan
#idscroll
#idcont
#idexit
EndEnumeration
;- Prozeduren
Procedure CreateDialog() ;Dialog Control aufbauen
If CreateGadgetList(WindowID())
SpinGadget(#idspin1, 20, 20, 60, 20, 0, 100) ;SpinGadget auf Fenster
PanelGadget(#idpan, 10, 60, 120, 60) ;Panel erzeugen
AddGadgetItem(#idpan, -1, "Panel")
SpinGadget(#idspin2, 10, 10, 60, 20, 0, 100) ;SpinGadget auf Fenster
CloseGadgetList()
ScrollAreaGadget(#idscroll, 10, 140, 120, 60, 150, 60, 5, #PB_ScrollArea_Raised) ;ScrollBereich erzeugen
SpinGadget(#idspin3, 10, 10, 60, 20, 0, 100) ;SpinGadget auf Scrollbereich
CloseGadgetList()
ContainerGadget(#idcont, 10, 220, 120, 60, #PB_Container_Raised) ;Container erzeugen
SpinGadget(#idspin4, 10, 10, 60, 20, 0, 100) ;SpinGadget auf Container
CloseGadgetList()
EndIf
SetGadgetText(#idspin1, Str(1))
SetGadgetState(#idspin1, 1)
SetGadgetText(#idspin2, Str(3))
SetGadgetState(#idspin2, 3)
SetGadgetText(#idspin3, Str(5))
SetGadgetState(#idspin3, 5)
SetGadgetText(#idspin4, Str(7))
SetGadgetState(#idspin4, 7)
EndProcedure
Procedure UpdateSpinGadget(GadgetID.l)
Protected GadgetID
If GetGadgetState(GadgetID) <> Val(GetGadgetText(GadgetID)) ;Vergleich Wert mit Text
If EventType() = #PB_EventType_Change ;Eingabe in Textfeld
SetGadgetState(GadgetID, Val(GetGadgetText(GadgetID))) ;Wert an Text anpassen
If GetGadgetState(GadgetID) <> Val(GetGadgetText(GadgetID)) ;Vergleich auf Bereich
SetGadgetText(GadgetID, Str(GetGadgetState(GadgetID))) ;Text update
EndIf
Else
SetGadgetText(GadgetID, Str(GetGadgetState(GadgetID))) ;Text an Wert anpassen
EndIf
EndIf
EndProcedure
If OpenWindow(#idwdmain, 50, 50, 240, 320, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar , "SpinGadgetTest")
CreateDialog()
Repeat
EventID.l = WaitWindowEvent()
If EventID = #PB_EventCloseWindow
End
ElseIf EventID = #PB_Event_Gadget ;Dingsbums gedrückt
GadgetID.l = EventGadgetID()
Select GadgetID
Case #idspin1 ;SpinGadget #1
UpdateSpinGadget(GadgetID)
Case #idspin2 ;SpinGadget #2
UpdateSpinGadget(GadgetID)
Case #idspin3 ;SpinGadget #3
UpdateSpinGadget(GadgetID)
Case #idspin4 ;SpinGadget #4
UpdateSpinGadget(GadgetID)
Case #idexit ;Button Exit
End
Default
EndSelect
EndIf
Until 0
EndIf