
- •Лабораторна робота № 1 Тема: "Створення шаблонів форм і їх використання в нових проектах"
- •Лабораторна робота № 2 Тема: "Прийоми обробки однотипних компонентів "
- •Лабораторна робота № 3 Тема: Створення незалежних модулів для зберігання незалежних процедур
- •Лабораторна робота № 4 Тема: "Створення шаблонів компонентів"
- •Лабораторна робота № 5 Тема: "Створення динамічної бібліотеки процедур"
- •Лабораторна робота № 6 Тема: "Створення програм із зовнішніми компонентами"
- •Лабораторна робота № 7 Тема: "Створення інформаційної системи за технологією файлового сервера"
- •Лабораторна робота № 8 Тема: "Створення інформаційної системи за технологією клієнт/сервер"
- •Лабораторна робота № 9 Тема: "Робота з базами даних серверної субд"
- •Лабораторна робота № 10 Тема: "Обробка таблиці клієнт/серверної субд за допомогою запитів"
- •Лабораторна робота № 11 Тема: «Робота з com сервером Microsoft Word»
- •Лабораторна робота № 12 Тема: «Робота з com сервером Microsoft Excel»
- •Лабораторна робота № 13 Тема роботи: Створення довідкової системи та її інтеграція в програму
Лабораторна робота № 3 Тема: Створення незалежних модулів для зберігання незалежних процедур
Ціль заняття: отримати практичні навички по створенню програмних модулів і їх використанню в різних проектах
Хід роботи
Завдання 1. Модуль із діалогами
Створіть модульний файл із описом стандартних діалогів для видалення даних, очищення даних, виходу із програми. Усі діалоги оформити у вигляді логічних функцій.
Вказівки: У середовищі Delphi виконайте команду File - New - Unit. У вікні, що з'явилося, уведіть назву модуля Dialogy. За допомогою команди File - Save As збережіть модуль під ім'ям Dialogy.pas.
У вікні коду перейдіть на закладку Unit1 і скопіюйте всі модулі з розділу Uses у код створюваного вами модуля.
У розділі Interface уведіть заголовки підпрограм-функцій:
function delete_data:boolean; //функція видалення даних
function clear_data:boolean; //функція очищення даних
function exit:boolean; //функція виходу
У розділі Implementation уведіть код реалізації функцій:
//функція діалогу видалення даних
function delete_data:boolean;
begin
if application.messagebox('Вилучити дані?', 'Підтвердьте операцію', mb_yesno + mb_iconquestion + mb_defbutton2) = idyes then
delete_data:=true
else
delete_data:=false;
end;
//функція діалогу очищення даних даних
function clear_data:boolean;
begin
if application.messagebox('Очистити дані?', 'Підтвердьте операцію', mb_yesno + mb_iconquestion + mb_defbutton2)=idyes then
clear_data:=true
else
clear_data:=false;
end;
//функція діалогу виходу із програми
function exit:boolean;
begin
if application.messagebox('Вийти із програми?', 'Підтвердьте вихід', mb_yesno + mb_iconquestion + mb_defbutton2)=idyes then
exit:=true
else
exit:=false;
end;
Створіть новий проект із довільною формою.
На формі розмістіть два текстові поля й кнопку для очищення полів. Використовуючи підпрограми-функції зі створеного модуля написати код для очищення полів і виходу із програми.
Вказівки. Скопіюйте створений файл модуля Dialogy.pas у папку з новою програмою. У коді форми в розділі Uses підключіть створений модуль Dialogy.
Для кнопки на формі напишіть код:
procedure Tform1.Button1Click(Sender: Tobject);
begin
//якщо функція рівна true
if clear_data=true then
begin
edit1.text:='';
edit2.text:='';
end;
end;
Для обробки виходу із програми в події Onclosequery напишемо код:
procedure Tform1.Formclosequery(Sender: Tobject; var Canclose: Boolean);
begin
canclose:=exit;
end;
Завдання 2. Модуль із підпрограмами обробки масивів компонентів
Створити модуль із набором підпрограм для обробки масивів полів. Розрахунок максимального, мінімального, суми й середнього оформити у вигляді функцій, очищення масиву полів оформити у вигляді процедури.
Вказівки: У середовищі Delphi виконайте команду File - New - Unit. У вікні, що з'явилося, уведіть назву модуля Massiv. За допомогою команди File - Save As збережіть модуль під ім'ям Massiv.pas.
У вікні коду перейдіть на закладку Unit1 і скопіюйте всі модулі з розділу Uses у код створюваного вами модуля.
Усі підпрограми будуть мати вхідний параметр :
f:tform - змінна для звертання до деякої віртуальної форми.
У розділі Interface уведіть заголовки підпрограм:
function max_mas(f:tform):real; //функція знаходження максимального
function min_mas(f:tform):real; //функція знаходження мінімального
function sum_mas(f:tform):real; //функція знаходження суми
function sred_mas(f:tform):real; //функція знаходження середнього
procedure clear_mas(f:tform); //процедура очищення масиву
У розділі Implementation уведіть код реалізації підпрограм:
//функція знаходження максимального
function max_mas(f:tform):real;
var rez:real; i:integer;
begin
//спочатку максимум нескінченно малий
rez:=-100000;
//у циклі проходимо по всіх компонентах форми
for i:=0 to f.controlcount-1 do
//якщо i-й компонент - текстове поле
if f.controls[i].classname='TEdit' then
//якщо i-й компонент-поле не порожній
if tedit(f.controls[i]).text<>'' then
//якщо значення i-го компонента більше максимуму
if rezrez<strtofloat(tedit(f.controls[i]).text) then<="" p="">
//запам'ятовуємо це поле як максимальне
rez:=strtofloat(tedit(f.controls[i]).text);
//якщо результат не нескінченно малий (були введені дані)
if rez<>-100000 then
//функції привласнюємо результат
max_mas:=rez
//інакше, якщо результат нескінченно малий (немає введених даних)
else
//функції привласнюємо 0
max_mas:=0;
end;
//функція знаходження мінімального
function min_mas(f:tform):real;
var rez:real; i:integer;
begin
//спочатку мінімум нескінченно великий
rez:=100000;
//у циклі проходимо по всіх компонентах форми
for i:=0 to f.controlcount-1 do
//якщо i-й компонент - текстове поле
if f.controls[i].classname='TEdit' then
//якщо i-й компонент-поле не порожній
if tedit(f.controls[i]).text<>'' then
//якщо значення i-го компонента менше мінімуму
if rez>strtofloat(tedit(f.controls[i]).text) then
//запам'ятовуємо це поле як мінімальне
rez:=strtofloat(tedit(f.controls[i]).text);
//якщо результат не нескінченно великий (були введені дані)
if rez<>100000 then
//функції привласнюємо результат
min_mas:=rez
//інакше, якщо результат нескінченно великий (немає введених даних)
else
//функції привласнюємо 0
min_mas:=0;
end;
//функція знаходження суми
function sum_mas(f:tform):real;
var rez:real; i:integer;
begin
//спочатку сума обнулюється
rez:=0;
//у циклі проходимо по всіх компонентах форми
for i:=0 to f.controlcount-1 do
//якщо i-й компонент - текстове поле
if f.controls[i].classname='TEdit' then
//якщо i-й компонент-поле не порожній
if tedit(f.controls[i]).text<>'' then
// до суми додаємо значення цього поля
rez:=rez+strtofloat(tedit(f.controls[i]).text);
//функції привласнюємо результат
sum_mas:=rez;
end;
//функція знаходження середнього
function sred_mas(f:tform):real;
var rez:real; i,kol:integer;
begin
//обнулюємо суму й кількість
rez:=0;
kol:=0;
//у циклі проходимо по всіх компонентах форми
for i:=0 to f.controlcount-1 do
//якщо i-й компонент - текстове поле
if f.controls[i].classname='TEdit' then
//якщо i-й компонент-поле не порожній
if tedit(f.controls[i]).text<>'' then
begin
// до суми додаємо значення цього поля
rez:=rez+strtofloat(tedit(f.controls[i]).text);
//збільшуємо кількість елементів на 1
kol:=kol+1;
end;
//якщо кількість > 0 ( є непусті елементи)
if kol>0 then
//функції привласнюємо знайдене середнє
// для використання функції roundto підключіть модуль Math
sred_mas:=roundto(rez/kol,-2)
//інакше, якщо кількість = 0 (немає введених елементів)
else
//функції привласнюємо 0
sred_mas:=0;
end;
//процедура очищення масиву
procedure clear_mas(f:tform);
var rez:real; i,kol:integer;
begin
//у циклі проходимо по всіх компонентах форми
for i:=0 to f.controlcount-1 do
//якщо i-й компонент - текстове поле
if f.controls[i].classname='TEdit' then
//очищаємо поле
tedit(f.controls[i]).text:='';
end;
Створіть новий проект із формою виду:
Вказівки: Для форми задайте властивості: Bordericon-bimaximized=false, Borderstyle=bssingle, Caption=Робота з модулями, Position=Desktopcenter.
На форму нанесіть поле Edit (Standard) і очистіть його властивість Text. Скопіюйте це поле ще 19 разів і розмістіть масив полів як показано на малюнку.
Нанесіть на форму компонент Radiogroup (Standard). У властивості Items уведіть назви перемикачів, у властивості Itemindex укажіть значення 0, щоб перший перемикач був обраний за замовчуванням.
Нанесіть на форму дві кнопки Button (Standard) і у властивості Caption задайте їхні написи.
Нанесіть на форму компонент Label (Standard). У властивості Caption задайте текст 'Відповідь:', у властивості Font укажіть параметри форматування тексту.
Для кнопки Розрахунок напишіть код, який залежно від обраного перемикача підраховує потрібне значення й відображає на формі за допомогою мітки Label1. Розрахунки виконувати за допомогою підпрограм-функцій з модуля Massiv.
Вказівки. Скопіюйте файл модуля Massiv.pas у папку з вашою програмою. Для використання створених підпрограм-функцій у коді модуля форми підключіть модуль Massiv.
Для кнопки напишіть код:
procedure Tform1.Button1Click(Sender: Tobject);
begin
//викликаємо функції з параметром:
//form1 - ім'я форми, на якій ці поля розташовані
case radiogroup1.Itemindex of
0: label1.caption:='Відповідь: '+floattostr(max_mas(form1));
1: label1.caption:='Відповідь: '+floattostr(min_mas(form1));
2: label1.caption:='Відповідь: '+floattostr(sum_mas(form1));
3: label1.caption:='Відповідь: '+floattostr(sred_mas(form1));
end;
end;
Для кнопки Очистити напишіть код, який очищає масив полів. При цьому діалог запиту на очищення викликається за допомогою функції clear_data з модуля Dialogy.
Вказівки. Скопіюйте файл модуля Dialogy.pas у папку із програмою. У коді форми підключіть модуль Dialogy.
Для кнопки напишіть код:
procedure Tform1.Button2Click(Sender: Tobject);
begin
//якщо функція clear_data=true
if clear_data=true then
//викликаємо процедуру очищення масиву
clear_mas(form1);
end;
Для форми напишіть запит на вихід із програми з використання функції Exit з модуля Dialogy.
Вказівки: модуль Dialogy уже підключений у попередньому пункті завдання. Тому для форми в події Onclosequery напишемо код:
procedure Tform1.Formclosequery(Sender: Tobject; var Canclose: Boolean);
begin
canclose:=exit;
end;