Вторник, 17.09.2019, 19:14
Главная | Регистрация | Вход Приветствую Вас Гость | RSS


Меню сайта


Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0


Тестування онлайн
тестування онлайн 


Социальные закладк

 Оператор case. Компоненты  CheckGroup , RadioGroup. Примеры

 Оператор case (оператор выбора).

Если один оператор IF может обеспечить выбор из двух альтернатив, то оператор выбора CASE позволяет сделать выбор из произвольного числа имеющихся вариантов. Он состоит из выражения, называемого селектором (selection – выбор альтернативы), и списка параметров, каждому из которых предшествует список констант выбора:

case <выражение-селектор> of
<список1>: <оператор1>;
<список2>: <оператор2>;
...
else
<оператор>
end;  
//case

Оператор CASE работает следующим образом:

  1. Сначала вычисляется значение выражения-селектора, затем обеспечивается реализация того оператора, константа выбора которого равна текущему значению селектора.
  2. Если ни одна из констант не равна текущему значению селектора, выполняется оператор, стоящий за словом ELSE.
  3. Если слово 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

Селектор перечисляемого пользовательского типа:
var Season: (Winter. Spring, Summer. Autumn);
begin
case
Season of
Winter :  Writeln('Winter');
Spring :  Writeln('Spring'):
Summer:  Writeln('Summer');
Autumn : Writeln('Autumn')
end;
//case
end;

Обратите внимание, что:

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);
{переменные a,b объявлены как глобальные}
begin
  a := strtofloat(InputBox('a=', 'ввод данных',''));
  b := strtofloat(InputBox('b=', 'ввод данных',''));
  label8.caption:=floattostr(a);
   label9.caption:=floattostr(b);
end;
procedure
TForm1.Button2Click(Sender: TObject);
begin
    label2.caption:='';
    label3.caption:='';
    label4.caption:='';
    label5.caption:='';
    label8.caption:='';
    label9.caption:='';
    checkgroup1.checked[0]:=false;
    checkgroup1.checked[1]:=false;
    checkgroup1.checked[2]:=false;
    checkgroup1.checked[3]:=false;
end;

 

 procedure TForm1.CheckGroup1ItemClick(Sender: TObject; Index: integer); //событие: Проверка элемента1группы Нажмите
begin
if checkgroup1.checked[0]   then
                    begin
                       p:= 2*(a + b) ;
                       label2.caption:= floattostr(p);
                  
  end
                            else  label2.caption:='';
if  checkgroup1.checked[1]  then
                      begin
                        s := a * b ;
                         label3.Caption := floattostr(s);
                   
   end
                             else  label3.caption:='';
if  checkgroup1.checked[2]  then
                      begin
                         d := sqrt(sqr(a) +sqr(b) ) ;
                        label4.Caption := floattostr(d);
                      
end
                             else  label4.caption:='';
if  checkgroup1.checked[3]   then
                      begin
                         d1:= round(d);
                         label5.Caption := ' d = '+ inttostr(d1);
                     
 end  
                                 else  label5.caption:='';
 end; 

Пример 2. Разработать проект с использованием элемента управления RadioGroup.

1. У RadioGroup есть событиеOnClick.
2. Для выбора переключателя   группы создаем процедуру  RadioGroup1Click
                                               Задача заключается в том, чтобы получить ItemIndex отмеченного RadioButton и дальше выполнить действие.
Далее, идет обработка панели RadioGroup. Поскольку только одна кнопка может быть включена, то свойство ItemIndex этой панели может иметь только 5 значений, по количеству кнопок: от 0 до 4.

Интерфейс проекта

Варианты выполнения задания:   

вариант 1

procedure TForm1.RadioGroup1Click(Sender: TObject);
begin
    
if radiogroup1.itemindex = 0 then
     begin
      form1.image1.show;
      form1.image2.hide;
      form1.image3.hide;
      form1.image4.hide;
      form1.image5.hide;
      form1.image6.hide;
    end;
  
  if radiogroup1.itemindex = 1 then
     begin
        form1.image1.hide;
        form1.image2.show;
        form1.image3.hide;
        form1.image4.hide;
        form1.image5.hide;
        form1.image6.hide;
     end;
 
 if radiogroup1.itemindex = 2 then
     begin
        form1.image1.hide;
        form1.image2.hide;
        form1.image3.show;
        form1.image4.hide;
        form1.image5.hide;
        form1.image6.hide;
    end;

  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);
begin
    
case RadioGroup1.ItemIndex of
   0 : begin
        form1.image1.show;
        form1.image2.hide;
        form1.image3.hide;
        form1.image4.hide;
        form1.image5.hide;
        form1.image6.hide;
        end;
  
1: begin
        form1.image1.hide;
        form1.image2.show;
        form1.image3.hide;
        form1.image4.hide;
        form1.image5.hide;
        form1.image6.hide;
      end;
  
2:  begin
        form1.image1.hide;
        form1.image2.hide;
        form1.image3.show;
        form1.image4.hide;
        form1.image5.hide;
        form1.image6.hide;
      end;

 

 3:  begin
        form1.image1.hide;
        form1.image2.hide;
        form1.image3.hide;
        form1.image4.show;
        form1.image5.hide;
        form1.image6.hide;
      end;
  
4 :  begin
        form1.image1.hide;
        form1.image2.hide;
        form1.image3.hide;
        form1.image4.hide;
        form1.image5.show;
        form1.image6.hide;
     end;
  
5:  begin
       form1.image1.hide;
        form1.image2.hide;
        form1.image3.hide;
        form1.image4.hide;
        form1.image5.hide;
         form1.image6.show;
     end;
    
end; //case
 end;

 

procedure TForm1.FormCreate(Sender: TObject);
begin
       form1.Borderstyle:=    bsToolWindow;
//
bsToolWindow - упрощённое окно с уменьшенным заголовком без возможности изменения размеров
        form1.BorderIcons:=[biSystemMenu,biSystemMenu,biMinimize];// biSystemMenu - единственный элемент, который не является кнопкой - отвечает за системное меню окна, которое вызывается комбинацией клавиш [Alt]+[Пробел], biMinimize - кнопка сворачивания (минимизации) окна
        form1.image1.hide;
        form1.image2.hide;
        form1.image3.hide;
        form1.image4.hide;
        form1.image5.hide;
         form1.image6.show;
end;

Замечание: Здесь удобней всего использовать конструкцию case. В зависимости от значения ItemIndex мы присваиваем одноименное включенной кнопке значение выбранного свойства.

оператор case, примеры, проект "четыре формы"

Форма входа
Поиск
Календарь
«  Сентябрь 2019  »
ПнВтСрЧтПтСбВс
      1
2345678
9101112131415
16171819202122
23242526272829
30
Архив записей
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz

  • Рейтинг@Mail.ru
    Copyright MyCorp © 2019
    Конструктор сайтов - uCoz