Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторна робота №9

.pdf
Скачиваний:
12
Добавлен:
15.02.2015
Размер:
388.47 Кб
Скачать

Лабораторнаробота №9

Тема: Програмування з використанням перемикачів RadioGroup вкладки палітри компонентів Standart.

Мета: Отримання практичних навиків використання перемикачів RadioGroup

палітри компонентів Standart.

Теоретичнівідомості

Радіокнопки (RadioGroup) утворюють групи взаємозв'язаних індикаторів,

з яких може бути вибраний лише один. Вони використовуються для вибору користувачем однієї з декількох взаємовиключних альтернатив, наприклад,

відділу, в якому працює співробітник, або правильної відповіді на питання тесту.

Втім, радіокнопки можуть використовуватися і для відображення аналогічних даних. В цьому випадку управління кнопками здійснюється програмно. Компонент Delphi, RadioGroup розташований на вкладці Standard (Рис. 9.1).

Рисунок 9.1

Він представляє собою контейнер з групою компонентів RadioButton (перемикачів). Такий компонент спрощує організацію роботи перемикачів в порівнянні з іншими груповими контейнерами, що вимагають додавати перемикачі вручну.

RadioGroup – це панель, яка може містити регулярно розташовані стовпцями і рядками радіокнопки. Напис в лівому верхньому кутку панелі визначається властивістю Caption. А написи кнопок і їх кількість визначаються

1

властивістю Items, що має тип TStrings. Клацнувши на кнопці з багатокрапкою біля цієї властивості у вікні Інспектора Об'єктів викликається редактор списку рядків. В ньому можна занести написи, які хочете бачити біля кнопок, по одній в рядку. Скільки рядків записано — стільки і буде кнопок.

Кнопки, що з'являються в панелі після завдання значень Items, можна розмістити в декілька стовпців (не більше 17), задавши властивість Columns. За умовчанням Columns = 1, тобто кнопки розміщуються одна під одною.

Визначити, яку з кнопок вибрав користувач, можна по властивості

ItemIndex, яка показує індекс вибраної кнопки. Індекси, як завжди в Delphi,

починаються з 0. За умовчанням ItemIndex = -1, що означає відсутність вибраної кнопки. Якщо треба, щоб у момент початку виконання додатку якась з кнопок була вибрана (це практично завжди необхідно), то треба встановити відповідне значення ItemIndex під час проектування.

Якщо радіокнопки використовуються не для введення, а для відображення даних, то встановлювати значення ItemIndex можна програмно під час виконання додатку. Компонент RadioGroup дуже зручний, але є і недоліки. Його добре використовувати, якщо написи кнопок мають приблизно однакову довжину і якщо число кнопок в кожному стовпці (при розміщенні їх в декількох стовпцях) однакове.

Компонент RadioGroup може містити і інші компоненти, такі як редактор

Edit або прапорець CheckBox. Але автоматичне форматування і розподіл елементів на них не буде поширюватися. В результаті зовнішній вигляд додатку може постраждати тому, що елементи якщо і не перекриватимуть один одного,

то будуть нерівномірно розташовуватися відносно перемикачів.

Таблиця 9.1 Властивості компоненту RadioGroup

Властивість

Опис

 

 

Caption

Напис в лівому верхньому куті панелі кнопки

 

 

Columns

Визначає кількість стовбців кнопок

 

 

Items

Список радіокнопок групи

 

 

2

Itemlndex

Вказує, яка з радіокнопок вибрана в даний момент.

 

 

Align

Спосіб вирівнювання в межах компонента.

 

 

Name

Ім’я компонента. Використовується в програмі для доступу до

 

властивостей компонента

 

 

Height

Висота поля.

 

 

Width

Ширина поля.

 

 

Top

Відстань від верхньої границі поля до верхньої границі форми

 

 

Left

Відстань від лівої границі поля до лівої границі форми

 

 

ParentFont

Признак наслідування властивостей шрифта батьківської форми

 

 

Font

Шрифт, що використовується для відображення введеного тексту

 

 

Visible

Видимість компоненту

 

 

Enabled

Доступність елемента управління.

 

 

Color

Колір шрифта.

 

 

Size

Розмір шрифта в пунктах.

 

 

Постановказадачі

Створіть програму, що виконує наступні дії.

Після запуску програми з’являється зображення аналогічне рис.9.2.

Користувач за потребую обирає один з перемикачів в групі. В залежності від правильності відповідей з’являється одне з повідомлень «Погано», «Задовільно», «Добре», «Відмінно».

Новимвційроботі є:

• група перемикачів RadioGroup вкладки палітри компонентів Standard.

Планрозробки програми

1.Відкрийте новий проект.

2.Розмістіть в формі об’єкти у відповідності з рис.9.3 і привласніть заголовки міткам і панелям.

3

Рисунок 9.2

Рисунок 9.3

4

3. Виконайте наступні дії:

 

 

Виділений

Вкладка

Ім’я

Значення/Дія

об’єкт

вікна

властивос

 

 

Object

ті/

 

 

Inspector

Ім’яподії

 

 

 

 

 

Label1

Properties

Caption

Засновник алгебри логіки

Label2

Properties

Caption

Форма мислення, за допомогою якої

 

 

 

з одного або декількох думок може

 

 

 

бути отримана нова думка - це . . .

Label 3

Properties

Caption

Оберіть приклад, який не є висловом

Label4

Properties

Caption

. . . вислів істина тоді і тільки тоді,

 

 

 

коли істині обидва вислова

Label 5

Properties

Caption

Операція логічного додавання – це

 

 

 

операція

 

 

 

 

RadioGroup1

Properties

Caption

Відповіді 1

 

 

 

 

 

 

Columns

4

 

 

Items

Лейбніц

 

 

 

Буль

 

 

 

Нейман

 

 

 

Паскаль

 

 

 

Введений текст збережіть в файлі

 

 

 

T1.txt (див. Проект «Довідник»).

RadioGroup2

Properties

Caption

Відповіді 2

 

 

 

 

 

 

Columns

3

 

 

Items

Висловлювання

 

 

 

Думка

 

 

 

Висновок

 

 

 

Введений текст збережіть в файлі

 

 

 

T2.txt.

RadioGroup3

Properties

Caption

Відповіді 3

 

 

 

 

 

 

Columns

4

 

 

Items

2 + 8 >6

 

 

 

2 + 6 + 8

 

 

 

2 + 8 < 6

 

 

 

2 + 6 = 8

 

 

 

Введений текст збережіть в файлі

 

 

 

T3.txt.

RadioGroup4

Properties

Caption

Відповіді 4

 

 

Columns

4

 

 

Items

Імплікація

 

 

 

Диз’юнкція

 

 

 

Інверсія

 

 

 

Кон’юнкція

 

 

 

Введений текст збережіть в файлі

 

 

 

T4.txt.

5

RadioGroup5

Properties

Caption

Відповіді 5

 

 

Columns

4

 

 

Items

Інверсія

 

 

 

Кон’юнкція

 

 

 

Диз’юнкція

 

 

 

Імплікація

 

 

 

Введений текст збережіть в файлі

 

 

 

T5.txt.

4.Збережіть код програми і проект під іменами, наприклад, Unit9.pas іPr9.dpr.

5.Вставте в розділі реалізації після ключового слова implementation оголошення змінної для підрахунку правильних відповідей:

Var SUM : Byte;

6.Для сумування набираємих користувачем балів, створіть наступну процедуру

обробки події:

Виділений об’єкт

Ім’яподії

Дія

 

 

 

RadioGroup1

OnClick

SUM:=0;

 

 

If RadioGroup1.ItemIndex=0 Then

 

 

SUM:=SUM+1;

 

 

Коментар

 

 

Індекс першого перемикача дорівнює 0. Правильна

 

 

відповідь містить перемикач з міткою «Лейбніц»,

 

 

що має індекс 0.

 

 

 

7.Вставте в обробники подій RadioGroup2.OnClick, RadioGroup3.OnClick, RadioGroup4.OnClick, RadioGroup5.OnClick аналогічні коди з врахуванням правильних відповідей, але без обнулення змінної SUM, так як це необхідно тільки один раз перед початком підсумовування.

8.Введіть на контрольну панель ітогове повідомлення в залежності від набранної суми балів і виведіть повідомлення про закінчення тесту.

6

Виділений об’єкт

Ім’яподії

Дія

 

 

 

RadioGroup5

OnClick

Case SUM of

 

 

0..2: Panel1.Caption:=’Погано!’;

 

 

3: Panel1.Caption:='Задовільно!';

 

 

4: Panel1.Caption:=’Добре!’;

 

 

5: Panel1.Caption:=’Відмінно!’;

 

 

end;

 

 

ShowMessage(‘Кінець тесту!’);

 

 

 

9.Збережіть проект остаточно, запустіть і протестуйте його.

Завдання длясамостійноговиконання

1.Для контролю правильності роботи програми введіть на панель кількість правильних відповідей користувача.

2.Запустіть програму і переконайтеся, що правильна сума балів отримується лише при послідовному виборі перемикачів спочатку з

RadioGroup1, потім RadioGroup2 і т.д. Якщо порядок порушений, то результат може бути невірним. Виправте цю помилку.

Підказка. Зробіть всі компоненти RadioGroup недоступними після вибору

відповідної відповіді.

3.Введіть додаткову кнопку «Повторити», яка дозволить повторно виконати завдання.

4.Для наочності передбачте можливість виведення результату різним кольором.

Лістинг програми

unit Unitlab9; interface uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls;

Type

TForm1 = class(TForm)

Label1: TLabel;

7

RadioGroup1: TRadioGroup;

Label2: TLabel;

RadioGroup2: TRadioGroup;

Label3: TLabel;

RadioGroup3: TRadioGroup;

Label4: TLabel;

RadioGroup4: TRadioGroup;

Label5: TLabel;

RadioGroup5: TRadioGroup;

Panel1: TPanel;

BitBtn1: TBitBtn;

Label6: TLabel;

BitBtn2: TBitBtn;

procedure RadioGroup1Click(Sender: TObject); procedure RadioGroup5Click(Sender: TObject); procedure RadioGroup2Click(Sender: TObject); procedure RadioGroup3Click(Sender: TObject); procedure RadioGroup4Click(Sender: TObject); procedure BitBtn2Click(Sender: TObject); private

{ Private declarations } Public

{ Public declarations } end;

var

Form1: TForm1; Implementation {$R *.dfm}

Var SUM : Byte;

procedure TForm1.RadioGroup1Click(Sender: TObject); begin

SUM:=0;

RadioGroup1.Enabled:=False;

8

end;

procedure TForm1.RadioGroup2Click(Sender: TObject); begin

RadioGroup2.Enabled:=False;

end;

procedure TForm1.RadioGroup3Click(Sender: TObject); begin

RadioGroup3.Enabled:=False;end;

procedure TForm1.RadioGroup4Click(Sender: TObject); begin

RadioGroup4.Enabled:=False;

end;

procedure TForm1.RadioGroup5Click(Sender: TObject); begin

If RadioGroup1.ItemIndex=0 Then SUM:=SUM+1;

If RadioGroup2.ItemIndex=2 Then SUM:=SUM+1;

If RadioGroup3.ItemIndex=1 Then SUM:=SUM+1;

If RadioGroup4.ItemIndex=3 Then SUM:=SUM+1;

If RadioGroup5.ItemIndex=2 Then SUM:=SUM+1;

RadioGroup5.Enabled:=False;

Case SUM of

0..2: begin Panel1.Font.Color:=clBlack; Panel1.Caption:='Погано!'+ ' Правильных відповідей : '

+IntToStr(SUM);end;

3: begin Panel1.Font.Color:=clBlue; Panel1.Caption:='Задовільно!'+ ' Правильних відповідей : ' +IntToStr(SUM);end;

4: begin Panel1.Font.Color:=clGreen; Panel1.Caption:='Добре!'+ ' Правильних відповідей : '

+IntToStr(SUM); end;

5:begin Panel1.Font.Color:=clRed; Panel1.Caption:='Відмінно!'+ ' Правильних відповідей : '

+IntToStr(SUM);end;end;

9

ShowMessage('Кінець тесту'); end;

procedure TForm1.BitBtn2Click(Sender: TObject); begin

sum:=0; RadioGroup1.ItemIndex:=-1; RadioGroup2.ItemIndex:=-1; RadioGroup3.ItemIndex:=-1; RadioGroup4.ItemIndex:=-1; RadioGroup5.ItemIndex:=-1; Panel1.Caption:=''; RadioGroup1.Enabled:=True; RadioGroup2.Enabled:=True; RadioGroup3.Enabled:=True; RadioGroup4.Enabled:=True; RadioGroup5.Enabled:=True; end;end.

Контрольні питання

1.Для яких цілей використовується компонент RadioGroup?

2.Перерахуйте властивості компоненту компоненту RadioGroup.

3.Яка властивість використовуєтся для напису кнопок і їх кількості в компоненті RadioButton?

4.Які ще компоненти може містити RadioGroup?

5.Яка максимальна кількість стовбців в компоненті RadioGroup?

10