SpinGadget editierbar machen

Anfängerfragen zum Programmieren mit PureBasic.
Jake
Beiträge: 121
Registriert: 28.05.2005 04:10
Wohnort: Berlin

SpinGadget editierbar machen

Beitrag von Jake »

Hallo,

kann man ein SpinGadget editierbar machen? Also so das ich nicht nur die Pfeile benutzen kann sondern auch mit dem Cursor einen Wert einstragen kann.
Ich habe schon versucht es hinzubekommen aber es geht immer nur das eine oder das andere.
Bei dem Beispiel aus der Hilfe kann man ja nur die Pfeile benutzten.
MfG Jake
Benutzeravatar
Life-for-fun
Beiträge: 21
Registriert: 30.05.2005 20:28
Wohnort: Offenbach
Kontaktdaten:

Beitrag von Life-for-fun »

Du musst einfach nur diese Zeile entfernen:

Code: Alles auswählen

        SetGadgetText(0,Str(GetGadgetState(0))) 
Deshalb wird es immer zurückgesetzt ;)
Jake
Beiträge: 121
Registriert: 28.05.2005 04:10
Wohnort: Berlin

Beitrag von Jake »

Das geht nicht! Wie soll ich dann die Pfeile benutzten. Es soll beides gehen so wie es in allen möglichen Anwendungen auch ist.
Wenn ich diese Zeile entferne dann ändert sich nur der Text und nicht der Status.
MfG Jake
Benutzeravatar
Life-for-fun
Beiträge: 21
Registriert: 30.05.2005 20:28
Wohnort: Offenbach
Kontaktdaten:

Beitrag von Life-for-fun »

Jap, stimmt ;) war gestern ein bissi müde und sollte zudem meinen PC ausmachen... Eltern /:-> Aber macht ja nix.
Setze einfach für die Stelle oben folgendes ein:

Code: Alles auswählen

   If lastState.l<>GetGadgetState(0)
   SetGadgetText(0,Str(GetGadgetState(0))) 
   lastState.l=GetGadgetState(0)
   lastText.s=GetGadgetText(0)
   ElseIf lastText.s<>GetGadgetText(0)
   SetGadgetState(0,Val(GetGadgetText(0))) 
   lastText.s=GetGadgetText(0)
   lastState.l=GetGadgetState(0)
   EndIf
Damit dürfte es laufen ;) Nun wird Status und Text geändert ;) Musst halt dazu zwei Variable nehmen.
Jake
Beiträge: 121
Registriert: 28.05.2005 04:10
Wohnort: Berlin

Beitrag von Jake »

Warum probierst du nicht aus was du geschrieben hast bevor du es postetst. Nur drei Zeilen mehr und du hast ein Laufendes Programm und würdest sehen das es nicht geht.
Wie soll man mit deinem Code die Pfeile benutzen? Das geht so nicht. Ich habe solche Experimente schon gemacht bevor ich diese Frage hier gestellt habe.
Wenn es so einfach wäre hätte ich es selbst hinbekommen. Will dich hier nicht runtermachen aber ich glaube du bist genau so ein Anfänger wie ich es bin und ich bin auf der suche nach einer professionellen Lösung.

Ich kenne kein Programm bei dem das was ich möchte nicht geht. Nur in Purebasic geht das ohne weiteres wohl nicht.
MfG Jake
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: SpinGadget editierbar machen

Beitrag von Kiffi »

> kann man ein SpinGadget editierbar machen?

http://forums.purebasic.com/german/viewtopic.php?t=2909

Grüße ... Kiffi
Jake
Beiträge: 121
Registriert: 28.05.2005 04:10
Wohnort: Berlin

Beitrag von Jake »

Danke Kiffi genau das habe ich gesucht. Hab das auch schon fast so gehabt aber eine Zeile hatte ich nicht drin.

Code: Alles auswählen

If OpenWindow(0,0,0,140,70,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"SpinGadget") And CreateGadgetList(WindowID(0))
    SpinGadget     (0,20,20,100,25,0,1000)
    SetGadgetState (0,5) : SetGadgetText(0,"5")   ; Anfangswert festlegen
    Repeat
      ev.l = WaitWindowEvent()
      If ev=#PB_Event_Gadget
        If EventGadgetID() = 0
          If GetGadgetState(0)<>Val(GetGadgetText(0)) ; hat sich was geändert?
            If EventType()=#PB_EventType_Change ; = Eingabe in Textfeld
              SetGadgetState(0,Val(GetGadgetText(0)))
            Else
              SetGadgetText(0,Str(GetGadgetState(0)))
            EndIf
          EndIf
        EndIf
      EndIf
    Until ev.l = #PB_Event_CloseWindow
EndIf
Und zwar diese hier:

Code: Alles auswählen

If GetGadgetState(0)<>Val(GetGadgetText(0)) ; hat sich was geändert?
Schon peinlich das nicht selbst gefunden zu haben, habe mir das Code-Archiv nämlich runtergeladen und auch schon darin gesucht.
MfG Jake
Benutzeravatar
Life-for-fun
Beiträge: 21
Registriert: 30.05.2005 20:28
Wohnort: Offenbach
Kontaktdaten:

Beitrag von Life-for-fun »

@ Jake:
Ich probier meine Sachen schon aus, bevor ich sie hier reinschreibe. Bei mir läuft es wenn ich es einsetze:

Code: Alles auswählen

  If OpenWindow(0,0,0,140,70,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"SpinGadget") And CreateGadgetList(WindowID(0))
    SpinGadget     (0,20,20,100,25,0,1000)
    SetGadgetState (0,5) : SetGadgetText(0,"5")   ; Anfangswert festlegen
    Repeat
      Event = WaitWindowEvent()
      If EventGadgetID() = 0
   If lastState.l<>GetGadgetState(0) 
   SetGadgetText(0,Str(GetGadgetState(0))) 
   lastState.l=GetGadgetState(0) 
   lastText.s=GetGadgetText(0) 
   ElseIf lastText.s<>GetGadgetText(0) 
   SetGadgetState(0,Val(GetGadgetText(0))) 
   lastText.s=GetGadgetText(0) 
   lastState.l=GetGadgetState(0) 
   EndIf
        WindowEvent()      ; absolut notwendig, um Endlos-Schleifen zu vermeiden
      EndIf
    Until Event = #PB_Event_CloseWindow
  EndIf
Erfüllt denselben Zweck wie der Code von Kiffi, auch wenn der professioneller ist ;)
JoRo
Beiträge: 61
Registriert: 25.09.2004 17:45

Beitrag von JoRo »

Nur für alle, die den Quatsch hier außer mir auch noch lesen:
Standardmäßig unterstützt ein SpinGadget nicht den Eventtype Change.
Es kann ja sein, dass es dafür ein Lib gibt, weiß ich nicht, aber mit der normalen Version von PB funktioniert das Nicht!!!

Lösung:
Spingadget so weit verkleinern in der x-Dimension, dass nur die Pfiele sichtbar sind und ein StringGadget daneben setzen. Das kann dann wie in den Beispielen oben über das SpinGadget gesteuert werden.


Johannes
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

Beitrag von ts-soft »

JoRo hat geschrieben:Nur für alle, die den Quatsch hier außer mir auch noch lesen:
Standardmäßig unterstützt ein SpinGadget nicht den Eventtype Change.
Es kann ja sein, dass es dafür ein Lib gibt, weiß ich nicht, aber mit der normalen Version von PB funktioniert das Nicht!!!
Bei mir funktioniert es :freak: , vielleicht ist mein Purebasic ja kaputt :(

:lol:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten