Если вы когда-нибудь пользовались компонентом 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(); // включаем обратно