[Solved]ButtonGadget toggle

Just starting out? Need help? Post your questions and find answers here.
User avatar
Distorted Pixel
Enthusiast
Enthusiast
Posts: 303
Joined: Sun Aug 29, 2021 4:34 am

[Solved]ButtonGadget toggle

Post by Distorted Pixel »

Hi, I'm trying to get this simple example to detect the button being pressed and show the GadgetState in debug and get the "Ok' button to work. I know the "Ok" button isn't set up yet to except any selection. I am currently just wanting the 4 buttons to show the GadgetState in debug.

I have it working in another program, but the program has a lot to it and I can't figure out how I got it to work. I tried to create this simple program to figure it out. So far not working.

I would like to avoid using gadget event binding as I somehow did in my other program. The Ok button is still not working in my other program either, but the 8 buttons in it are showing the state

What am I missing?

Code: Select all

If OpenWindow(0,0,0,300,200,"Test",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  ButtonGadget(1,10,10,25,25,"1",#PB_Button_Toggle)
  ButtonGadget(2,40,10,25,25,"2",#PB_Button_Toggle)
  ButtonGadget(3,70,10,25,25,"3",#PB_Button_Toggle)
  ButtonGadget(4,100,10,25,25,"4",#PB_Button_Toggle)
  ButtonGadget(5,120,50,25,25,"Ok")
  
  Repeat
    event=WaitWindowEvent()
    
    Bgadget=0
    Select EventID
      Case #PB_Event_Gadget
        Select GadgetID
          Case 1
            If EventGadget()
              Bgadget=GetGadgetState(1)
              Debug "Btn 1 "+Bgadget
            EndIf
            
          Case 2
            If EventGadget()
              Bgadget=GetGadgetState(2)
              Debug "Btn 2 "+Bgadget
            EndIf
            
          Case 3
            If EventGadget()
              Bgadget=GetGadgetState(3)
              Debug "Btn 3 "+Bgadget
            EndIf
            
          Case 4
            If EventGadget()
              Bgadget=GetGadgetState(4)
              Debug "Btn 4 "+Bgadget
            EndIf
            
          Case 5
            If EventGadget()
              Bgadget=GetGadgetState(4)
              Debug "Btn Ok "+Bgadget
            EndIf
            
        EndSelect
    EndSelect
    
  Until event=#PB_Event_CloseWindow
  CloseWindow(0)
EndIf
Last edited by Distorted Pixel on Thu Oct 19, 2023 1:07 pm, edited 1 time in total.
To be popular is way to much work. I just want to be me, myself and I. Oh no, does that mean I'm bipolar? :shock:

No one cares how much you know until they know how much you care
firace
Addict
Addict
Posts: 946
Joined: Wed Nov 09, 2011 8:58 am

Re: ButtonGadget toggle

Post by firace »

Code: Select all

If OpenWindow(0,0,0,300,200,"Test",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  ButtonGadget(1,10,10,25,25,"1",#PB_Button_Toggle)
  ButtonGadget(2,40,10,25,25,"2",#PB_Button_Toggle)
  ButtonGadget(3,70,10,25,25,"3",#PB_Button_Toggle)
  ButtonGadget(4,100,10,25,25,"4",#PB_Button_Toggle)
  ButtonGadget(5,120,50,25,25,"Ok")
  
  Repeat
    event=WaitWindowEvent()
    
    Bgadget=0
    Select Event   ;; ------------------ this
      Case #PB_Event_Gadget
        Select EventGadget()   ;; ------------------ this
          Case 1
            If EventGadget()
              Bgadget=GetGadgetState(1)
              Debug "Btn 1 "+Bgadget
            EndIf
            
          Case 2
            If EventGadget()
              Bgadget=GetGadgetState(2)
              Debug "Btn 2 "+Bgadget
            EndIf
            
          Case 3
            If EventGadget()
              Bgadget=GetGadgetState(3)
              Debug "Btn 3 "+Bgadget
            EndIf
            
          Case 4
            If EventGadget()
              Bgadget=GetGadgetState(4)
              Debug "Btn 4 "+Bgadget
            EndIf
            
          Case 5
            If EventGadget()
              Bgadget=GetGadgetState(4)
              Debug "Btn Ok "+Bgadget
            EndIf
            
        EndSelect
    EndSelect
    
  Until event=#PB_Event_CloseWindow
  CloseWindow(0)
EndIf

User avatar
Distorted Pixel
Enthusiast
Enthusiast
Posts: 303
Joined: Sun Aug 29, 2021 4:34 am

Re: ButtonGadget toggle

Post by Distorted Pixel »

firace wrote: Tue Oct 17, 2023 11:36 pm

Code: Select all

If OpenWindow(0,0,0,300,200,"Test",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  ButtonGadget(1,10,10,25,25,"1",#PB_Button_Toggle)
  ButtonGadget(2,40,10,25,25,"2",#PB_Button_Toggle)
  ButtonGadget(3,70,10,25,25,"3",#PB_Button_Toggle)
  ButtonGadget(4,100,10,25,25,"4",#PB_Button_Toggle)
  ButtonGadget(5,120,50,25,25,"Ok")
  
  Repeat
    event=WaitWindowEvent()
    
    Bgadget=0
    Select Event   ;; ------------------ this
      Case #PB_Event_Gadget
        Select EventGadget()   ;; ------------------ this
          Case 1
            If EventGadget()
              Bgadget=GetGadgetState(1)
              Debug "Btn 1 "+Bgadget
            EndIf
            
          Case 2
            If EventGadget()
              Bgadget=GetGadgetState(2)
              Debug "Btn 2 "+Bgadget
            EndIf
            
          Case 3
            If EventGadget()
              Bgadget=GetGadgetState(3)
              Debug "Btn 3 "+Bgadget
            EndIf
            
          Case 4
            If EventGadget()
              Bgadget=GetGadgetState(4)
              Debug "Btn 4 "+Bgadget
            EndIf
            
          Case 5
            If EventGadget()
              Bgadget=GetGadgetState(4)
              Debug "Btn Ok "+Bgadget
            EndIf
            
        EndSelect
    EndSelect
    
  Until event=#PB_Event_CloseWindow
  CloseWindow(0)
EndIf

Thank you firace, now that you showed me, those 2 things are in my other program lol. I realize I put "EventID" instead of just "event for the one
To be popular is way to much work. I just want to be me, myself and I. Oh no, does that mean I'm bipolar? :shock:

No one cares how much you know until they know how much you care
Gérard
User
User
Posts: 48
Joined: Sat Oct 17, 2015 6:00 pm
Location: France
Contact:

Re: ButtonGadget toggle

Post by Gérard »

Hello,

Another approach I use in my applications:

Code: Select all

EnableExplicit

Enumeration Windows
  #WinMain
EndEnumeration

Enumeration Menus
  #MenuMain
EndEnumeration

Enumeration MenuItems
  #MenuClose
EndEnumeration

Enumeration Gadget
 #Button
 #ButtonEnd=#Button+5
EndEnumeration

Define Event, indexMenu, indexGadget, indexGadgetType 

Define i

If OpenWindow(#WinMain,0,0,300,200,"Test",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  If CreateMenu(#MenuMain, WindowID(#WinMain))
    MenuTitle("File")
    MenuItem(#MenuClose, "Close")
  EndIf
  i=0
  i+1:ButtonGadget(#Button+i,10 ,10,25,25,"1",#PB_Button_Toggle)
  i+1:ButtonGadget(#Button+i,40 ,10,25,25,"2",#PB_Button_Toggle)
  i+1:ButtonGadget(#Button+i,70 ,10,25,25,"3",#PB_Button_Toggle)
  i+1:ButtonGadget(#Button+i,100,10,25,25,"4",#PB_Button_Toggle)
  i+1:ButtonGadget(#Button+i,120,50,25,25,"Ok")
  CompilerIf #PB_Compiler_Debugger
    If #Button+i > #ButtonEnd
      Debug ""
      Debug "#Button > #ButtonEnd"
      Debug ""
      Debug "#ButtonEnd = #Button + " + Str(i)
      End
    EndIf
  CompilerEndIf
  
  Repeat
    Event = WaitWindowEvent(20)
    
    Select Event
      Case #PB_Event_Menu
        indexMenu = EventMenu()
        Select indexMenu
          Case #MenuClose : Break
        EndSelect
        
      Case #PB_Event_Gadget
        indexGadget     = EventGadget()
        indexGadgetType = EventType()
        Select indexGadget
          Case #Button To #ButtonEnd
            Debug "Button "+GetGadgetText(indexGadget)+" - state "+GetGadgetState(indexGadget)
        EndSelect
        
      Case #PB_Event_CloseWindow
        Break
    EndSelect
  ForEver
EndIf
Gérard
■ Win10 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.00 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ cage sur le forum Français
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
User avatar
Distorted Pixel
Enthusiast
Enthusiast
Posts: 303
Joined: Sun Aug 29, 2021 4:34 am

Re: ButtonGadget toggle

Post by Distorted Pixel »

Gérard wrote: Wed Oct 18, 2023 12:26 am Hello,

Another approach I use in my applications:

Code: Select all

EnableExplicit

Enumeration Windows
  #WinMain
EndEnumeration

Enumeration Menus
  #MenuMain
EndEnumeration

Enumeration MenuItems
  #MenuClose
EndEnumeration

Enumeration Gadget
 #Button
 #ButtonEnd=#Button+5
EndEnumeration

Define Event, indexMenu, indexGadget, indexGadgetType 

Define i

If OpenWindow(#WinMain,0,0,300,200,"Test",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  If CreateMenu(#MenuMain, WindowID(#WinMain))
    MenuTitle("File")
    MenuItem(#MenuClose, "Close")
  EndIf
  i=0
  i+1:ButtonGadget(#Button+i,10 ,10,25,25,"1",#PB_Button_Toggle)
  i+1:ButtonGadget(#Button+i,40 ,10,25,25,"2",#PB_Button_Toggle)
  i+1:ButtonGadget(#Button+i,70 ,10,25,25,"3",#PB_Button_Toggle)
  i+1:ButtonGadget(#Button+i,100,10,25,25,"4",#PB_Button_Toggle)
  i+1:ButtonGadget(#Button+i,120,50,25,25,"Ok")
  CompilerIf #PB_Compiler_Debugger
    If #Button+i > #ButtonEnd
      Debug ""
      Debug "#Button > #ButtonEnd"
      Debug ""
      Debug "#ButtonEnd = #Button + " + Str(i)
      End
    EndIf
  CompilerEndIf
  
  Repeat
    Event = WaitWindowEvent(20)
    
    Select Event
      Case #PB_Event_Menu
        indexMenu = EventMenu()
        Select indexMenu
          Case #MenuClose : Break
        EndSelect
        
      Case #PB_Event_Gadget
        indexGadget     = EventGadget()
        indexGadgetType = EventType()
        Select indexGadget
          Case #Button To #ButtonEnd
            Debug "Button "+GetGadgetText(indexGadget)+" - state "+GetGadgetState(indexGadget)
        EndSelect
        
      Case #PB_Event_CloseWindow
        Break
    EndSelect
  ForEver
EndIf
Gérard
Thank you, I will take a look at this tonight. I have already solved the issue, but this does look interesting.
To be popular is way to much work. I just want to be me, myself and I. Oh no, does that mean I'm bipolar? :shock:

No one cares how much you know until they know how much you care
Post Reply