[Resolved] radio buttons - question

Just starting out? Need help? Post your questions and find answers here.
User avatar
SPH
Enthusiast
Enthusiast
Posts: 561
Joined: Tue Jan 04, 2011 6:21 pm

[Resolved] radio buttons - question

Post by SPH »

Hi,
I have a list of radio buttons.
So far, so good.
But how do I know which one is checked?
I can't query each button number, can I?

Thanks!

Code: Select all

For i= 1 To 20
  OptionGadget(i, i*92-45, top+28, 60, 24, Str(i+2)+"x"+Str(i+2))
Next
  
Last edited by SPH on Thu May 29, 2025 9:31 pm, edited 1 time in total.

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Portable LENOVO ideapad 110-17ACL 64 bits
Version de PB : 6.12LTS - 64 bits
Axolotl
Enthusiast
Enthusiast
Posts: 798
Joined: Wed Dec 31, 2008 3:36 pm

Re: radio buttons - question

Post by Axolotl »

add something like this to your event loop:

Code: Select all

;.......
        Case #PB_Event_Gadget 
          Select EventGadget() 
            Case 1 To 20  ; all OptionGadgets 
              Debug " => Option  " + EventGadget() 
          EndSelect 
;.......
Just because it worked doesn't mean it works.
PureBasic 6.04 (x86) and <latest stable version and current alpha/beta> (x64) on Windows 11 Home. Now started with Linux (VM: Ubuntu 22.04).
User avatar
Kiffi
Addict
Addict
Posts: 1484
Joined: Tue Mar 02, 2004 1:20 pm
Location: Amphibios 9

Re: radio buttons - question

Post by Kiffi »

Code: Select all

Procedure OptionGadgetEvent()
  
  Debug EventGadget()
  Debug GetGadgetText(EventGadget())
  
EndProcedure

OpenWindow(0, 0, 0, 1200, 200, "OptionGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)

For i= 1 To 20
  OptionGadget(i, i*92-45, top+28, 60, 24, Str(i+2)+"x"+Str(i+2))
  BindGadgetEvent(i, @OptionGadgetEvent())
Next

Repeat
Until WaitWindowEvent()=#PB_Event_CloseWindow
Hygge
User avatar
SPH
Enthusiast
Enthusiast
Posts: 561
Joined: Tue Jan 04, 2011 6:21 pm

Re: radio buttons - question

Post by SPH »

Thank you guys for your reactivity.

I look that... :idea:

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Portable LENOVO ideapad 110-17ACL 64 bits
Version de PB : 6.12LTS - 64 bits
User avatar
SPH
Enthusiast
Enthusiast
Posts: 561
Joined: Tue Jan 04, 2011 6:21 pm

Re: radio buttons - question n°2

Post by SPH »

I've refined my code to show you the situation I'm in.
Revisit my code word for word and correct the "debug"

Thanks

Code: Select all

If OpenWindow(0, 0, 0, 170, 160, "OptionGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    OptionGadget(0, 30, 20, 90, 20, "Option 1")
    OptionGadget(1, 30, 45, 90, 20, "Option 2")
    OptionGadget(2, 30, 70, 90, 20, "Option 3")
    
    SetGadgetState(1, 1)   ; sélectionne la deuxième option
    
    ButtonGadget(10, 30,  100, 100, 40, "Save")

  Repeat
    Event = WaitWindowEvent()
    
    If Event = #PB_Event_Gadget
      
      Select EventGadget()
        Case 10 ; save pref
        Debug "the radio button is : "+who
      EndSelect
      
    EndIf
    
  Until Event = #PB_Event_CloseWindow
  
EndIf

End


!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Portable LENOVO ideapad 110-17ACL 64 bits
Version de PB : 6.12LTS - 64 bits
User avatar
SPH
Enthusiast
Enthusiast
Posts: 561
Joined: Tue Jan 04, 2011 6:21 pm

Re: radio buttons - question

Post by SPH »

Reponse :

Code: Select all

If OpenWindow(0, 0, 0, 170, 160, "OptionGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    OptionGadget(0, 30, 20, 90, 20, "Option 1")
    OptionGadget(1, 30, 45, 90, 20, "Option 2")
    OptionGadget(2, 30, 70, 90, 20, "Option 3")
    
    SetGadgetState(1, 1)   ; sélectionne la deuxième option
    
    ButtonGadget(10, 30,  100, 100, 40, "Save")

  Repeat
    Event = WaitWindowEvent()
    
    If Event = #PB_Event_Gadget
      
      Select EventGadget()
        Case 10 ; save pref
          For i=0 To 2
            Debug "the radio button "+Str(i+1)+"is : "+GetGadgetState(i)
          Next
          
      EndSelect
      
    EndIf
    
  Until Event = #PB_Event_CloseWindow
  
EndIf

End


!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Portable LENOVO ideapad 110-17ACL 64 bits
Version de PB : 6.12LTS - 64 bits
AZJIO
Addict
Addict
Posts: 2141
Joined: Sun May 14, 2017 1:48 am

Re: [Resolved] radio buttons - question

Post by AZJIO »

Code: Select all

EnableExplicit

Define i, eg

If OpenWindow(0, 0, 0, 200, 610, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
	For i= 1 To 20
		ButtonGadget(i, 120, i * 28, 26, 26, Chr(i + 64))
	Next
	For i= 1 To 20
		OptionGadget(i + 20, 10, i * 28, 60, 24, Str(i))
	Next
	;- Loop
	Repeat
		Select WaitWindowEvent()
			Case #PB_Event_Gadget
				eg = EventGadget()
				Select eg
					Case 1 To 20
						Debug "Button" + Chr(eg + 64)
						SetGadgetText(eg, Chr(eg + 64 + 32))
					Case 21 To 40
						Debug "Option" + Str(eg - 20)
						SetGadgetText(eg, "click")
				EndSelect
			Case #PB_Event_CloseWindow
				CloseWindow(0)
				End
		EndSelect
	ForEver
EndIf
Axolotl
Enthusiast
Enthusiast
Posts: 798
Joined: Wed Dec 31, 2008 3:36 pm

Re: [Resolved] radio buttons - question

Post by Axolotl »

With these examples I would always strongly recommend the use of constants/enumerations. (just my opinion)
Just because it worked doesn't mean it works.
PureBasic 6.04 (x86) and <latest stable version and current alpha/beta> (x64) on Windows 11 Home. Now started with Linux (VM: Ubuntu 22.04).
User avatar
jacdelad
Addict
Addict
Posts: 1991
Joined: Wed Feb 03, 2021 12:46 pm
Location: Riesa

Re: [Resolved] radio buttons - question

Post by jacdelad »

...depends on whether you know how many gadgets to create beforehand. Otherwise an array would be suitable too.
Good morning, that's a nice tnetennba!

PureBasic 6.21/Windows 11 x64/Ryzen 7900X/32GB RAM/3TB SSD
Synology DS1821+/DX517, 130.9TB+50.8TB+2TB SSD
Post Reply