Лабораторна робота №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.