In the layoutReady event of the first radiobuttonlist you put (in formcalc):
if ($.isNull == 0 and RadioButtonList2.isNull) then
RadioButtonList2.validate.nullTest = "error"
RadioButtonList2.validate.nullTest = "disabled"
and then you would do the same for the second radiobuttonlist just renaming the lists.
Radio Buttons are special group of objects. If your radio button 1 and radio button 2 are in the "same" RadioButtonList then they are set to be a mutually exclusive group therefore one on one off. Both on and off are valid answers for a RadioButton therefore if set to be required only 1 button is required to be 'on'
This is likely why you can still submit as off is a valid answer as long as one button in the RadioButtonList is 'on'
For a solution, I would suggest ensuring that your radio buttons are in different RadioButtonLists therefore they are not mutually exclusive group and each would have to be on if it was required.
They are in two different RadioButtonList. There is RadioButtonList1 and RadioButtonList2; and there is a checkbox. If checkbox is clicked, everything is fine and that's it. However, if something is clicked in RadioButtonList1, then RadioButtonList2 becomes mandatory, or vice versa... if any of RadioButtonList2 is clicked, then RadioButtonList1 becomes mandatory.
add a Textfield, delete the caption and make it invisible. Then put this on the calculate event:
If (RadioButtonList1.rawValue + RadioButtonList2.rawValue >= "1") then
RadioButtonList1.mandatory = "error"
RadioButtonList2.mandatory = "error"
the vales of the radio buttons have to be numeric for this to work though.