§ 16. Компоненты для работы со списками строк

16.6. Компонент RadioGroup

Компонент группа переключателей — RadioGroup представляет собой вариант списка с индикаторами. Возле каждой строки списка имеется переключатель, один из переключателей может быть выделен. На панели компонентов Standard компонент группа переключателей изображен в виде , имя объекта — RadioGroup. Компонент RadioGroup, помещенный на форму, получает имя RadioGroupN, где N — номер 1, 2, 3… (пример 16.15).

Переключатели в компоненте RadioGroup задаются перечислением их названий. Названия хранятся в свойстве Items, принадлежащем к типу TSring.

Компонент обладает свойствами Columns и ItemIndex, как и некоторые из рассмотренных ранее компонентов работы со списками строк.

Пример 16.16. Создать приложение, позволяющее вычислить значение одной их тригонометрических функций для введенного аргумента.

Этапы выполнения задания

  1. Поместить на форму компоненты LabeledEdit, RadioGroup, Label.
  2. Изменить свойство Caption у компонента LabeledEdit1 на «Аргумент».
  3. Очистите свойство Caption у компонента Label1.
  4. Изменить свойство Caption у компонента RadioGroup1 на «Функции».
  5. Изменить свойство Columns у компонента RadioGroup1 на 2.
  6. Используя редактор списков строк, внести в список RadioGroup1 строки: sin(x), cos(x), tg(x), ctg(x).
  7. Написать обработчик события OnClick для компонента RadioGroup1. Значение функции должно вычисляться только тогда, когда введено значение аргумента.

Пример 16.15. Компонент RadioGroup на форме:

Пример 16.16. Форма на этапе проектирования:

Обработчик события OnClick для компонента RadioGroup1.

void __fastcall TForm1::
RadioGroup1Click(TObject *Sender)

{

  if (LabeledEdit1 -> Text != "") {

    double f, x;

    x = StrToFloat(LabeledEdit1 -> Text);

    switch (RadioGroup1->ItemIndex) {

      case 0: {

        f = sin(x);

        Label1 -> Caption = "sin(" + 

        LabeledEdit1 -> Text + ") =" +

        FloatToStrF(f, ffFixed, 97);

        break;

      }

      case 1: {

        f = cos(x);

        Label1 -> Caption = "cos(" + 

        LabeledEdit1 -> Text + ") =" +

        FloatToStrF(f, ffFixed, 97);

        break;

      }

      case 2: {

        f = sin(x) / cos(x);

        Label1 -> Caption = "tg(" + 

        LabeledEdit1 -> Text + ") =" +

        FloatToStrF(f, ffFixed, 107);

        break;

      }

      case 3: {

        f = cos(x) / sin(x);

        Label1 -> Caption = "ctg(" + 

        LabeledEdit1 -> Text + ") =" +

        FloatToStrF(f, ffFixed, 107);

        break;

      }

    }

  }

  else

    ShowMessage("Аргумент функции не введен");

}

Работающее приложение: