GetGadgetState()

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Vermilion
Beiträge: 1846
Registriert: 08.04.2006 16:00
Computerausstattung: Apple iMac (2010) & HP Notebook
Wohnort: Heidekreis

Beitrag von Vermilion »

Mist, Kaeru war schneller... -.-

Hab hier auch ne funktionierende Lösung

Edit: etwas schöner gemacht und ohne Variablen

Code: Alles auswählen

OpenWindow(0,0,0,640,480,"Test",#PB_Window_ScreenCentered)
  CreateGadgetList(WindowID(0))
    TextGadget(0,10, 10,090,20,"Team")
    TextGadget(1,100, 10,090,20,"Spieler")
    
    LoadFont(1,"Arial",26,#PB_Font_Bold)
    SetGadgetFont(#PB_Default,FontID(1))
    
    TextGadget(10,10,50,40,40,"1",#PB_Text_Center |#PB_Text_Border)
    TextGadget(11,10,140,40,40,"2",#PB_Text_Center |#PB_Text_Border)
    TextGadget(12,10,230,40,40,"3",#PB_Text_Center |#PB_Text_Border)
    TextGadget(13,10,320,40,40,"4",#PB_Text_Center |#PB_Text_Border)
    
    SetGadgetColor(10, #PB_Gadget_FrontColor,#Red)
    SetGadgetColor(11, #PB_Gadget_FrontColor,#Green)
    SetGadgetColor(12, #PB_Gadget_FrontColor,#Blue)
    SetGadgetColor(13, #PB_Gadget_FrontColor,#Gray)
    SetGadgetFont(#PB_Default, #PB_Default)

    LoadImage(0, "0.bmp")
    LoadImage(1, "1.bmp")
    LoadImage(2, "2.bmp")

    ButtonImageGadget(20,100,50,60,80, ImageID(0))
    ButtonImageGadget(21,100,140,60,80, ImageID(0))
    ButtonImageGadget(22,100,230,60,80, ImageID(0))
    ButtonImageGadget(23,100,320,60,80, ImageID(0))

    ButtonGadget(81,WindowWidth(0)-130, WindowHeight(0)-25,100,20,"Fertig")


Auswahl.s=""

Repeat

  Event = WindowEvent()  
   
  If Event = #PB_Event_Gadget
  
    Gadget  = EventGadget() 
    
    Select Gadget
      Case 20
      
        If GetGadgetState(20) = ImageID(0)
        
          SetGadgetState(20, ImageID(1))
          
        ElseIf GetGadgetState(20) = ImageID(1)
        
          SetGadgetState(20, ImageID(2))
          
        ElseIf GetGadgetState(20) = ImageID(2)
        
          SetGadgetState(20, ImageID(0))
          
        EndIf
   
      Case 80
      
        Auswahl="Abbruch"
   
      Case 81
      
        Auswahl="Fertig"
   
    EndSelect
    
  EndIf
  
Until Event = #PB_Event_CloseWindow Or Auswahl<>""

CloseWindow(0)
Bild

Immer die neueste PureBasic Version. Auf allem Betriebssystemen. Ich bin ein OS-Nomad!
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

nuja... wie gesagt, ich finde Get/Set nicht schön, das isn Call mehr als nötig und drei unnötige Ifs.
außerdem müßtest du später, um die information weiter zu verarbeiten,
noch ein Get ausführen, dort brauchst du dann wieder drei Ifs,
um eine Variable auf den tatsächlichen zustand 0,1,2 zu setzen.

also, warum nicht gleich einfach und von anfang an ne variable,
die dann nach abschicken der eingabeseite zum verarbeiten der information direkt zur verfügung steht?


und außerdem hast du auch nochn load drin und keinen bilderzeuger, kann man also auch nicht copy-paste-test...


PS:
aber immerhon hast du den kernfehler gefunden... so was blödes, hätte ich auch sehen müssen...

Code: Alles auswählen

   If GetGadgetState(20)=ImageID(0) : SetGadgetState(20,ImageID(1)) :EndIf
   If GetGadgetState(20)=ImageID(1) : SetGadgetState(20,ImageID(2)) :EndIf
   If GetGadgetState(20)=ImageID(2) : SetGadgetState(20,ImageID(0)) :EndIf
der code macht folgendes:

Code: Alles auswählen

   If GetGadgetState(20)=ImageID(0) : SetGadgetState(20,ImageID(1)) :EndIf
oh, mein zustand ist 0, mach ich ne 1 draus.
jetzt ist der zustand 1.

Code: Alles auswählen

   If GetGadgetState(20)=ImageID(1) : SetGadgetState(20,ImageID(2)) :EndIf
oh, mein zustand ist 1, mach ich ne 2 draus.
jetzt ist der zustand 2.

Code: Alles auswählen

   If GetGadgetState(20)=ImageID(2) : SetGadgetState(20,ImageID(0)) :EndIf
oh, mein zustand ist 2, mach ich ne 0 draus.
jetzt ist der zustand 0.

und der zustand bleibt immer 0 weil er bei jedem click 3x geändert wird.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Vermilion
Beiträge: 1846
Registriert: 08.04.2006 16:00
Computerausstattung: Apple iMac (2010) & HP Notebook
Wohnort: Heidekreis

Beitrag von Vermilion »

Mh, wollte seinen Code nur verbessern, so wie er ist. Das mit der Variable ist in der Tat besser.
und außerdem hast du auch nochn load drin und keinen bilderzeuger, kann man also auch nicht copy-paste-test...
:roll: Ja, ich habe mir halt schnell 3 Bitmaps zusammengezimmert.. ich langweile mich in diesen Tagen sowieso tot.. (Ferien) ..da kann man ja sowas noch schnell machen.

Da mit dem Kernfehler war ja noch was anders.. die ImageID. Die läuft jetzt auch rund. Wie dem auch sei, es funktionert, und mal hoffen, Dieter hat was er wollte. <)

Edit: als ich vorher schrieb "ohne variablen" meinte ich mein vorherigen Code.. da hatte ich auch Variablen drin, aber das machte das ganze ein bisschen umständlicher.. also war nicht böse auf deins bezogen :oops:
Bild

Immer die neueste PureBasic Version. Auf allem Betriebssystemen. Ich bin ein OS-Nomad!
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> Da mit dem Kernfehler war ja noch was anders.. die ImageID.

wu?
der einzige effektive unterschied bei dir ist ElseIf anstatt eines sich selbst überschreibenden mehrfachen If.


> Edit: als ich vorher schrieb "ohne variablen" meinte ich mein vorherigen Code.. da hatte ich auch Variablen drin, aber das machte das ganze ein bisschen umständlicher..

hatte ich schon richtig verstanden.

ist aber im endeffekt weniger umständlich, da man sowieso das ergebnis benötigt um es weiter zu verarbeiten, sonst bräuchte man ja nix einstellen, wenn man nix draus machen will.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
GreyEnt
Beiträge: 376
Registriert: 20.07.2006 19:41

Beitrag von GreyEnt »

ich schäme mich. :oops: :(
das mir das nicht selber aufgefallen ist.

vielen dank an euch.
Antworten