Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лабораторні роботи_ООП.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
7.3 Mб
Скачать

Розробка проекту «Фізичний конвектор»

Завдання. Створити програму, яка переводитиме величини довжини, швидкості та часу в системні одиниці.

Аналіз проекту

Для реалізації проекту необхідно мати компонент, який дає змогу працювати з таким списком, який би за необхідності розгортався, адже в цьому проекті необхідний список має завантажуватись програмно, залежно від вибору користувача. Тут необхідний компонент СomboBox (вкладка палітри компонентів Standart) – комбінований список. Для завантаження потрібного списку скористаємось методом LoadFromFile цього компонента. Компонент СomboBox можна також використовувати для введення даних, оскільки являє собою об’єднання поля введення та поля зі списком.

Для створення цього проекту необхідно створити в будь-якому текстовому редакторі три текстові файли з різними варіантами розмірностей трьох фізичних величин (кожну розмірність розташувати в новому рядку):

Файл dov.txt файл shv.txt файл chas.txt

Км; км/год; год;

Дм; км/хв; хв.

См; м/год;

Мм; м/хв;

Ці текстові файли будуть завантажуватись у список компонента СomboBox2 під час виконання програми.

Хід роботи

Алгоритм розробки проекту

  1. Створити папку С:\Delphi\lab_7_2.

  2. Завантажити середовище візуального програмування Delphi.

  3. Розмістити на формі візуальні компоненти Label1-Label5, Edit1, Edit2, СomboBox1, СomboBox2, BitBtn1, BitBtn2 з властивостями, як у таблиці 2.

Таблиця 2

Компонент

Вкладка вікна «Інспектор об’єктів» (Object Inspector)

Властивість (Properties)/ Подія (Events)

Значення властивості/ обробка події (тіло процедури обробки події)

Label1

Properties

Caption

Переведення величини в системні одиниці

Label2

Properties

Caption

Виберіть тип величини:

Label3

Properties

Caption

Введіть значення величини:

Label4

Properties

Caption

Виберіть розмірність величини:

Label5

Properties

Caption

Результат

Combobox1

Properties

Text

Чисте поле

Items (клікнути на кнопці з трьома крапками, що знаходяться в полі праворуч)

У вікні вбудованого редактора списку ввести типи величин:

  • Довжина

  • Швидкість

  • Час

(кожен тип у новому рядку), для виходу з редактора клікнути на кнопці ОК

Edit1

Properties

Text

Чисте поле

Combobox2

Properties

Text

Чисте поле

Items

Список залишити незаповненим

Edit2

Properties

Text

Чисте поле

Bitbtn1

Properties

Kind

bkRetry

Caption

Очистити

Bitbtn1.enabled:=true;

Bitbtn1.enabled:=true;

Bitbtn1

Properties

Kind

bkClose

Caption

Вихід

Пояснення:

  • Властивість ItemIndex компонентів ComboBox1 та СomboBox2 передбачає номер рядка у списку (нумерація починається з нуля);

  • Після вибору певного типу величини до списку компонента СomboBox2 завантажується один з файлів dov.txt або shv.txt або chas.txt;

  • Глобальна змінна r (вона описана на верхньому рівні програми) набуває значення потрібної розмірності системних одиниць;

  • Після вибору значення зі списку типів величин курсор встановлюється на поле Edit1 – робота методу edit1.setfocus.

  1. Для можливості вибору мишою із наведеного списку певного значення типу величини створити для компонента ComboBox1 процедуру обробки події OnClick:

procedure TForm1.ComboBox1Click(Sender: TObject);

var nom:byte;

begin

nom:=combobox1.ItemIndex;

combobox2.ItemIndex:=0;

case nom of

0: begin combobox2.Items.LoadFromFile('dov.txt');

combobox2.ItemIndex:=0; r:='m'; end;

1: begin combobox2.Items.LoadFromFile('shv.txt');

combobox2.ItemIndex:=0; r:='m/c'; end;

2: begin combobox2.Items.LoadFromFile('chas.txt');

combobox2.ItemIndex:=0; r:='c'; end;

end;

edit1.setfocus;

end;

  1. Для об’єкта Edit1 забезпечити перехід на наступне поле після натискання клавіші Enter після введення даних. Для цього створити процедуру обробки події OnKeyPress:

if key=#13 then combobox2.SetFocus;

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

var nom1, nom2:byte; vel,result:real; v:string;

begin

vel:=strtofloat(edit1.Text);

nom1:=combobox1.ItemIndex;

nom2:=combobox2.ItemIndex;

case nom1 of

0: case nom2 of

0: result:=vel*1000;

1: result:=vel/10;

2:result:=vel/100;

3:result:=vel/1000;

end;

1: case nom2 of

0: result:=vel*1000/3600;

1: result:=vel/1000/60;

2:result:=vel/3600;

3:result:=vel/60;

end;

2:case nom2 of

0:result:=vel*3600;

1: result:=vel*60;

end;

end;

edit2.Font.Color:=clred;

str(result:5:3,v);

edit2.Text:=v+' '+r;

bitbtn1.Enabled:=true;

end;

  1. Для кнопки «Очистити» необхідно стоворити процедуру обробки події OnClick для компонента BitBtn1:

procedure TForm1.BitBtn1Click(Sender: TObject);

var i:integer;

begin

combobox1.Text:=''; combobox2.Text:='';

edit1.Text:=''; edit2.Text:='';

for i:=1 to 3 do

begin

combobox1.Items.Delete(combobox1.ItemIndex);

end;

end;

  1. Зберегти проект у папці С:\Delphi\lab_7_2.

  2. Запустити проект та перевірити правильність його виконання.

Питання для самоконтролю:

1. Що таке список?

2. Яка властивість визначає кількість рядків, які одночасно відображаються в списку, що розкривається?

3. Який компонент в Delphi служить для роботи з простим списком?

4. Яка властивість визначає число колонок, які одночасно видно в області списку?

5. Яка властивість визначає наявність рамки у списку?

6. Який компонент в Delphi служить для роботи з комбінованим списком?

7. Яка властивість визначає наявність або відсутність сортування?

8. Яка властивість визначає номер вибраного елемента списку?

9. Які використовують методи для додавання елементів у список?

10. Яка властивість повертає число вибраних елементів в списку?