Editierbarkeit von SpinGadgets

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

Editierbarkeit von SpinGadgets

Beitrag 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? :?
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Editierbarkeit von SpinGadgets

Beitrag 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 ...
Zuletzt geändert von STARGÅTE am 30.11.2009 22:15, insgesamt 1-mal geändert.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Editierbarkeit von SpinGadgets

Beitrag 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
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Editierbarkeit von SpinGadgets

Beitrag 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 
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Editierbarkeit von SpinGadgets

Beitrag von ts-soft »

Hab doch gesagt, ist noch nicht fehlerfrei :lol:

War zu faul weiter drüber nachzudenken :wink:
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

Re: Editierbarkeit von SpinGadgets

Beitrag 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?
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

Re: Editierbarkeit von SpinGadgets

Beitrag von Mok »

Push
OK, ich allein bin zu blöd, das Problem zu lösen :( :lamer:
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Editierbarkeit von SpinGadgets

Beitrag 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
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

Re: Editierbarkeit von SpinGadgets

Beitrag 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!
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Editierbarkeit von SpinGadgets

Beitrag 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:
Antworten