
- •Палітра Компонентів Delphi
- •Редактор Коду Delphi
- •Конструктор Форм
- •Інспектор Об’єктів. Принцип візуальної розробки програм
- •Завершення роботи з проектом та створення нового проекту
- •Збереження проекту
- •Відкриття існуючого проекту
- •Робота з Delphi-програмою Структура Delphi-програм
- •Виконання Delphi-програми
- •Завершення виконання Delphi-програми
- •Лабораторна робота №1
- •Завдання
- •Теоретичні відомості
- •Лабораторна робота №2
- •Розробка проекту «Діалог»
- •Мал. Діалог Аналіз проекту
- •Хід роботи
- •Завдання для самостійного виконання
- •Лабораторна робота №3
- •Завдання
- •Теоретичні відомості
- •Лабораторна робота №4
- •Розробка проекту «Ваша вага»
- •Хід роботи
- •Розробка проекту «Обмін валюти»
- •Хід роботи
- •Лабораторна робота №5
- •Завдання
- •Хід роботи
- •Теоретичні відомості Оператори if і case мови Паскаль
- •Кнопки-перемикачі в Delphi|
- •Лабораторна робота №6
- •Завдання
- •Хід роботи
- •Теоретичні відомості Типи даних для роботи з|із| рядками Короткі рядки типу|типа| ShortString| і String|[n]
- •Довгий рядок типу|типа| String|
- •Компонент tComboBox|
- •Компонент tBitBtn|
- •Обробка подій
- •Лабораторна робота №7
- •Розробка проекту «Гороскоп»
- •Хід роботи
- •Розробка проекту «Фізичний конвектор»
- •Хід роботи
- •Лабораторна робота №8
- •Розробка проекту «Рейтинг країн за результатами олімпійських змагань»
- •Хід роботи
- •Лабораторна робота №9
- •Розробка проекту «Журнал олімпіади»
- •Хід роботи
- •Лабораторна робота №10
- •Завдання
- •Хід роботи
- •2. Установка
- •3. Тестування створеної компоненти
- •Лабораторна робота №11
- •Розробка проекту «Побудова графіка функції»
- •Хід роботи
- •Лабораторна робота №12
- •Розробка проекту «Графічний конструктор»
- •Хід роботи
- •Лабораторна робота №13
- •Розробка проекту «Чат для локальної та глобальної мережі»
- •Хід роботи
- •Розробка форми на настройок
- •Розробка програмного коду
- •Лабораторна робота №14.
- •Завдання
- •Хід роботи
- •Теоретичні відомості
- •Етапи створення баз даних в Delphi.
- •Компонент тТаblе
- •Модуль даних
- •Лабораторна робота №15
- •Завдання
- •Хід роботи
- •Теоретичні відомості
- •Лабораторна робота №16
- •Завдання
- •Хід роботи
- •Теоретичні відомості
- •Лабораторна робота №17
- •Завдання
- •Хід роботи
- •Теоретичні відомості
- •Лабораторна робота №18
- •Завдання
- •Хід роботи
- •Теоретичні відомості
- •Список літератури
Лабораторна робота №8
Тема: Робота з масивами у Delphi.
Мета роботи: вивчити властивості компоненту TStringGrid. Написати програму з використанням масивів.
Розробка проекту «Рейтинг країн за результатами олімпійських змагань»
Завдання. Створити програму, за допомогою якої користувач зміг би за введеними даними про кількість золотих, срібних та бронзових медалей отриманих учасниками олімпіади кожної країни отримати інформацію про рейтинг країн за результатами олімпійських змагань: загальну кількість отриманих медалей та кількість набраних балів. Передбачити впорядкування таблиці за спаданням по стовпчику «Бали».
Аналіз проекту
Для реалізації проекту скористатись одним із засобів середовища програмування Delphi – компонентом StringGrid (вкладка палітри компонентів Additional), який слугує для відображення даних у вигляді таблиці. Цей компонент має багато властивостей.
Розглянемо властивості компонента, які будемо використовувати в нашому проекті:
ColCount – містить кількість стовпчиків в таблиці;
RowCount – містить кількість рядків в таблиці;
FixedCols – містить кількість фіксованих по лівому краю стовпчиків в таблиці;
FixedRows – містить кількість фіксованих по верхньому краю рядків;
FixedColor – задає колір фіксованих елементів таблиці;
Color – задає колір таблиці;
Rows – містить список стовпчиків;
Row – містить номер рядка, в якому знаходиться обрана комірка;
Cells – дає змогу звернутися до конкретної комірки за вказаними номер стовпчика та номером рядка;
Options.goEditing – дає можливість «дозволити» (значення True) або «заборонити» (значення False) виконувати редагування комірок таблиці.
Для оздоблення форми олімпійською символікою скористаємося компонентом Shape, що слугує для розміщення на формі геометричних фігур – прямокутника, кола, квадрата, еліпса. Розмістимо на формі п’ять компонентів Shape та встановимо для цих компонентів відповідні значення певних властивостей для відображення п’ятьох кольорових кіл одного розміру.
Хід роботи
Алгоритм розробки проекту
Створити папку С:\Delphi\lab_8.
Завантажити середовище візуального програмування Delphi.
Розмістити на формі візуальні компоненти StringGrid1, Button1, Shape1-Shape5 з властивостями, як у таблиці 1.
Таблиця 1
Компонент |
Вкладка вікна «Інспектор об’єктів» (Object Inspector) |
Властивість (Properties)/ Подія (Events) |
Значення властивості/ обробка події (тіло процедури обробки події) |
Form1 |
Properties |
Caption |
Рейтинги країн за результатами олімпійських змагань |
Color |
За вибором |
||
Font |
Шрифт, розмір, колір за вибором |
||
StringGrid |
Properties |
ColCount |
6 |
RowCount |
14 |
||
Name |
Tab1 |
||
FixedCols |
1 |
||
FixedRows |
1 |
||
FixedColor |
За вибором |
||
Color |
За вибором |
||
Options.goEditing |
True |
||
Button1 |
Properties |
Caption |
Підсумок |
Font |
Шрифт, розмір, колір за вибором |
||
Shape1-Shape5 |
Properties |
Shape |
stCircle |
Pen.Color |
За вибором |
||
Pen.Style |
psSolid – тип лінії (суцільна) |
||
Pen.Width |
5 – товщина лінії |
||
Brush.Style |
bsClear – немає зафарбування фігури |
Для форми form1 створити процедуру опрацювання події OnActivate, в якій заповнити комірки фіксованого рядка та фіксованого стовпчика.
procedure TForm1.FormActivate(Sender: TObject);
begin
tab1.Cells[0,0]:='Країна';
tab1.Cells[1,0]:='Золотих';
tab1.Cells[2,0]:='Срібних';
tab1.Cells[3,0]:='Бронзових';
tab1.Cells[4,0]:='Всього медалей';
tab1.Cells[5,0]:='Балів';
tab1.Cells[0,1]:='Україна';
tab1.Cells[0,2]:='Білорусія';
tab1.Cells[0,3]:='Англія';
tab1.Cells[0,4]:='Германія';
tab1.Cells[0,5]:='Італія';
tab1.Cells[0,6]:='Китай';
tab1.Cells[0,7]:='Корея';
tab1.Cells[0,8]:='Куба';
tab1.Cells[0,9]:='Нідерланди';
tab1.Cells[0,10]:='Росія';
tab1.Cells[0,11]:='США';
tab1.Cells[0,12]:='Франція';
tab1.Cells[0,13]:='Японія';
end;
Створити для кнопки Button1 процедуру опрацювання події OnClick, яка містить обчислення загальної кількості отриманих меделей та кількості набраних балів, а також команди впорядкування таблиці за спаданням по стовпчику «Бали».
procedure TForm1.Button1Click(Sender: TObject);
var c,r:integer;{номер стовпчика та номер рядка таблиці}
s:integer;{всього медалей у команди}
p:integer;{балів у команди}
m:integer;{номер рядка з максимальною кількістю балів}
buf:array[0..5] of string; {буфер для обміну рядків}
i:integer;{номер рядка - використовується у впорядкуванні}
begin
for r:=1 to tab1.RowCount do //опрацювати всі рядки
begin
s:=0;//загальна кількість медалей
for c:=1 to 3 do
if tab1.Cells[c,r]<>''
then s:=s+strtoint(tab1.Cells[c,r])
else tab1.Cells[c,r]:='0';
//загальна кількість балів
p:=7*strtoint(tab1.Cells[1,r])+6*strtoint(tab1.Cells[2,r])+
5*strtoint(tab1.Cells[3,r]);
// виведення результатів
tab1.Cells[4,r]:=inttostr(s); // всього медалей
tab1.Cells[5,r]:=inttostr(p); // всього балів
end;
// впорядкування таблиці за спаданням - по 5-му стовпчику
//впорядкування методом вибору
for r:=1 to tab1.RowCount-1 do
begin
m:=r; // найбільший елемент в r-му рядку
for i:=r to tab1.RowCount-1 do
if strtoint(tab1.Cells[5,i])>strtoint(tab1.Cells[5,m])
then
m:=i;
if r<>m then
begin
for c:=0 to 5 do
begin
buf[c]:=tab1.cells[c,r];
tab1.Cells[c,r]:=tab1.Cells[c,m];
tab1.Cells[c,m]:=buf[c];
end;
end;
end;
end;
Зберегти проект у папці С:\Delphi\lab_8.
Запустити проект та перевірити правильність його виконання.
Питання для самоконтролю:
1. Який компонент зручно використовувати для введення масиву?
2. Яка властивість визначає ім’я компоненту?
3. Яка властивість визначає кількість колонок в таблиці?
4. Яка властивість визначає кількість рядків у таблиці?
5. Яка властивість дозволяє або забороняє використовування клавіші TAB для переміщення курсора таблиці в наступний елемент таблиці?
6. Яка властивість визначає ознаку знаходження компоненту в режимі редагування?
7. Які властивості визначають ширину та висоту поля таблиці?
8. Яка властивість визначає ширину колонок таблиці?