Лабораторна робота №9
.pdfЛабораторнаробота №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