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 :mrgreen:

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 :lol:

War zu faul weiter drüber nachzudenken :wink:

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 :( :lamer:

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 :lol:

War zu faul weiter drüber nachzudenken :wink:
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 :lol:

War zu faul weiter drüber nachzudenken :wink:
Das sagt mir was anderes... however, thx!
War eine Zeile zuviel :mrgreen:
Dieser Fehler wird im nächsten Beitrag von StarGate aufgeklärt, hast wohl nicht
gelesen :lol: