Доступ к элементам TRadioGroup

Если вы когда-нибудь пользовались компонентом TRadioGroup, то, пожалуй, знаете, насколько он удобен при динамическом формировании списка переключателей. Всего-то и нужно, что добавлять и удалять строки списка типа TStringList

RadioGroup1->Items->Clear();              // удаление всех элементов
RadioGroup1->Items->Add("Первая точка");  // добавление новых
RadioGroup1->Items->Add("Вторая точка");

Ну и конечно же, вы знаете, что определить выбранную точку можно по значению свойства ItemIndex. Нумерация начинается с нуля, как заведено.

А вот вопрос: как получить доступ к свойствам отдельных элементов, сперва вызывает проблемы. На самом деле всё просто, нужно использовать массив Controls. Вот доступ к выделенному элементу:

int idx = RadioGroup1->ItemIndex;            // запоминаем индекс
RadioGroup1->Controls[idx]->Enabled = false; // делаем недоступным
RadioGroup1->Controls[idx]->Visible = false; // скрываем

Ну и так далее.

Для обхода всех элементов, воспользуемся циклом, взяв количество элементов из свойства ControlCount:

for (int i = 0; i < RadioGroup1->ControlCount; i++)
    RadioGroup1->Controls[i]->Caption = IntToStr(i) + "-й элемент";

В результате все элементы списка будут переименованы.

Так же не забывайте про методы BeginUpdate() и EndUpdate(), которые позволят избежать мерцания списка при изменении состава элементов.

RadioGroup1->Items->BeginUpdate(); // отключаем обновление элементов
for (int i = 0; i < RadioGroup1->ControlCount; i++)
    RadioGroup1->Controls[i]->Caption += "(" + IntToStr(i) + ")";
RadioGroup1->Items->EndUpdate();   // включаем обратно