Прапорці та групи перемикачів


Для реалізації розгалуження в проекті можна використати такі елементи керування як перемикачі та прапорці. Працюючи з текстовими і графічними редакторами, редактором презентацій, іншими програмами, ви неодноразово бачили, що за вибору перемикача всередині з’являється позначка


а за вибору прапорця – позначка.
З групи перемикачів може бути вибраний тільки один, а в групі прапорців позначка може бути встановлена або на одному з них, або на кількох, або на жодному. Перемикачі призначені для того, щоб у ході виконання проекту вибрати один з можливих варіантів. Наприклад, установити для певної властивості об’єкта одне значення з деякого визначеного набору значень. Прапорці призначені для того, щоб у ході виконання проекту вибрати або один з можливих варіантів, або кілька. Наприклад, установити значення однієї або кількох властивостей об’єкта з деякого визначеного набору властивостей.
Для розміщення на формі перемикача потрібно встановити вказівник на рядок TRadioButton (англ. radio button – кругла кнопка) вікна Tool Palette та двічі клацнути ліву кнопку миші, а для розміщення прапорця – встановити вказівник на рядок TCheckBox (англ. check box – коробка для перевірки) і також двічі клацнути ліву кнопку миші.
Перемикач і прапорець мають більшість властивостей, які ми розглядали для форми, поля, кнопки і напису, та ще деякі, серед яких розглянемо властивість Checked (англ. checked – вибраний), яка може набувати одне з двох значень True або False і яка визначає, встановлена позначка в даному об’єкті чи ні (вибраний цей об’єкт чи ні). Тому значення цієї властивості можна використовувати в команді розгалуження замість логічного виразу.
2. Реалізація розгалужень з використанням прапорців та груп перемикачів.
Розглянемо, як можна використати перемикачі для реалізації розгалуження в проекті.
Нехай, наприклад, потрібно в
ході виконання проекту змінювати значення тільки однієї з таких властивостей форми: або заголовок, або колір, або розміри.
Для цього розмістимо на формі кнопку і три перемикачі (рис.).
При розміщенні перемикачів на формі для кожного з них за замовчуванням встановлюється значення властивості Checked False. До запуску проекту змінимо у першого перемикача значення цієї властивості на True. Після цього на формі він виглядатиме вибраним.

Таким він буде і після запуску проекту на виконання.
Створимо процедуру для опрацювання події OnClick кнопки, і до її тексту помістимо таку команду:
If RadioButton1.Checked
Then Form1.Caption := 'Заголовок змінений'
Else If RadioButton2.Checked
Then Form1.Color := clRed
Else begin
Form1.Width := 600;
Form1.Height := 300;
end;
Розпочинатися виконання цієї команди буде з визначення значення властивості RadioButton1.Checked.
Якщо при настанні події OnClick кнопки вибраним буде перший перемикач, то RadioButton1.Checked = true. Тому виконається команда змінення заголовка форми, а інші частини всієї цієї команди виконуватися не будуть.
Якщо при настанні події OnClick кнопки вибраним буде другий перемикач, то RadioButton1.Checked = false. Тому будуть виконуватися команди після першого ключового слова Else, тобто внутрішня команда розгалуження. Під час її виконання визначається значення властивості RadioButton2.Checked. Оскільки вибрано другий перемикач, то це значення дорівнює true. Тому виконається команда змінення кольору форми, а інші частини команди виконуватися не будуть.
Якщо ж при настанні події OnClick кнопки вибраним буде третій перемикач, то RadioButton1.Checked = false. Тому будуть виконуватися команди після першого ключового слова Else, тобто внутрішня команда розгалуження. При її виконанні визначається значення властивості RadioButton2.Checked. Оскільки другий перемикач не вибрано, то її значення false. Тоді будуть виконуватися команди після другого ключового слова Else, тобто дві команди змінення розмірів форми.
Якщо перед запуском проекту на виконання у жодного перемикача не змінювати значення властивості Checked, встановлені за замовчуванням, то при запуску проекту жоден з них не буде вибраним. Якщо і під час виконання проекту не вибрати жоден з перемикачів і вибрати кнопку, то зміняться розміри форми (подумайте самостійно, чому відбудуться саме такі зміни). Щоб так не сталося, потрібно або обов’язково вибирати один з перемикачів, або після другого ключового слова Else вставити ще одну команду розгалуження:
If RadioButton1.Checked
Then Form1.Caption := 'Заголовок змінений'
Else If RadioButton2.Checked
Then Form1.Color := clRed
Else If RadioButton2.Checked
Then
begin
Form1.Width := 600;
Form1.Height := 300;
end;
Поясніть, як виконуватиметься ця команда, якщо жоден з перемикачів не буде вибраний, і чому.

Розглянемо тепер, як можна використати прапорці для реалізації розгалуження.
Нехай, наприклад, нам потрібно в ході виконання проекту змінювати значення або тільки однієї з властивостей форми (або заголовок, або колір, або розміри), або кількох із них, або не змінювати значення жодної з них.
Для цього розмістимо на формі кнопку і три прапорці. 
 При розміщенні прапорців на формі для кожного з них за замовчуванням автоматично встановлюється значення властивості Checked False. Оскільки при виконанні проекту позначка жодного прапорця може бути не встановлена, то доцільно залишити такі початкові значення властивості Checked усіх прапорців.
Створимо процедуру для опрацювання події OnClick кнопки і до її тексту помістимо такі три послідовні (не вкладені одна в одну) команди розгалуження:
If CheckBox.Checked
Then Form1.Caption := 'Заголовок змінений';
If CheckBox.Checked
Then Form1.Color := clRed;
If CheckBox.Checked
Then begin
Form1.Width := 500;
Form1.Height := 200;
end;
Кожна з цих команд незалежно одна від одної буде визначати, чи вибраний відповідний прапорець, і залежно від цього кожна з них буде чи не буде виконувати відповідні команди зміни значень властивостей форми.
З розглянутих вище прикладів можна зробити такі висновки:
-  перемикачі використовуються тоді, коли потрібно вибрати один і тільки один варіант дій з кількох можливих;
-  для опрацювання стану перемикачів у процедуру включають команди розгалуження, які вкладені одна в одну;
-  прапорці використовуються тоді, коли може бути вибраний або один, або кілька, або не вибраний жоден варіант дій з кількох можливих;
-  для опрацювання стану прапорців у процедуру включають послідовні команди розгалуження, які незалежні одна від одної.

Завдання:
1. Відкрийте середовище розробки Lazarus і створіть новий проект.
2. Розмістіть на формі елементи керування для розв’язування задачі: Відомі довжини сторін двох прямокутників. Обчислити площі прямокутників і порівняти їх. Визначити, чи є прямокутники квадратами. З’ясувати, чи вміститься один прямокутник у середину другого. Повідомити отримані результати. У проекті:
1) складіть обробник події OnClick першої кнопки для обчислення площ прямокутників і виведення повідомлення про те, у якого прямокутника площа більша;
2) складіть обробник події OnClick другої кнопки, виконання якого залежно від установлених прапорців приведе до визначення того, чи є відповідний прямокутник квадратом;
3) складіть обробник події OnClick третьої кнопки, виконання якого приведе до визначення, чи вміститься перший прямокутник усередину другого або другий прямокутник усередину першого залежно від вибраного перемикача;
4) виконайте складені процедури і переконайтеся, що результати їхньої роботи правильні.
3. Створіть у власній папці папку Практична 3 і збережіть у ній проект.

Додатково:
Завдання 1
Створити проект для обчислення вартості фотографій залежно від їх розміру.

Завдання 2
Створіть проект для обчислення вартості комп'ютера залежно від комплектації

Комментариев нет:

Отправить комментарий