Seite 1 von 1
Editierbarkeit von SpinGadgets
Verfasst: 30.11.2009 21:55
von Mok
Hallo

Kann es irgendwie sein, dass sich SpinGadgets nicht editieren lassen, selbst wenn man #PB_Spin_ReadOnly weglässt? Beispielsweise funzt folgender Code aus der Hilfe nicht:
Code: Alles auswählen
If OpenWindow(0, 0, 0, 140, 70, "SpinGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
SpinGadget (0, 20, 20, 100, 25, 0, 1000)
SetGadgetState (0, 5) : SetGadgetText(0, "5") ; legt den Anfangswert fest
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_Gadget
If EventGadget() = 0
SetGadgetText(0, Str(GetGadgetState(0)))
EndIf
EndIf
Until Event = #PB_Event_CloseWindow
EndIf
MfG, Mok
PS: Vielleicht liegts an einem Bug der Version 4.30, ich werd mir 4.40 aber erst laden, sobald ich format c: mache, und mir anschließend Win7 raufhaue... und das kann noch dauern
Edit:
FAIL
Es geht doch, aber mit dem Flag #PB_ComboBox_Editable. Und der Fail des ganzen: Warum steht es nicht in der Hilfe und warum muss ich ein ComboBox-Flag dafür benutzen?

Re: Editierbarkeit von SpinGadgets
Verfasst: 30.11.2009 22:10
von STARGÅTE
es lässt sich nicht editiren weil du die Änderung imemr sofot wieder änderst:
Code: Alles auswählen
If EventGadget() = 0
SetGadgetText(0, Str(GetGadgetState(0)))
EndIf
was soll da also passieren ?
Jedes Event (auch eine eingabe) führt dazu das wieder das reingeschrieben wird was vorher da war!
und #PB_ComboBox_Editable hat nix da drin verloren, sonden du musst die das SpinGadget richtig benutzen !
Code: Alles auswählen
If OpenWindow(0, 0, 0, 140, 70, "SpinGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
SpinGadget (0, 20, 20, 100, 25, 0, 1000)
SetGadgetState (0, 5) : SetGadgetText(0, "5") ; legt den Anfangswert fest
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_Gadget
If EventGadget() = 0
If EventType() <> #PB_EventType_Change
SetGadgetText(0, Str(GetGadgetState(0)))
Else
SetGadgetState(0, Val(GetGadgetText(0)))
EndIf
EndIf
EndIf
Until Event = #PB_Event_CloseWindow
EndIf
Also:
Bei einer
Eingabe (Text) den State-Wert anpassen!
Bei einem
Spin (State) den Text-Wert anpassen!
EDIT:
Sehe aber gerade das die Hilfe in diesem fall wirklich Falsch ist, das sollte behoben werden, ich poste das mal ...
Re: Editierbarkeit von SpinGadgets
Verfasst: 30.11.2009 22:15
von ts-soft
Der Code von StarGate hat auch noch nicht ganz den gewünschten Effekt,
meins scheint bei mehrstelligen Zahlen noch Nachbearbeitung zu bedürfen,
aber ein bissel Arbeit soll für Mok ja übrig bleiben
Code: Alles auswählen
If OpenWindow(0, 0, 0, 140, 70, "SpinGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
SpinGadget (0, 20, 20, 100, 25, 0, 1000)
SetGadgetState (0, 5) : SetGadgetText(0, "5") ; legt den Anfangswert fest
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_Gadget
If EventGadget() = 0
Select EventType()
Case #PB_EventType_Change
SetGadgetText(0, GetGadgetText(0))
SetGadgetState(0, Val(GetGadgetText(0)))
Default
SetGadgetText(0, Str(GetGadgetState(0)))
EndSelect
EndIf
EndIf
Until Event = #PB_Event_CloseWindow
EndIf
gruß
Thomas
Re: Editierbarkeit von SpinGadgets
Verfasst: 30.11.2009 22:19
von STARGÅTE
jo habs eben selber editiert.
aber das hier:
Code: Alles auswählen
SetGadgetText(0, GetGadgetText(0))
SetGadgetState(0, Val(GetGadgetText(0)))
ist wohl unnötig ?
denn jetzt kommt bei der eingabe von 123 bei mir 321 raus, weil da n "Schleife eingebaut" ist, du musst den ausgelesenen text nicht wieder befüllen:
Code: Alles auswählen
If OpenWindow(0, 0, 0, 140, 70, "SpinGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
SpinGadget (0, 20, 20, 100, 25, 0, 1000)
SetGadgetState (0, 5) : SetGadgetText(0, "5") ; legt den Anfangswert fest
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_Gadget
If EventGadget() = 0
Select EventType()
Case #PB_EventType_Change
SetGadgetState(0, Val(GetGadgetText(0)))
Default
SetGadgetText(0, Str(GetGadgetState(0)))
EndSelect
EndIf
EndIf
Until Event = #PB_Event_CloseWindow
EndIf
Re: Editierbarkeit von SpinGadgets
Verfasst: 30.11.2009 22:29
von ts-soft
Hab doch gesagt, ist noch nicht fehlerfrei
War zu faul weiter drüber nachzudenken

Re: Editierbarkeit von SpinGadgets
Verfasst: 01.12.2009 21:28
von Mok
Na ja... Man schreibt von rechts nach links... da wir aber keine Araber sind, arbeite ich an "von-links-nach-rechts"... hab aber immo keinen Plan wie's geht.
Lässt es sich auch irgendwie erklären, dass es mit #PB_ComboBox_Editable funzt... wenn auch nicht 100%ig richtig?
Re: Editierbarkeit von SpinGadgets
Verfasst: 03.12.2009 20:18
von Mok
Push
OK, ich allein bin zu blöd, das Problem zu lösen

Re: Editierbarkeit von SpinGadgets
Verfasst: 03.12.2009 20:25
von ts-soft
Bist Du nicht in der Lage zu lesen?
Die Lösung ist doch schon lange da, aber extra noch mal für Dich:
Code: Alles auswählen
If OpenWindow(0, 0, 0, 140, 70, "SpinGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
SpinGadget (0, 20, 20, 100, 25, 0, 1000)
SetGadgetState (0, 5) : SetGadgetText(0, "5") ; legt den Anfangswert fest
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_Gadget
If EventGadget() = 0
Select EventType()
Case #PB_EventType_Change
SetGadgetState(0, Val(GetGadgetText(0)))
Default
SetGadgetText(0, Str(GetGadgetState(0)))
EndSelect
EndIf
EndIf
Until Event = #PB_Event_CloseWindow
EndIf
Gruß
Thomas
Re: Editierbarkeit von SpinGadgets
Verfasst: 03.12.2009 20:29
von Mok
Hab doch gesagt, ist noch nicht fehlerfrei
War zu faul weiter drüber nachzudenken

Das sagt mir was anderes... however, thx!
Re: Editierbarkeit von SpinGadgets
Verfasst: 03.12.2009 20:34
von ts-soft
Mok hat geschrieben:Hab doch gesagt, ist noch nicht fehlerfrei
War zu faul weiter drüber nachzudenken

Das sagt mir was anderes... however, thx!
War eine Zeile zuviel
Dieser Fehler wird im nächsten Beitrag von StarGate aufgeklärt, hast wohl nicht
gelesen
