§ 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("Аргумент функции не введен");

}

Дадатак у час працы: