Лабораторна робота №2
Компоненти Delphi.
Архітектура проекту в середовищі програмування DELPHI
Мета роботи: ознайомитись з компонентами Delphi, їх властивостями, методами та подіями, розглянути особливості побудови прикладних програм із використанням компонент Delphi; вивчити побудову проекту в середовищі програмування Delphi, призначення та зміст файлів проекту.
Порядок виконання роботи:
Створити проект для виконання індивідуального завдання.
Оформити звіт для захисту лабораторної роботи за зразком
назва роботи
мета роботи
зміст індивідуального завдання
тексти головного файлу проекту, програмних модулів та файлів форм
аналіз отриманих результатів та висновки
Теоретичні відомості
Компоненти Delphi
Компоненти Delphi є основою для створення прикладних програм. З точки зору користувача компоненти - це об’єкти (екземпляри певного класу), за допомогою яких можна створити інтерфейс програми або додати невізуальні елементи. З точки зору розробника, компоненти – це код на мові Object Pascal, організований у вигляді класів, які визначають стан (за допомогою властивостей) та поведінку (за допомогою методів та подій) для елементів, що додаються до ужитку.
У Delphi компоненти об’єднані в чітке ієрархічне дерево класів, початковим вузлом якого є клас TComponent. У довідковій системі можна переглянути місце в ієрархічному дереві кожної окремої компоненти. Компоненти, що розроблені фірмою Borland, утворюють бібліотеку VCL (Visual Component Library).
Таким чином, з погляду програмування робота з компонентами означає роботу з класами. Крім класів з бібліотеки VCL, можна створити і використовувати власні класи та відповідні їм компоненти. До компонент у програмі звертаються за звичайними правилами мови програмування Object Pascal як до екземплярів класу.
Для розробки програм необхідно орієнтуватися в переліку та можливостях компонент VCL. Компоненти розташовані в палітрі компонент на окремих сторінках, що розділені відповідними закладками. У різних версіях Delphi перелік та зміст сторінок у палітрі можуть змінюватися. Для налаштування палітри можна використати пункт головного меню Delphi Component та його підпункти.
Основні компоненти VCL
Сторінка Standard
Ім’я
Застосування

MainMenu
Головне меню програми

PopupMenu
Спадне меню

Label
Текстовий напис

Edit
Текстовий редактор для одного рядка

Memo
Багаторядковий текстовий редактор

Button
Командна кнопка

CheckBox
Незалежний перемикач

RadioButton
Залежний перемикач

ListBox
Список вибору

ComboBox
Комбінований список вибору

ScrollBar
Смуга перегляду

GroupBox
Група елементів

RadioGroup
Група залежних перемикачів

Panel
Панель

ActionList
Список дій


Сторінка Additional
Ім’я
Застосування

BitBtn
Командна кнопка з написом та піктограмою

SpeedButton
Командна кнопка з піктограмою

MaskEdit
Текстовий редактор для одного рядка з маскуванням

StringGrid
Таблиця текстових рядків

DrawGrid
Довільна таблиця

Image
Малюнок

Shape
Геометрична фігура

Bevel
Рамка

ScrollBox
Панель зі смугами перегляду

CheckListBox
Список множинного вибору

Splitter
Границя

StaticText
Статичний текст

ControlBar
Панель змінної конфігурації

ApplicationEvents
Події ужитку

Chart
Діаграма


Сторінка Win32
Ім’я
Застосування

TabControl
Контейнер з набором закладок

PageControl
Набір панелей з закладками

ImageList
Контейнер для зберігання набору малюнків

RichEdit
Редактор форматованого тексту

TrackBar
Смуга для зміни числових величин

ProgressBar
Індикатор процесу

UpDown
Кнопки для зміни числових величин

HotKey
Клавіша керування

Animate
Вікно для перегляду AVI-файлів

DataTimePicker
Селектор дати і часу

MonthCalendar
Календар

TreeView
Дерево вибору

ListView
Панель піктограм

HeaderControl
Контейнер заголовків колонок

StatusBar
Панель статусу

ToolBar
Інструментальна панель

CoolBar
Панель змінної конфігурації

PageScroller
Інструментальна панель


Сторінка System
Ім’я
Застосування

Timer
Годинник

PaintBox
Вікно для малювання

MediaPlayer
Мультимедійний програвач

OLEContainer
OLE-контейнер

DDEClientConv
DDE-зв’язок (клієнтський)

DDEClientItem
DDE-елемент (клієнтський)

DDEServerConv
DDE-зв’язок (серверний)

DDEServerItem
DDE-елемент (серверний)


Сторінка Dialogs
Ім’я
Застосування

OpenDialog
Діалогове вікно для відкриття файлу

SaveDialog
Діалогове вікно для збереження файлу

OpenPictureDialog
Діалогове вікно для відкриття графічного файлу

SavePictureDialog
Діалогове вікно для збереження графічного файлу

FontDialog
Діалогове вікно для вибору шрифту

ColorDialog
Діалогове вікно для вибору кольору

PrintDialog
Діалогове вікно для вибору принтера і налаштування друку

PrinterSetupDialog
Діалогове вікно для налаштування принтера

FindDialog
Діалогове вікно для пошуку тексту

ReplaceDialog
Діалогове вікно для пошуку та заміни тексту


До палітри компонент також належать сторінки DataAccess, DataControls, Samples, Interbase, Win3.1, ActiveX та інші.
Архітектура проекту в середовищі програмування DELPHI
Проект Delphi складається з декількох пов’язаних файлів. Деякі з них створюються при написанні програми і побудові форм, інші при компіляції проекту. Для ефективної роботи з проектами Delphi необхідно знати призначення кожного файла. Дані теоретичні відомості стосуються Delphi 5, для попередніх та наступних версій можливі певні відмінності. Будь-який проект містить не менше шести пов’язаних з ним файлів.
Всі файли, що відносяться до певного проекту слід обов’язково розміщувати в одному окремому каталозі. Можна задати автоматичне збереження файлів проекту при кожному завантаженні ужитку на виконання з допомогою опції Autosave options на сторінці Preferences пункту головного меню Tools(Environment Options.
Головний файл проекту (*.dpr)
Цей файл є обов’язковим при написанні прикладної програми. У ньому, як правило, розміщується код, що виконується при старті програми, зокрема, створюється головна форма.

Рис. 1. Типовий код головного файлу проекту
В операторі uses перелічується список усіх модулів, що використовуються в даному проекті.
Рядок {$R *.RES} повідомляє компілятору, що він повинен зв’язати з проектом файл ресурсів, який має те саме ім’я, що і головний файл, але розширення .res.
Блок begin .. end містить основний код проекту, до якого можна додати свій власний код.
Програмні модулі проекту (*.pas)
Це вихідні файли програми на Object Pascal. Їх можна поділити на три основні типи: модулі форм, модулі загального призначення і модулі компонент.
Модулі форм автоматично генеруються Delphi для кожної створеної форми. Неможливо створити в одному модулі дві форми.
Модулі загального призначення створюються програмістом і містять різні типи даних, класи, змінні, об’єкти, процедури і функції, методи класів, що будуть доступними для цього ужитку.
Модулі компонент генеруються Delphi при написанні нової компоненти.

Рис. 2. Приклад коду програмного модуля
Файли форм (*.dfm)
При створенні нової форми крім програмного модуля (з розширенням .pas) Delphi генерує файл, що містить її текстове або бінарне представлення. У програмному модулі форми міститься рядок {$R *.DFM}. Цей рядок вказує компілятору, що він повинен зв’язати з проектом відповідний файл форми, з тим самим ім’ям, що і програмний модуль, але з розширенням .dfm.
У файлі форми зберігаються налаштування, зроблені в Інспекторі Об’єктів. Також файл форми можна редагувати безпосередньо. Для цього його можна відкрити у редакторі Delphi або натиснути праву кнопку миші в дизайнері форм і вибрати зі спадного меню пункт View as Text. Змінювати файл форми потрібно дуже обережно, некоректні зміни будуть довільним чином виправлятись середовищем Delphi.
Формати файлів форм різних версій Delphi відрізняються. Зокрема, для кодування кирилиці, починаючи з Delphi 6, використовується Unicode, що може зробити неможливим роботу з проектом Delphi 6 у попередніх версіях. Для усунення цього можна уникати вживання кирилиці, або використовувати відповідні програми-конвертери.

Рис. 3. Приклад коду файлу форми
Головний файл проекту, програмні модулі та файли форм є необхідними для відтворення програмного коду при перенесенні проекту на інший комп’ютер. Розміщення цих файлів можна уточнити за допомогою Менеджера Проекту (пункт головного меню View(Project Manager).
Для перегляду змісту файлів проекту використовуються пункти головного меню View(Units та View(Forms. Додати нові програмні модулі до проекту можна за допомогою пункту головного меню Project(Add to Project, а вилучити існуючі - Project(Remove from Project. Також можна скористатись відповідними комбінаціями клавіш або кнопками швидкого доступу.
Файл ресурсів (*.res)
Містить бінарні дані (ресурси), які зв’язуються з виконавчим файлом прикладної програми. Цей файл автоматично створюється Delphi, зокрема, містить піктограму проекту, та інформацію про версію програми. Якщо необхідно змінити або додати нові ресурси, можна відредагувати існуючий файл ресурсів, або створити новий і пов’язати його з проектом. Це можна зробити за допомогою Image Editor (викликається з пункту головного меню Tools).
Щоб використати готовий малюнок як піктограму проекту, слід перетворити його до формату *.ico (розміром 16x16 або 32x32) і вибрати цей файл за допомогою пункту головного меню Project(Options на сторінці Application.
Після компіляції програми отримуються файли з розширеннями:
.dcu - скомпільовані модулі;
.exe - файл виконання, або
.dll – бібліотека динамічного компонування (для її створення у головному файлі проекту замість program використовують ключове слово library).
Назва файлу виконання або бібліотеки динамічного компонування збігається з назвою головного файлу проекту.
Файли опцій проекту та налаштувань робочого столу (*.dof, *.cfg, *.dsk)
Ці файли відносяться до управління проектом із середовища і можуть не змінюватись програмістом.
Файли опцій проекту з розширеннями .dof та .cfg зберігають установки, визначені в меню Project(Options. Ці файли створюються Delphi при першому збереженні проекту і оновлюються при кожному наступному.
Файли налаштувань робочого столу з розширенням .dsk зберігають опції, визначені в меню для робочого столу середовища Delphi.
Резервні файли (*.~*)
Delphi створює резервні файли для головного файлу проекту і програмних модулів при другому та наступних збереженнях. Резервні файли містять передостанню версію коду і мають розширення .~dp, .~pa. Резервний файл форми також створюється при другому та наступних збереженнях і має розширення .~df. Від створення цих файлів можна відмовитись з допомогою опції Create backup file на сторінці Display пункту головного меню Tools(Editor Options.
Файли пакетів (*.dpk, *.dcp)
Пакети - це динамічні бібліотеки класів або компонент, що спільні для багатьох прикладних програм. Вихідні файли пакетів мають розширення .dpk, cкомпільовані модулі - розширення .dcu, файл з бінарним кодом для dpk-файлу має розширення .dcp.
Питання для самоконтролю
1. Що таке компонента Delphi?
2. Для чого використовуються компоненти Delphi?
3. Як можна класифікувати компоненти? За яким принципом компоненти розподілені по сторінках у палітрі?
4. Які основні ознаки компонент?
Наведіть приклади візуальних та невізуальних компонент.
Опишіть структуру проекту в середовищі Delphi.
Які файли є обов’язковими у проекті ?
Що зберігається в файлах з розширеннями .dpr, .dfm ?
Для чого призначений Менеджер Проекту ?
Як можна додавати і вилучати файли в проекті ?
Які файли створюються при збереженні і компіляції проекту ?
Завдання
А. Використовуючи компоненти Memo та OpenDialog створити програму для перегляду та редагування текстових файлів (з можливостями відкриття та збереження файлів на диску).
B. Додати до програми нові можливості у відповідності з індивідуальним завданням.
Перевірити наявність файла на диску перед відкриттям.
Запитати у користувача підтвердження при записі змін у відкритий файл.
Реалізувати програму з використанням стандартної компоненти збереження файлу.
Додати можливість створювати та зберігати нові файли.
Додати повідомлення про неможливість редагування нетекстових файлів.
Додати можливість перегляду файлів з малюнками.
Додати можливість вибору шрифту.
Передбачити можливість тільки перегляду файлів.
Додати спадне меню з розширеннями при відкритті файлів.
Додати можливість пошуку потрібного файлу на дереві вибору (Підказка - використати компоненти DriveComboBox, DirectoryListBox, FileListBox).
Додати на форму назву файла, що редагується та покази секундоміра.
Задати певний тип розширення, файли з яким програма не буде змінювати.
Використати замість Memo компоненту RichEdit.
Додати можливість виконання дій за допомогою головного меню та “гарячих клавіш”.
Додати можливість виконання дій за допомогою спадного меню.
Додати можливість виконання дій за допомогою інструментальної панелі.
Додати на форму покази секундоміра зі зворотнім відліком.
Вивести інформацію про зміну у файлі на панель статусу.
Рекомендована література
Архангельский А. Я. 100 компонентов общего назначения библиотеки Delphi 5 - файл 100comp.chm.
Архангельский А.Я. Delphi 6. Справочник. – М.: Бином, 2001.
Кенту М. Delphi 7 для профессионалов. – С.-Петербург, Питер – 2004.
Тейксейра С., Пачеко К. Borland Delphi 6. Руководство разработчика. – М. Изд. дом Вильямс, 2002.