After some testing, I have found that my past statement about it not being possible is not true. You have to keep track of which buttons are being clicked and reset them all in the program every time one is clicked. Here is an example:
Strict
Global Window:TGadget = CreateWindow("Test",100,100,640,480)
Global Panel:TGadget = CreatePanel(0,0,640,480,Window)
Global Button1:TGadget = CreateButton("Test 1",10,10,80,10,Panel,BUTTON_RADIO)
Global Button2:TGadget = CreateButton("Test 2",10,25,80,10,Panel,BUTTON_RADIO)
Global Button3:Tgadget = CreateButton("Test 3",10,40,80,10,Panel,BUTTON_RADIO)
Global Selected:Int = 0 'Keep track of which buttons are selected here.
AddHook EmitEventHook,MyHook
Repeat
WaitEvent()
Forever
Function MyHook:Object(id:Int,data:Object,context:Object)
Local event:TEvent = TEvent(data)
Select event.id
Case EVENT_WINDOWCLOSE
End
Case EVENT_GADGETACTION
Select event.source
Case Button1
If Selected & 1 'if button is selected then clear bit, else set bit
Selected = Selected & 6
Else
Selected = Selected | 1
End If
Case Button2
If Selected & 2
Selected = Selected & 5
Else
Selected = Selected | 2
End If
Case Button3
If Selected & 4
Selected = Selected & 3
Else
Selected = Selected | 4
End If
End Select
'Reset all the buttons
SetButtonState(Button1,Selected & 1)
SetButtonState(Button2,(Selected & 2) > 0)
SetButtonState(Button3,(Selected & 4) > 0)
Return Null
End Select
Return data
End Function