у каждого чекбокса на событие OnClick вешается один и тот же обработчик, который перебирает все чекбоксы из имеющихся на форме (или панели), сбрасывая Флажок во всех, кроме себя. У формы (или панели, или GroupBox) есть свойство - Controls, которе представляет коллекцию принадлежащих ему компонентов. Надо перебрать все эти компоненты, проверить тип каждого на совпадение с типом TCheckBox, и, если совпал тип - тогда уже проверять совпадение с самим собой и отрабатывать сброс флажка... Только надо ввести доп.переменную-флаг того, что идет обработка "нажатия", иначе будет происходить рекурсивный вызов обработчика и стек переполнится...
вот пример на Delphi:
procedure TForm1.CheckBox1Click(Sender: TObject);
var
i : integer;
begin
// Recurse - глобальная переменная для исключения зацикливания
if Recurse then exit;
Recurse := true;
for i := 0 to ControlCount-1 do // перебираем все КОМПОНЕНТЫ формы
if Controls[i] is TCheckBox // если очередной компонент - ЧЕКБОКС
then if Controls[i] = Sender // если это тот самый, что НАЖАЛИ
then (Controls[i] as TCheckBox).Checked := true
else (Controls[i] as TCheckBox).Checked := false;
Recurse := false;
end;