The way I would do this is to create a small form, and populate it with a two-column grid. One column would contain the checkbox, the other would contain the name of the column in the main grid (and that second column would be read-only). Remove the grid lines, and make the grid fit exactly into its parent form. Also, remove the title bar of the parent form, and sets its BorderStyle to None.
Then, instead of calling a menu (as shown in your screenshot), you would open this new form. Let the user make the choices, and then act on them. Of course, you would need a cursor to populate the grid, but it will be simple to create that.
Going further, make the form modeless, and use the Click or InteractiveChange of the checkbox to initiate the showing/hiding of the columns in the main grid. That way, the user can see the effect of his choices immediately.
Finally, close the form from its Deactivate event. In other words, the form will close as soon as the user clicks anywhere outside of it (but this will only work if the form is modeless).
Mike
__________________________________
Mike Lewis (Edinburgh, Scotland)
Visual FoxPro articles, tips and downloads