Оператор case. Компоненты CheckGroup , RadioGroup. Примеры
Оператор case (оператор выбора).
Если один оператор IF может обеспечить выбор из двух альтернатив, то оператор выбора CASE позволяет сделать выбор из произвольного числа имеющихся вариантов. Он состоит из выражения, называемого селектором (selection – выбор альтернативы), и списка параметров, каждому из которых предшествует список констант выбора:
case <выражение-селектор> of
<список1>: <оператор1>;
<список2>: <оператор2>;
...
else
<оператор>
end; //case
Оператор CASE работает следующим образом:
- Сначала вычисляется значение выражения-селектора, затем обеспечивается реализация того оператора, константа выбора которого равна текущему значению селектора.
- Если ни одна из констант не равна текущему значению селектора, выполняется оператор, стоящий за словом ELSE.
- Если слово ELSE отсутствует, то активизируется оператор, находящийся за словом END, т.е. первый оператор за границей CASE.
Обратите внимание!!!
- Селектор должен относиться к одному из целочисленных типов (со значениями в диапазоне -32768..32767), логическому, литерному или пользовательскому.
- Список констант выбора состоит из произвольного количества значений, или диапазонов, отделенных друг от друга запятыми.
- Границы диапазона записываются двумя константами через разграничитель «..».
- Тип констант в любом случае должен совпадать с типом селектора.
При использовании оператора выбора CASE должны выполняться следующие правила:
1. Значения выражения «переключателя», записанного после служебного слова CASE, должны принадлежать дискретному типу; для целого типа они должны лежать в диапазоне integer.
2. Все константы, предшествующие операторам альтернатив, должны иметь тип, совместимый с типом выражения.
3. Все константы в альтернативах должны быть уникальны в пределах оператора варианта (т. е. повторение констант в альтернативах не допускается); диапазоны не должны пересекаться и не должны содержать констант, указанных в данной или других альтернативах.
ПРИМЕРЫ:
Селектор интервального типа: case I of 1..10 : Writeln ('число '.1:4. в диапазоне 1-10 ); 11..20 : Writeln ('число '. 1:4. ' в диапазоне 11 - 20'): 21..30 : Writeln ('число '. 1:4. ' в диапазоне 21 - 30') else Writeln ('число '. 1:4, ' вне пределов контроля') end; //case |
Селектор целочисленного типа: case I of 1: Z := I + Ю: 2: Z := I + 100; 3: Z := I + 1000 end;//case |
Селектор перечисляемого пользовательского типа: |
Обратите внимание, что:
1.здесь уже не нужно каждый раз повторять такие слова, как E l s e l f и Then.
2. в операторе Case нет ограничения на количество строк , поэтому вы можете создать их столько, сколько нужно для учета всех возможных вариантов
Компоненты CheckGroup , RadioGroup.
Кроме компонентов CheckBox и RadioButton, на форму можно добавить компоненты:
-
CheckGroup . Он предназначен для группировки схожих по смыслу компонентов.
-
RadioGroup. Радиокнопки образуют группу взаимосвязанных индикаторов, из которых может быть выбран только один.
Их используют в случае, если необходимо разместить на форме несколько групп флажков или переключателей.
Элементы управления RadioGroup и CheckGroup имеют свои особые свойства.
Радиокнопки в контейнере TRadioGroup и флажки ТCheckGroup создаются через свойство Items. В группах переключателей и флажков каждая строку свойства Items относится к отдельному переключателя или флажку и служит их названием.
Пример 1 Разработать проект вычисления периметра, площади, диагонали прямоугольника по значениям сторон прямоугольника.
Вариант выполнения задания:
- В интерфейсе проекта использовать элемент управления – CheckGroup.
- Для выбора флажка группы использовать событие CheckGroup1ItemClick (событие: Проверка элемента1 группы_ Нажмите)
Алгоритм проекта
|
Интерфейс проекта |
Программный код проекта
procedure TForm1.Button1Click(Sender: TObject); |
procedure TForm1.CheckGroup1ItemClick(Sender: TObject; Index: integer); //событие: Проверка элемента1группы Нажмите |
Пример 2. Разработать проект с использованием элемента управления RadioGroup.
1. У RadioGroup есть событиеOnClick.
2. Для выбора переключателя группы создаем процедуру RadioGroup1Click
Задача заключается в том, чтобы получить ItemIndex отмеченного RadioButton и дальше выполнить действие.
Далее, идет обработка панели RadioGroup. Поскольку только одна кнопка может быть включена, то свойство ItemIndex этой панели может иметь только 5 значений, по количеству кнопок: от 0 до 4.
Интерфейс проекта
Варианты выполнения задания:
вариант 1 procedure TForm1.RadioGroup1Click(Sender: TObject); |
if radiogroup1.itemindex = 3 then begin form1.image1.hide; form1.image2.hide; form1.image3.hide; form1.image4.show; form1.image5.hide; form1.image6.hide; end; if radiogroup1.itemindex = 4 then begin form1.image1.hide; form1.image2.hide; form1.image3.hide; form1.image4.hide; form1.image5.show; form1.image6.hide; end; if radiogroup1.itemindex = 5 then begin form1.image1.hide; form1.image2.hide; form1.image3.hide; form1.image4.hide; form1.image5.hide; form1.image6.show; end; end; |
вариант 2 procedure TForm1.RadioGroup1Click(Sender: TObject); |
3: begin
|
procedure TForm1.FormCreate(Sender: TObject); Замечание: Здесь удобней всего использовать конструкцию case. В зависимости от значения ItemIndex мы присваиваем одноименное включенной кнопке значение выбранного свойства. |