We had such problems also and here was our solution which worked beautifully ...
In your example, create a parent list with Options 1-6 defined as codes 1-6 and none of the above (make exclusive) as code 7, then define Category name 1 as code 8 and Category name 2 as code 9. Create a constructed list which will look as such ...
ADD(CatList,8)
ADD(CatList,1,3)
ADD(CatList,9)
ADD(CatList,4,7)
The constructed list will be used as the list to display.
All we need to do now is hide the radio buttons or check boxes for the category codes.
Save the file jquery-1.6.2.min.js in your graphics folder.
Pop this code into the HTML TAG area under survey settings/headers and footers ...
<script src="[%GraphicsPath()%]jquery-1.6.2.min.js"></script>
<script type="text/javascript">
$.noConflict();
jQuery(document).ready(function(){
jQuery(".group_header").parents("tr.clickable").each(function(index) {
var HeaderRowObj = jQuery(this);
HeaderRowObj.removeClass("clickable");
HeaderRowObj.addClass("group_header_row");
var InputObj = HeaderRowObj.find("input");
InputObj.addClass("HideElement"); //Make sure it is hidden
var GroupHeaderObj = HeaderRowObj.find(".group_header");
HeaderRowObj.html("<td colspan='2'>" + GroupHeaderObj.html() + "</td>");
HeaderRowObj.prepend(InputObj);
});
});
</script>
And for the category codes, you need to pop the following surrounding tags ...
<span class="group_header"><b>Category Name-1</b></span>
Best to make the categories bold so they standout.
This solution works a treat and is easy to implement.
Good luck.