Hi Johnny,
thanks for your reply.
Usually my radio buttons are working. Just in this case, they don't. - And all of them had the same listener.
But I discovered that I can get them working, when I don't set all of the buttons, labels etc. in one loop. I seperated the radio buttons and set them in an extra loop. Now they are working again.
That doesn't make much sense to me, but at least it works.
2015-05-16 13:08 GMT+02:00 Johnny Rosenberg <gurus.knugum@gmail.com <mailto:gurus.knugum@gmail.com>>:
2015-05-16 8:59 GMT+02:00 X Roemer <x-roemer@web.de
<mailto:x-roemer@web.de>>:
Hi,
I use always the same mechanism to add radio buttons by code.
Usually I add one after one, directly after each other, and they
get grouped automatically. But this time I can choose more than
one and the others don't get disabled. (See screenshot)
I know, it's better to show some code, but it would be a bit too
much, as the creation of widgets is splitted into several steps.
My questions are:
- Is there a mechanism to group radio buttons by code instead of
adding them one directly after the other?
The first way that comes to my mind is to assign a macro to each one
of them (the same macro). It's possible for a macro to determine
which radiobutton the call came from, so what the macro could do is
just to unselect all the other radio buttons.
Here's an example from my Maxy-Yatzy Game for Calc (OpenOffice, but I think that doesn't matter much in this case):
' Code starts here
Sub NumbersButton(Button As Object)
Dim ButtonName As String, ButtonNumber As Integer, State As Boolean
ButtonName=Button.Source.getModel().Name
ButtonNumber=GetButtonNumber(ButtonName)
ButtonState(ButtonNumber)=Not ButtonState(ButtonNumber)
'If Button state is TRUE, unselect Category.
If ButtonState(ButtonNumber) Then' Save relevant dice.
UnselectCategoryButtonPushed
Button.Source.getModel().setPropertyValue("TextColor",Black)
Else' Re-roll relevant dice.
Button.Source.getModel().setPropertyValue("TextColor",Gray)
EndIf
SetAllDiceState
SetRollButtonState(Auto)
End Sub
' End of code
In this case, Button is the object to use for determining what caused the subroutine to start. I call a couple of functions in this to make things happen to other buttons and things like that. For instance, the name of the button that was pressed is found in Button.Source.getModel().Name.
In this case no radio buttons were involved, but that doesn't matter much. It would be pretty much the same. In this case it's just an ordinary button without a frame and with a unicode character label, for instance ”⚂”, so it looks like I'm clicking a die, but the procedure is the same for check boxes, radio buttons and even images. Everything that's clickable.
(OFF TOPIC: Maxy-Yatzy is a Swedish variant of Yatzee where six dice are used and you can save rolls for later. New categories, due to the six dices, are three pairs – XXYYZZ, five of a kind – XXXXX?, full straight – 123456, tower – XXYYYY and house – XXXYYY. A total of ≥84 p in the upper categories gives a 100 p Bonus, Maxi-Yatzy – XXXXXX, gives 100 p. That's pretty much it… kind of.)
Kind regards
Johnny Rosenberg
ジョニー・ローゼンバーグ
Maybe there are better ways, I don't know…
- Can someone guess, what else can go wrong?
Regards,
Xaver