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

7. Використання текстових констант у модулях

Якщо розроблювач хоче, щоб у його програмах використовувалися однакові повідомлення, текстові написи й інші текстові позначення, то можна стандартизувати такі повідомлення за допомогою текстових констант.

Для цього в розділі Interface модуля відразу після розділу Uses описуємо потрібну кількість констант у вигляді:

const

ім'я1=’значення’;

ім'я2=’значення’;

. . .

ім’яn=’значення’;

Для використання такої константи команду видачі діалогу потрібно записати так:

application.messagebox(pchar(ім'я1), pchar(ім'я2), прапори)

Приклад. Створити модуль, який містить текстові константи для діалогів очищення даних і виходу із програми.

Нехай модуль має ім'я Titleunit. У модулі немає підпрограм, тому підключення додаткових модулів не потрібно

unit titleunit;

interface

const

clear_text=’Очистити дані?’;

clear_title=’Підтвердьте операцію’;

exit_text=’Вийти із програми?’;

exit_title=’Підтвердьте вихід’;

implementation

end.

Збережіть файл під ім'ям titleunit.pas.

Перепишемо створений раніше модуль zapros.pas з використання текстових констант.

unit zapros;

interface

//підключаємо модуль titleunit

uses  windows, messages, sysutils, variants, classes, graphics, controls, forms, dialogs, stdctrls, titleunit;

//указуємо заголовки підпрограм

function clear_data:boolean; //функція очищення даних

function exit:boolean; //функція виходу

implemenmtation

//код реалізації підпрограм

//функція діалогу очищення даних даних

function clear_data:boolean;

begin

if application.messagebox(pchar(clear_text), pchar(clear_title), mb_yesno +  mb_iconquestion + mb_defbutton2)=idyes then

clear_data:=true

else

clear_data:=false;

end;

 

//функція діалогу виходу із програми

function exit:boolean;

begin

if application.messagebox(pchar(exit_text), pchar(exit_title), mb_yesno +  mb_iconquestion + mb_defbutton2)=idyes then

exit:=true

else

exit:=false;

end;

end.

Надалі, якщо потрібно поміняти текст у діалогах програми, достатньо відкрити модуль titleunit.pas, внести зміни в значення текстових констант і заново відкомпілювати проект програми.

8. Створення підпрограм для обробки компонентів

Якщо підпрограма модуля призначена для обробки компонентів, то така підпрограма обов'язково повинна мати вхідний параметр – змінну-форму.

Такий параметр описується так:

ім'я: tform;

При цьому звертання до компонентів на формі записується так:

tтип_компонента(ім'я.controls[i]) //звертання до компонента з номером i

tтип_компонента(ім'я.activecontrol) //звертання до активного компонента

Приклад. У модуль zapros.pas додати підпрограму-функцію для визначення максимального значення в масиві полів.

На формі може розташовуватися довільне число різнотипних компонентів, тому поля масиву потрібно якось відокремити. Це можна зробити, привласнюючи їм однакове значення у властивості tag. Значення цієї властивості буде першим параметром підпрограми.

Для звертання до компонентів другим параметром підпрограми буде змінн-форма.

У розділі Interface модуля додамо заголовок підпрограми-функції.

function max_min(n:integer; f:tform):real;

У розділі Implementation напишемо код реалізації підпрограми.

//функція визначення максимального

function max_mas(n:integer; f:tform):real;

var rez:real; i:integer;

begin

//спочатку максимум нескінченно малий

rez:=-100000;

//у циклі проходимо по всіх компонентах форми

for i:=0 to  f.controlcount-1 do

//якщо i-й компонент поле (тільки поля масиву мають tag =n)

if f.controls[i].tag=n 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

//функції присвоюємо результат

max_mas:=rez

//інакше, якщо результат нескінченно малий (немає введених даних)

else

//функції присвоюємо 0

max_mas:=0;

end;

Нехай є форма Form1 з 10 текстовими полями масиву й полем Edit11 для відповіді. Усі поля масиву мають властивість Tag=1. На формі є кнопка, яка визначає максимальне значення масиву й записує його в поле Edit11.

Скопіюйте файл модуля zapros.pas у папку із програмою. У коді форми підключіть модуль zapros.

Для кнопки напишіть код:

procedure Tform1.Button1Click(Sender: Tobject);

begin

//параметри підпрограми задаються так:

//1 – значення властивості tag полів масиву

//form1 – ім'я форми, на якій розташований масив

edit11.text:=floattostr(max_mas(1,form1));

end;

 

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

1. В чому перевага модульного програмування?

2. Дайте характеристику принципу "інформаційної закритості даних" в модулях.

3. Дайте визначення модуля в Onject Pascal.

4. Яку структуру має модуль в Object Pascal?

5. Опишіть розділ Interface модуля в Object Pascal.

6. Опишіть розділ Implementation  модуля в Object Pascal.

7. Опишіть принцип створення і використання модуля в Object Pascal.

8. Як в модулі описати текстові константи?

9. Які особливості має принцип створення в модулі підпрограм для обробки компонентів?

10. Приведіть приклад підпрограми знаходження суми текстових полів на формі.

Лекція №10

Тема: Створення бібліотек та сервісів.

Мета: Придбання знань зі створення статичних та динамічних бібліотек. Використання бібліотек при розробці програм.

Перелік питань, що розглядаються на лекції:

1. Поняття DLL

2. Створення DLL бібліотеки в Delphi

3. Внесення форм в DLL

4. Використання DLL бібліотеки

 

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]