ТЕОРЕТИЧНІ
ЗАСАДИ
РЕАЛІЗАЦІЇ
МЕТОДІВ ОБ’ЄКТНО-ОРІЄНТОВАНОГО
ПРОГРАМУВАННЯ

1. Основні
принципи
об’єктно-орієнтованого
програмування

Поняття
об’єктно-орієнтованого
програмування

Об’єктно-орієнтоване
програмування
(ООП) являє
собою спосіб
програмування,
який нагадує
процес
мислення
людини. Він
з’явився в
результаті
еволюції мов
програмування.
Цей спосіб
програмування
більш структурований
у порівнянні
з іншими і дозволяє
створювати
модульні
програми з представленням
даних на
певному
рівні абстракції.
Програми,
написані на
основі ООП, є
більш
гнучкими і
більш
відкритими
для внесення
змін.

Незручності
об’єктно-орієнтованого
програмування
полягають у
необхідності
відмовитися
від
догматичної
уяви про
програмування.
Але якщо це
зробити,
об’єктно-орієнтоване
програмування
стане
простим,
зрозумілим,
наочним і неперевершеним
засобом
вирішення
багатьох
проблем,
розв’язання
яких
викликало труднощі
при
традиційних
підходах до
програмування.

Об’єктно-орієнтовані
мови
програмування
характеризуються
трьома
основними
властивостями:

1. Інкапсуляція –
об’єднання
записів з
процедурами
і функціями,
які працюють
з полями цих
записів і формують
новий тип
даних –
об’єкт.

2. Наслідування
–
визначення
об’єкта і
подальше
використання
всіх його
властивостей
для побудови ієрархії
породжених
об’єктів з
можливістю
для кожного з
них доступу
до коду і
даних всіх
батьківських
об’єктів.

3. Поліморфізм –
присвоювання
певній дії
одного імені,
яке потім
сумісно
використовується
всією ієрархією
об’єктів,
причому
кожен об’єкт
ієрархії
виконує цю
дію характерним
саме для
нього
способом.

Об’єктно-орієнтоване
візуальне
програмування – це новий
підхід до
побудови
складних програм
та їх систем.
Первинно він
зародився в деяких
мовах
програмування,
таких як, Ада,
Smalltalk, С++, Borland Pascal. До
появи ООП в
мовах
програмування
господарювало
процедурне
програмування.
Основою
програми були
процедури і
функції,
тобто дії.
Програміст
визначав, які
дії йому
потрібні для
розв’язування
поставленої
задачі,
реалізовував
ці функції та
об’єднував
їх у програму.
Програма,
зазвичай,
мала
достатньо
чіткий
алгоритм
роботи.

В
об’єктно-орієнтованому
програмуванні
головною,
відправною
точкою є не
процедура, не
дія, а об’єкт. Такий
підхід
нагадує
взаємодію
між об’єктами
у реальному
житті,
наприклад,
між людьми,
технічними
пристроями,
предметами
тощо.

З іншого
боку,
взаємодія
користувача
з комп’ютерною
програмою –
це також
взаємодія двох
об’єктів:
програми і
людини, які
обмінюються
одне з одним
певними повідомленнями.
Прикладна
програма
(додаток),
побудована
за
принципами
об’єктної
орієнтації,
не являє
собою
послідовність
певних
операторів,
жорсткий
алгоритм. Об’єктно-орієнтована
програма –
це
сукупність
об’єктів і
способів їх
взаємодії. При цьому
окремим, і у
багатьох
випадках
головним
об’єктом,
можна
вважати
користувача
програми.

Переважна
більшість
прикладних
програм для Windows
побудована
на принципах
ООП, тобто,
після
запуску
додатку на
екрані
з’являється
її головне
вікно з
великою
кількістю різноманітних
об’єктів –
кнопок, меню,
списків тощо.
Прикладна
програма
“очікує” дій користувача
–
повідомлень,
які
надходять від
натискання
клавіш
клавіатури,
переміщення
курсору миші
тощо. Після
того, як таке повідомлення
надходить
від
користувача, воно
сприймається
певним
об’єктом
програми і
тепер вже
користувач
очікує
повідомлення
від додатку.
Така
взаємодія,
характерна
для об’єктно-орієнтованого
підходу до
програмування,
відбувається
протягом
всієї роботи
користувача
з програмою.

Об’єкти,
властивості,
методи, події

Первинно об’єкт можна
визначити як певну
сукупність
даних і
способів роботи
з ними.
При цьому,
дані можна
розглядати
як поля записів.
Користувач
та інші
об’єкти
повинні мати
можливість
зчитувати ці
дані об’єкта,
певним чином
їх обробляти
і записувати в
об’єкт нові
значення,
тобто,
важливіше
значення при
цьому мають
принципи інкапсуляції
і приховування
даних.

Принцип
приховування
даних
полягає в тому,
що зовнішнім
об’єктам та
користувачеві
прямий
доступ до
даних, як
правило,
заборонено,
внаслідок
таких
міркувань:

По-перше,
для
надійного
функціонування
об’єкта
необхідна
підтримка цілісності
і
несуперечності
його даних.
Якщо це не
передбачити,
то в разі
внесення
користувачем
до об’єкту
невірним
даних, від
почне
функціонувати
з помилками.

По-друге,
необхідно
ізолювати
зовнішні об’єкти
від
особливостей
внутрішньої
реалізації
даних. Для
зовнішніх
користувачів
має бути доступним
лише
користувацький
інтерфейс, а
внутрішня
реалізація
залишається
справою розробника
програми.

Для
підтримки
принципу
приховування
даних в
об’єктах,
зазвичай,
визначають
певні процедури
і функції. Процедури
і функції,
які
забезпечують
всі
необхідні операції
з даними:
зчитування,
обробку і
запис
називаються
методами.
Методи
забезпечують
спілкування
з даними
об’єктів.

Сукупність
даних і
методів їх
зчитування та
запису
називають
властивістю. Властивості
об’єктів можна
встановлювати
під час
проектування
і змінювати
програмно
під час
виконання прикладної
програм.

Середовищем
взаємодії
об’єктів є повідомлення,
які
генеруються
в результаті
різноманітних
подій.
Події
настають,
насамперед,
внаслідок
дій користувача
– переміщення
курсору миші,
натискання
клавіш клавіатури
тощо. Але
події можуть
наставати й у
результаті
роботи самих
об’єктів. В
кожному
об’єкті
визначена
певна
множина подій,
на які він
може
реагувати. У
певних екземплярах
об’єкту
можуть бути
визначені обробники
певних подій,
які і
визначатимуть
реакцію даного
об’єкта. У
написанні
саме таких
обробників
події і буде
полягати
основне
програмування
під час
розробки
графічного
інтерфейсу
користувача.

Отже,
об’єкт являє
собою
сукупність
властивостей
і методів, а
також подій,
на які він
може
реагувати.

Рис. 1. Схема
організації
об’єкта

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

Зазвичай,
прикладна
програма не є
певною
сукупністю
об’єктів. Під
час її роботи
об’єкти
можуть
створюватися
і зникати.
Таким чином,
структура
об’єктно-орієнтованої
програми є
динамічним
утворенням,
яке
змінюється в
процесі її
виконання. При
цьому,
основною
метою
створення і
знищення об’єктів
є економія
ресурсів
комп’ютера,
насамперед,
пам’яті.

З метою
організації
динамічного
розподілу
пам’яті у всі
об’єкти
закладені
методи їх
створення – конструктори
і методи їх
знищення – деструктори.

Конструктори
об’єктів
спрацьовують
під час
запуску програми
на виконання,
деструктори
– при завершенні
її роботи.
Але, часто і у
процесі виконання
програми
різні нові
об’єкти, наприклад,
нові вікна
документів,
динамічно створюються
і знищуються
за допомогою
їх конструкторів
і
деструкторів.

Включати
об’єкти у
свою
програму
можна двома
способами:

1)
вручну
за допомогою
операторів,
що доводиться
роботи не
дуже часто;

2)
шляхом
візуального
програмування,
використовуючи
певні
заготовки – компоненти.

Основи
візуального
програмування
інтерфейсу

Історично
склалося, що
на розробку
елементів
графічного
інтерфейсу
(вікон,
кнопок, меню
тощо) програм
витрачалося
багато часу і
цей сервіс
займав до 80-90% загального
об’єму
програмних
кодів. Вихід
з цієї
ситуації
знайшовся
завдяки двом
підходам. Перший з
них –
стандартизація
багатьох
функцій
інтерфейсу,
завдяки чому
з’явилася
можливість
використовувати
бібліотеки,
які є,
наприклад, у Windows. Був
створений API Windows –
коритувацький
інтерфейс Windows, який
містив
багато
різних
корисних
функцій. Самі
функції API Windows
постійно вдосконалюються,
їх кількість
зростає від
версії до
версії Windows, але при
цьому
оголошення
функцій не
змінюється
завдяки
принципам
інкапсуляції
і приховування
даних. Тобто,
під час зміні
стилю
графічного
інтерфейсу,
наприклад,
при переході
від Windows 3.x до Windows 95,
додатки
змогли
автоматично
пристосовуватися
до нової
системи без
їх
перепрограмування.

На цьому
шляху
створилися
чудові умови
для
розв’язання
одного з
найважливіших
завдань
удосконалення
техніки
програмування
– повторного
використання
кодів. Один
раз
розроблені
форми,
компоненти,
функції
можна потім
багаторазово
використовувати
особисто або
іншими
програмістами
для
розв’язування
задач.
Причому, була
забезпечена
сумісність
програмного
забезпечення,
розробленого
різними
алгоритмічними
мовами.

Delphi
надає
розробнику
багатий
інструментарій
для
повторного
використання
програмних
кодів.
Програміст
має
можливість
зберігати
фрагменти
своїх
розробок
(типові вікна,
функції,
компоненти
тощо) і
використовувати
їх у
наступних
проектах.
Таким чином з
часом можна
накопичити
власні
бібліотеки,
які
кардинально
прискорять
роботу над
створенням
нових
додатків.

Другим
революційним
кроком,
що
кардинально
полегшив
життя
програмістам,
була поява візуального
програмування.
Воно виникло
у Visual Basic і
блискуче розвинулося
у Delphi
фірми Borland.
Візуальне
програмування
дозволяє
звести
проектування
інтерфейсу
користувача
до
послідовності
простих і
наочних
процедур, за
допомогою
яких за
досить
короткий час
програміст
може зробити
те, на що
раніше витрачалися
місяці роботи.

Сутність
візуального
програмування
полягає у
наступному.
Користувач
працює в ІСР –
Інтегрованому
середовищі
розробки (Integrated development environment
– IDE).
Середовище
надає йому форми,
на яких
розміщуються
компоненти.
Форм у
додатку може
бути декілька,
причому, вони
можуть бути
видимі і невидимі.
На форму за
допомогою
миші переносяться
і
розміщуються
піктограми
компонентів,
які
зберігаються
у
бібліотеках Delphi. За
допомогою
нескладних
маніпуляцій
користувач
має змогу
змінювати
розміри і
розташування
компонентів
на формі. При
цьому, під час
маніпуляцій
є можливість
побачити результати
власних дій
без
виконання
компіляції
додатку. Але
основною
перевагою
цього
підходу до
програмування
є те, що під
час візуального
проектування
форми і
розміщення
на ній
компонентів
ІСР Delphi
автоматично
формує коди
програми, які
описують
компоненти
форми. Після
цього в різноманітних
діалогових
вікнах
користувач має
можливість
змінювати
встановлені
за замовченням
значення
будь-яких
властивостей
цих
компонентів
і прописувати
необхідні
обробники
певних подій.

Таким
чином,
візуальне
проектування
полягає у:

1)
розміщенні
необхідних
компонентів
на формі;

2)
встановленні
їх певних
властивостей;

3)
написанні,
за
необхідності,
обробників
подій.

Компоненти
Delphi
можуть бути візуальними
і невізуальними.
Візуальні
компоненти
в процесі
проектування
додатку на
екрані мають
такий самий
вигляді, в
якому їх
побачить
користувач
під час
виконання
додатку. Це
дозволяє
легко
обирати їх
місце розташування
та дизайн –
форму,
розмір,
оформлення
текст колір
тощо. До
візуальних
компонентів
належать Button, BitBtn, Edit, Label
тощо.

Невізуальні
компоненти
у процесі
проектування
додатку
мають вигляд
піктограм,
але під час
виконання
додатку для
користувача
вони є
невидимими,
хоча виконують
“за кадром”
свої функції.
Прикладами
невізуальних
компонентів
є MainMenu, PopupMenu, Timer тощо.

Бібліотеки
візуальних
компонентів Delphi
містять
багато типів
компонентів
і їх номенклатура
швидко
зростає від
версії до версії
Delphi.

2. Склад
Інтегрованого
Середовища
Розробки Delphi 5

Загальний
вигляд вікна
ІСР Delphi 5

ІСР Delphi 5 являє
собою
середовище,
яке містить
всі необхідні
засоби для
проектування,
запуску й
тестування
додатків, а
саме,
інструментальні
панелі,
редактор
кодів,
редактор зображень,
інструментарій
баз даних,
налагоджувач
додатків
тощо.

Рис. 2. Інтегроване
середовище
розробки Delphi 5

Запустити ІСР Delphi 5
можна за
допомогою
головного
меню Windows або
скористатися
ярликом на
робочому столі.

ІСР Delphi 5
складається
з набору
елементів,
які завжди присутні
на екрані:

1)
головне
вікно, яке
містить
головне меню Delphi,
набір
піктограм і
палітру
компонентів (Delphi5 – Project1);

2)
вікно
Інспектора
Об’єктів (Object
Inspector);

3)
вікно
форми (Form1);

4)
вікно
коду
програми (Unit1.pas);

5)
вікна
провідника
коду (Code
Explorer), яке
розташоване
ліворуч від
вікна коду.

Розглянемо
склад,
призначення
та основні функції
цих
елементів.

Головне
вікно Delphi 5

Головне
меню
призначене
для
керування
послідовністю
дій у Delphi. Воно має
досить
складну
структуру і
керується за
допомогою
миші або
клавіатури.

Головне
меню у Delphi
5.0 містить
такі розділи:

1)
File
– містить
команди, що
дозволяють
створити новий
проект, нову
форму,
відкрити
раніше створений
проект або
форму,
зберегти
проекти або
форми у
файлах з
певними
іменами.

2)
Edit
– дозволяє
виконувати
звичайні для Windows-додатків
операції з
буфером
обміну, відміни
дій, а також,
операції
керування
відображенням
компонентів
на формі.

3)
Search
– містить
команди для
пошуку
інформації в коді
додатку та її
заміни в разі
необхідності.

4)
View
– дозволяє
викликати на
екран
будь-які
компоненти
проекту.

5)
Project
– містить
команди для
роботи з
проектами, наприклад,
додавати або
видаляти з
проектів
форми,
задавати
опції
проектів,
компілювати
проект без
виконання
тощо.

6)
Run
– надає
можливість
виконувати проект
у
нормальному
режимі та
налагоджувати
його за
допомогою
інтегрованого
налагоджувача.

7)
Component
– дозволяє
працювати з
бібліотекою
компонентів,
а саме
проглядати
її зміст,
створювати і
додавати
нові
компоненти,
перекомпоновувати
палітру
компонентів
тощо.

8)
Database
– допомагає
використовувати
інструментарій
для роботи з
базами даних.

9)
Tools
– містить ряд
розділів, що
дозволяють
виконувати
різні
допоміжні
програми,
наприклад,
відкрити
вікно
настроювання
параметрів
середовища,
викликати
вікно
редактору зображень
(Image Editor) тощо.

10)
Help
– відкриває
доступ до
вбудованої у Delphi довідкової
системи.

Окрім
головного
меню у Delphi
є система контекстних
спливаючих
меню, які
з’являються
при
розміщенні
курсору миші
у певному
місці вікна
або на
будь-якому компонентові
і клацання
правої
кнопки миші.
Більшість
розділів цих
контекстних
меню дублюють
основні
розділи
головного
меню. Але у
ряді
випадків є
розділи,
відсутні у
головному меню,
дістатися до
яких можна
тільки за допомогою
певних
контекстних
меню.

Піктограми
дозволяють
швидко
виконувати
найважливіші
опції
головного
меню. Всі
вони мають
спливаючи
підказки, які
з’являються
після наведення
на них
курсору миші.

Палітра
компонентів (Visual Component Library)
дозволяє
вибирати
компоненти
для Windows-додатків,
що розробляються
в Delphi. Компонентами
в Delphi
називаються
елементи, з
яких
складаються видимі
зображення
працюючої
програми. Ними
можуть бути
кнопки,
списки, рядки
введення,
мітки тощо.
Компоненти,
розташовані
в палітрі,
мають вигляд
іконок.

Рис. 3. Головне
меню,
піктограми і
палітра
компонентів Delphi 5

Піктограми
стандартних
компонентів Delphi
розділені на
групи у
відповідності
з функціями,
які вони
виконують.
Кожна група
розташовується
на окремій
сторінці
палітри компонентів.
За
стандартної
інсталяції Delphi 5
містить 19
таких
сторінок.

Після
завантаження
ІСР Delphi
активною є
сторінка Standard.
Стандартні
компоненти,
розташовані
на цій
сторінці,
являють
собою класи,
що реалізують
інтерфейсні
елементи
середовища Windows.

Список
компонентів
сторінки Standard Delphi 5

ActionList
–
створює
список
операцій, що
координує реакцію
додатку на
дію
користувача.

Button
–
відображує
кнопку з надписом.

ComboBox –
вікно
редагування,
об’єднане з
випадаючим
списком.

CheckBox
– створює
прапорець,
який
інтерактивно
встановлюється
або
відміняється
користувачем.

Edit
– задає
рядок
введення.

Frames
– відкриває
діалогове
вікно зі
списком компонентів,
які були
включені до
проекту,для
вибору і
розміщення
на поточній
формі.

GroupBox
– для
об’єднання
декількох
компонентів,
пов’язаних
за змістом.

Label –
для
розміщення у
вікні не дуже
довгих надписів.

ListBox –
для
виведення
списку
рядків, що
прокручуються.

MainMenu
– для
створення
головного
меню додатку.

Memo
– для
відображення
і
редагування
багаторядкового
тексту.

Panel –
створює панель,
на якій можна
розміщувати
інші компоненти.

PopupMenu
– генерує
допоміжне
меню.

RadioButton
– створює
залежний
перемикач.

RadioGroup
– створює
групу
перемикачів
із взаємовиключенням.

ScrollBar
– змінює
область перегляду
списку або
форми.

Коротко
розглянемо
призначення
деяких інших
сторінок Палітри
Компонентів Delphi 5.

Сторінка Additional (додаткові
компоненти) –
містить
компоненти,
які
дозволяють
урізноманітнити
зовнішній
вигляд вікон
додатків,
наприклад:

-
BitBtn
–
призначений
для
створення
кнопки, яка
може містити
растровий
малюнок
(властивість Glyph).
Має декілька
заздалегідь
визначених
типів,
наприклад,
кнопки bkClose, bkOk тощо,
за вибору
яких, кнопка
приймає
належний
вигляд.

-
SpeedButton
–
призначений
для
створення
кнопок швидкого
доступу до
команд.

-
Image
–
призначений
для
відображення
графічних
зображень на
формі у
форматах .bmp, .ico, .wmf.

-
Shape
–
призначений
для
відображення
найпростіших
геометричних
об’єктів на
формі, наприклад,
кола,
квадрату
тощо.

-
Bevel
–
призначений
для
створення
рельєфного оформлення
інтерфейсу.

На
сторінці Dialogs
розміщені
компоненти
для виклику
стандартних
діалогів Windows.
Зовнішній
вигляд
діалогів
залежить від
версії Windows, що
використовується.
Об’єкти,
представлені
на цій
сторінці,
невидимі під
час виконання
додатку і їх
виклик
здійснюється
програмно. Ця
сторінки
містить такі
стандартні
діалогиWindows:

-
OpenDialog
– для вибору
файлу.

-
SaveDialog
– для
збереження
файлу.

-
FontDialog
– для
настроювання
шрифтів.

-
ColorDialog
– для вибору
кольору.

-
PrintDialog
– для
організації
друку.

-
FindDialog – для
пошуку рядка
та деякі
інші.

Сторінка System являє
собою набір
компонентів,
які призначені
для доступу
до певних
системних
сервісів,
серед яких
доцільно
виділити
такі:

-
Timer
– забезпечує
доступ до
таймеру
системи. Полія
OnTimer
викликається
періодично
через
проміжок часу,
який вказується
у
властивості Interval.

-
PaintBox
– місце для
малювання.

-
MediaPlayer
–
призначений
для
керування
мультимедійними
пристроями
комп’ютера
типу CD-ROM, MIDI
тощо і має
вигляд
панелі
керування з
кнопками. Для
відтворення
інформації
необхідно встановити
відповідне
апаратне і
програмне
забезпечення.

Сторінка Win 3.1
містить
компоненти у
стилі Windows 3.X. На
ній розташовані:

-
TabSet
– набір
вкладинок.

-
Notebook
– набір
панелей без
вкладок.

-
FileListBox
– панель
вибору
файлів.

-
DirectoryListBox
– панель
вибору
каталогів.

-
DriveComboBox
– панель
для вибору
дисків.

-
FilterComboBox
– панель
фільтрації
файлів та
деякі інші компоненти.

Сторінка Win32 містить
інтерфейсні
елементи для
32-х розрядних
операційних
систем родини
Windows,
наприклад,
текстовий
редактор RichEdit,
інструментальна
панель для
командних кнопок,
вікно для
введення
дати або часу
DataTimePicker
та інші.

Сторінка Data Access –
містить
компоненти,
що
забезпечують
доступ до баз
даних і
роботи з ними
через Borland
Database Engine (BDE).

Сторінка FastNet дозволяє
використовувати
різні
протоколи
доступу до Internet.

Сторінка Internet
містить
компоненти
для розробки
додатків, що
працюють з Internet.

Сторінка QReport призначена
для швидкої
підготовки
звітів.

Вікно
Інспектора
Об’єктів

Інспектор
об’єктів (Object Inspector)
дозволяє
встановлювати
властивості
об’єктів і
призначати
методи під
час створення
програм
(додатків). Загальний
вигляд вікна
Інспектора
Об’єктів ІСР Delphi 5
наведено на
рис. 1.4.

Рис. 4. Вікно
Інспектора
Об’єктів Delphi 5

Вікно
Інспектора
Об’єктів
складається
з двох
сторінок:

1) Properties
(властивості);

2) Events
(події).

Сторінка Properties
складається
з 2-х стовпців.
Лівий
містить список
всіх
властивостей
виділеного
компоненту,
які доступні
під час
проектування.
Правий стовпець
дозволяє
змінювати
значення цих
властивостей.

Деякі
властивості,
що
відображені
на сторінці Properties,
мають
початкові
(стандартні)
значення, які
встановлюються
за
замовченням.
Крім того,
перед
певними іменами
може стояти
знак +.
Це означає,
що дана
властивість
є комбінованою
і
складається
з декількох
пунктів. Значення
властивості
відображається
рядками
введення або
комбінованими
рядками введення.
Комбінований
рядок
містить у правій
частині
кнопку із
зображенням
трикутника,
при
натисканні
на яку надається
можливість
вибору
допустимих
значень
властивостей
з
випадаючого
списку.

Деякі
рядки
введення в
правій
частині містять
кнопку з
зображенням
трьох точок.
Це означає,
що при
натисканні
цієї кнопки
відкривається
вікно, в
якому
необхідно
задати ряд
параметрів
цієї
комбінованої
властивості.

Друга
сторінка Events
також
складається
з 2-х стовпців.
У лівому перелічені
всі
обробники
подій
компоненту.
Правий
призначений
для
встановлення
імен
відповідних
обробників
подій. Задати
ім’я
обробника
подій можна 2
способами.
По-перше,
двічі
клацнути
мишею по стовпцю,
де повинно
бути це ім’я
(при цьому
ім’я обирається
автоматично
у форматі КомпонентПодія,
наприклад, Button1Click).
По-друге,
прописати
ім’я
обробника
події з клавіатури.
Після
введення
імені Delphi
автоматично
створює
порожній
обробник події,
в який можна
поміщати
оператори
для виконання
певних дій.

У верхній
частині
Інспектора
Об’єктів розташований
комбінований
рядок
введення, список
якого
містить
імена
активної форми
та всіх її
компонентів.

Вікно
форми

Основою
додатків в Delphi є форма,
яка являє
собою
інтерфейсний
елемент майбутньої
програми
разом з
розміщеними
на ній
візуальними
та
невізуальними
компонентами.
Тобто, для
програміста
форма є основою
(контейнером),
на якому
розміщуються
всі інші
компоненти
проекту.

З точки
зору
користувача
під час
роботи програми
форма
сприймається
як типове Windows-вікно,
яке має всі
властивості,
притаманні іншим
вікнам Windows, а саме,
керуюче меню
у лівому
верхньому куті,
смугу заголовку,
кнопки
розгортання,
згортання й
закриття
вікна тощо. У
програмі
форма може
бути вікном
додатку,
діалоговим
вікном,
інформаційним
вікном тощо
(рис. 1.5).

Рис. 5. Вікно
форми Delphi
5

Вікно
форми
автоматично
відображається
ІСР Delphi
для кожного
нового
проекту і за
замовченням
має ім’я Form1.
Під час
проектування
форма вкрита
сіткою з
точок. У
вузлах цієї
сітки зручно
розміщувати
інші
компоненти.
Під час
виконання додатків
ця сітка
невидима.
Проект може
містити
декілька
форм, одна з
яких є головною.

Вікно
коду
програми з
провідником
коду

Вікно
коду
програми
являє собою
текстовий
редактор
призначений
для
розміщення
текстів
програмних
одиниць
проекту з
метою їх
створення,
підключення
до проекту і
редагування.
Редактор
коду
відображається
у вигляді
одного або
декількох
вікон, крім
того, кожне
вікно може
мати одну або
декілька
сторінок. На
кожній
сторінці
розміщується
текст окремої
програмної
одиниці,
наприклад, модуля.

Редактор
коду є
програмним
редактором,
який можна
налагоджувати
на різний
стиль роботи.
В редакторі
застосовують
виділення
кольором
синтаксичних
елементів.
Жирним
шрифтом
виділяються
ключові
слова мови Object Pascal, синім
курсивом
виділяються
коментарі
(рис. 1.6).

Рис. 6. Вікно
коду
програми з
провідником
коду Delphi 5

У
заголовку
вікна
редактора
коду
відображується
ім’я
поточного
файлу, з яким
працює
програміст в
даний час,
наприклад, Unit1.pas. У
верхній
частині
вікна
розташовані
закладки, що
вказують
поточну
сторінку.

У нижній
частині
вікна
редактора
коду розташовано
рядок стану,
який
відображає
певну
інформацію
про проект,
що
розробляється.

У вікно
редактора
коду
вбудована
контекстна
довідка. Щоб
отримати
довідку про
певне слово
коду,
необхідно
навести
курсор це слово
і натиснути
клавішу F1.

У лівій
частині
вікна
редактора
коду
розміщений провідник
коду, який
спрощує
пошук
інформації у
кодах програмних
модулів і
автоматизує
створення нових
класів. Він
відображає
структуру модуля,
відкритого у
даний час в
редакторі коду.
Подвійне
клацання
миші по
елементу у вікні
коду
призводить до
встановлення
текстової
вказівки у
вікні коду на
описі
відповідного
об’єкту або його
першому
згадуванні.

3. Організація
проектів у Delphi

Основні
файли
проектів

Проект Delphi
складається
з форм,
модулів,
установок
параметрів
проекту,
ресурсів
тощо. Вся ця
інформація
розміщується
у певних файлах.
Багато з цих
файлів
автоматично
створюються
ІСР Delphi
під час
розробки
проекту. Крім
того, компілятор
також
створює
певні файли.
Розглянемо
деякі файли
типового
проекту Delphi.

На етапі
проектування
додатку
ІСР Delphi
створює такі
файли:

-
файл
проекту ( .dpr) –
текстовий
файл,
призначений
для збереження
інформації
про форми і
модулі
проекту. Він
також
містить
оператори
ініціалізації
та запуску
програми на
виконання;

-
файл
модуля ( .pas) –
текстовий
файл модуля,
призначений
для
збереження
програмного
коду. Кожній
формі
відповідає
свій файл
модуля;

-
файл
форми ( .dfm) –
двійковий
або
текстовий
файл,
призначений
для
збереження
інформації
про форму. Кожному
файлу форми
відповідає
файл модуля ( .pas);

-
файл
параметрів
проекту ( .dfo) –
призначений
для
збереження
установок параметрів
проекту;

-
файл
ресурсів ( .res) –
двійковий
файл, який
містить
піктограму, що
використовується
проектом, та
інші ресурси;

-
файл
конфігурації
вікон ( .dsk) –
зберігає
інформацію
про
конфігурацію
всіх вікон та
деякі інші
файли.

Під час
компіляції
створюються
група файлів,
серед яких
варто
виділити:

-
виконуваний
файл ( .exe) –
автономний виконуваний
файл
розробленого
додатку;

-
об’єктний
файл модуля ( .dcu) –
відкомпільований
файл модуля, який
компонується
у
виконуваний
файл або в
пакет;

-
файл
вмісту
пакету ( .dcp) –
двійковий
файл, який
містить
заголовок пакету
і список
файлів ( .dcu), що
належать
йому.

І, нарешті,
інші файли Windows, які
можуть
використовуватися
Delphi:

-
файли
довідки ( .hlp) –
стандартні
файли
довідкової
інформації Windows, які
можуть бути
викликані
додатком;

-
файли
зображень
або графічні
файли ( .bmp), ( .ico), ( .wmf) –
використовуються
для
створення
дружнього
інтерфейсу
користувача Windows-додатків.

Структура
головного
файлу
проекту та
файлу модуля

Головний
файл проекту
містить:

1)
ім’я
програми, яке
співпадає з
ім’ям файлу, в
якому
зберігається
проект. Це ж
ім’я надається
і
виконуваному
файлу;

2)
після
заголовку в
тексті
програми
розташовано
речення Uses, в якому
перелічуються
модулі (системні
та модулі
додатків), що
завантажуються
програмою;

3)
наступний
рядок тексту {$R *. RES} являє
собою
директиву
компілятора;

4)
після
ключового
слова begin
і до
останнього
оператора end з
крапкою
записується
тіло
програми,
яке, зазвичай,
містить
оператори
ініціалізації
додатку,
створення
форм і запуску
додатку на
виконання.

Структура
файлу модуля

Кожен
модуль,
зазвичай, має
таку
структуру:

1)
рядок
заголовку Unit
<ім’я модуля>;

2)
розділ
interface
являє собою
зовнішній
інтерфейс
модуля. Він
містить
списки
модулів, що
приєднуються,
а також
оголошення
типів, класів,
констант,
змінних,
функцій і
процедур, до
яких буде
відкрито
доступ з
інших
модулів;

3)
розділ
implementation
являє собою
реалізацію
модуля.
Основне тіло
модуля
складають
програмні
коди, що реалізують
оголошені
функції і
процедури.
Всі модулі,
що підключаються
до нього, а
також
оголошені
типи, класи,
константи,
змінні,
функції і
процедури
доступні
тільки в
межах цього
модуля;

4)
розділ
initialization
є
необов’язковим
і містить
оператори,
які виконуються
тільки один
раз під час
першого
звернення
програми до
цього модуля.
Також в ньому
можна розміщувати
оператори, що
виконують
початкове налагодження
модуля;

5)
розділ
finalization
містить
оператори,
які
виконуються
тільки один
раз при
будь-якому
завершенні
роботи програми:
нормальному
або
аварійному.
Він не є обов’язковим.
В ньому
можуть
розміщуватись
оператори
видалення
тимчасових
файлів, вивільнення
ресурсу
пам’яті
комп’ютера
тощо.
Введення
розділу finalization  не
дозволяється,
якщо в модулі
відсутній
розділ initialization.

Основні
проектні
операції

Створення
будь-якого
додатку в Delphi
розпочинається
з
проектування
логіки його
роботи й
складання
сценарію
взаємодії з
користувачем.

Після
цього
розробка
інтерфейсу
більшості Windows-додатків
складається
з певної
послідовності
суто
технічних
операцій, які
ми послідовно
розглянемо
далі:

·
Створення
і збереження
нового
проекту.

·
Перенесення
на форму
необхідних
компонентів.

·
Розміщення
цих
компонентів
на формі.

·
Встановлення
значень
властивостей
компонентів.

·
Написання
обробників подій.

·
Тестування
і
налагодження
додатку.

Згідно з
цією логікою
процес
створення проектів
у Delphi
можна
розділити на
два
послідовні
етапи:

1.
Етап
конструювання.

2.
Етап
програмування.

Розглянемо
детально ці
два етапи.

Етап
проектування
додатку

Розпочати
новий проект
можна
декількома
способами.
Найпростішим
є введення
команди File / New Application
(теж саме
можна
зробити за
допомогою
відповідної
командної
кнопки).

Збереження
проекту
найзручніше
здійснювати
за допомогою
команди File / Save All. При
першому
збереженні Delphi
запитає ім’я
файлу модуля
і після цього
ім’я файлу
проекту. Слід
пам’ятати, що
Delphi
не допускає
однакових
імен модулів
і проектів,
тому ці імена
повинні бути
різними. При
цьому завжди
доцільно
надавати
змістові
імена, назва
яких має
певну логіку.

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

Для
перенесення
на форму
потрібних
компонентів
необхідно
клацнути
лівою
кнопкою миші по
компонентові
на
відповідній
сторінці Палітри
Компонентів
і після цього
клацнути лівою
кнопкою миші
у тому місці
форми, куди його
необхідно
помістити.

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

Для більш
досвідчених
користувачів
для зміни
розмірів
компонентів
можна
скористатися
командою Edit / Size, а
для
вирівнювання
об’єктів на
формі – командою
Edit / Align. За
цими
командами на
екрані
з’являються
відповідні
вікна, в які
вводять
потрібні параметри.

Для
фіксації
розташування
всіх
компонентів
на формі використовують
команду Edit / Lock Controls.
Повторне
введення
цієї команди
розблокує
компоненти.

Для
встановлення
необхідних
властивостей
компонентів
використовують
сторінку Properties Інспектора
Об’єктів.
Вікно
Інспектора
Об’єктів
відображує
інформацію
для того
компонента,
який
виділений
клацанням
миші.

В
результаті
виконання
вищеописаних
операцій
буде
сформовано
зовнішній
вигляд майбутнього
додатку,
після чого
варто його зберегти.

Для того,
щоб програма
виконувала
певну корисні
функції,
необхідно
перейти до
другого
етапу –
програмування.

Етап
програмування

Слід
враховувати,
що кожен
компонент
може реагувати
на
визначений
набір подій.
Тому, перш за
все,
необхідно
визначити, на
які саме
події
повинен
реагувати
той чи інший
компонент.
Для цього
потрібно
виділити
компонент
клацанням
миші, перейти
на сторінку Events
Інспектора
Об’єктів і у
лівому
стовпці переглянути
перелік
подій, на які
він має реагувати.
Після цього у
правому
стовпці Інспектора
Об’єктів
потрібно
ввести ім’я
обробника
події, що
створюється,
наприклад, Button1Click.
Для цього
необхідно
виконати
подвійне клацання
миші у
правому
стовпчику
сторінки Events
Інспектора
Об’єктів,
напроти ім’я
обробника
події, що
створюється.
Після цього
буде активовано
вікно
Редактора
Коду, в якому
можна
побачити
автоматично
створену ІСР
Delphi порожню
заготовку обробника
події, ім’я
якого було
введено. Наприклад:

Procedure
TForm1.Button1Click(Sender: TObject);

begin

end;

Обробник
події являє
собою
процедуру і
має ім’я, яке
складається
з двох
частин, розділених
крапкою.
Перша
частина
являє собою
ім’я класу
форми. Друга
частина
являє собою
об’єднання
імені
компоненту
та імені
події без
префіксу.
Наприклад, TForm1.Label1Click. У
цьому
заголовку TForm1 –
ім’я класу
форми, що
створюється. Button1Click
означає, що
процедура буде
виконуватись,
якщо по
компоненту з
ім’ям Button1
клацнути
лівою
кнопкою миші.
Параметр Sender
типу TObject
містить
посилання на
компонент,
який створила
подія OnClick,
тобто на Button1.

Після
цього між
зарезервованими
словами begin і end
програміст
повинен
розмістити
оператори, з
яких складається
тіло
процедури
(обробника
події). Наприклад,
обробник
події може
мати такий
вигляд:

Procedure
TForm1.Button1Click(Sender: TObject);

begin

Label1.Caption:=’З
днем
народження!’;

end;

Серед
операторів,
які прописує
програміст в
обробникові
події, можуть
бути і такі,
що змінюють
початкові
значення
властивостей
компонентів,
які були
встановлені
на етапі
конструювання
додатку.
Зміна
властивостей
компонентів
у процесі
виконання програми
називається динамічною
зміною
властивостей.

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

4. Налагодження
додатків у Delphi

Помилки
і виняткові
ситуації

Всі
помилки, що
виникають
під час
розробки і
виконання додатків,
розділяють
на такі типи:

-
синтаксичні
– виникають
при
порушеннях
синтаксису
мови Object Pascal
під час
написання
програмних
кодів. Ці помилки
виявляються
компілятором,
який вказує
програмісту
рядок у тексті
програми, де
знаходиться
помилка, і
видає
відповідну
інформацію
про неї;

-
логічні
– мають місце
у випадку
неправильної
побудови і
реалізації
алгоритму.
При цьому програма
може
працювати,
але видає
неправильні
результати
або працює
некоректно;

-
динамічні (помилки
виконання)
виникають
при виконанні
додатку в
результаті
неправильної
роботи
операторів,
процедур або
функцій програми,
а також
операційної
системи.
Типовими
прикладами
таких
помилок є
спроба поділити
на нуль або
відкрити
неіснуючий
файл.

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

Виняткова
ситуація –
це таке
порушення
умов роботи
програми, при
якому
виникає
переривання
або
припинення
її виконання.
Виняткові
ситуації
можуть бути
викликані
різними
причинами,
наприклад,
введенням неправильних
даних,
некоректними
діями користувачів,
помилками
при
виконанні
обчислень
тощо. Програміст
повинен уміти
виконувати
обробку таких
ситуацій
шляхом
нейтралізації
динамічних помилок
у випадку їх
виникнення. Виняткова
ситуація
може бути
оброблена локальними
процедурами
або
глобальним
обробником.
Це стає
можливим
тому, що при
виникненні
певної
помилки
додаток
отримує відповідне
повідомлення
про неї.

У Delphi
виняткові
ситуації є
об’єктами.
ІСР Delphi
автоматично
перетворює
всі
динамічні помилки,
що виникають,
у відповідні
об’єкти виняткових
ситуацій, які
інкапсульовані
у клас Exception.
Об’єкт
винятку
містить
інформацію
про помилку і
при
виникненні
такої
ситуації
тимчасово
призупиняє
процес
виконання
додатку.
Після обробки
виняткової
ситуації
об’єкт винятку
автоматично
знищується.

Способи
компіляції
додатків

Майстерність
програміста
полягає в
умінні
швидко,
ефективно і
надійно
провести тестування
й
налагодження
програми.
Тому, кожен
розробник
програм
повинен
добре володіти
технічними
можливостями
ІСР Delphi щодо
налагодження
додатків.

Спочатку
розглянемо
варіанти
компіляції
додатків у Delphi.
Компіляція з
наступним
виконанням
додатку здійснюється
за командою Run/Run або
при
натисканні
на клавішу F9.
Виконання
додатку буде
здійснюватись
тільки тоді,
якщо під час
компіляції
не було виявлено
помилок.

Компіляція
без
наступного
виконання
додатку
здійснюється
за командою Project/Compile Project або
при
натисканні
на
комбінацію
клавіш Ctrl+F9.

В обох
варіантах
команд
компілюються
тільки ті
модулі, які
були змінені
з моменту останньої
компіляції.
Це дозволяє у
великих за
розмірами
проектах
економити
час.

Якщо
потрібно
перекомпілювати
всі модулі
проекту,
незалежно
від того,
змінювалися
вони чи ні,
використовують
команду для
примусової
компіляції,
яка має такий
формат: Project/Build Project.
Вона
компілює всі
файли
проекту
незалежно
від часу їх
попередньої
компіляції.

Меню Project
ІСР Delphi 5 містить ще 2
команди
компіляції: Compile All Projects та Build All Projects. Якщо
користувач
працює з
одним
проектом, то
ці команди
ідентичні
розглянутим
командам Compile
Project і Build
Project. Але якщо
йдеться про
роботу з
групою проектів,
то перша з
цих команд
здійснює
вибіркову
компіляцію
всіх змінених
з моменту
останньої
компіляції
файлів всіх
проектів
групи, а
друга –
примусово компілює
всі файли
всіх
проектів
групи.

В
результаті
компіляції
можуть бути
зроблені зауваження
– Hint, попередження
– Warning і повідомлення
про помилки
–  Error.
Вони
виводяться у
нижній частині
вікна
Редактора
Коду. Якщо
додаток містить
не одну
помилку, то
відповідно
буде виведено
декілька
повідомлень
про них. Тому, перед
запуском
програми на
виконання
доцільно
спочатку
відкомпілювати
проект,
проаналізувати
навіть
зауваження,
виправити їх,
і тільки
після цього
запустити
додаток.

Методика
налагодження
додатків

Якщо
додаток
успішно
відкомпільований
і запустився
на виконання,
це ще не
означає, що
він
правильно
працює. Він
може містити
певну
множину
помилок,
наприклад
логічні помилки
або помилки
виконання.
Насамкінець,
можуть бути
випадкові
помилки, коли
одне й те ж
саме
завдання
іноді
виконується
нормально, а
іноді – ні.
Такі помилки,
які найбільш
важко
відшукувати,
зазвичай
пов’язані з
відсутністю
ініціалізації
змінних у певних
режимах
роботи. У
цьому
випадку
виконання
додатку
залежить від
випадкового
стану
пам’яті
комп’ютера. У
всіх
подібних випадках
причини
помилок
виявляються
у процесі
налагодження
додатку. Саме
тому після успішного
виконання
компіляції
додаток
необхідно ще
перевірити
на
коректність
роботи. Для цього
Delphi
має певні
засоби.

Розглянемо
дії
програміста
в разі виведення
на екран
повідомлення
про помилки
виконання:

1
шлях –
натиснути
комбінацію
клавіш Ctrl+F2,
що дозволить
перервати
виконання і
налагодження
додатку. Це
найкращий
варіант дій
тоді, коли розробник
зрозумів у
чому полягає
помилка і
знає як її
виправити.

2
шлях –
виконати
знову
команду Run/Run і
намагатися,
не дивлячись
на помилку,
продовжити
роботу
проекту. При
цьому на
екрані
виникне
вікно з
повідомленням
про тип
помилки,
після чого
можна продовжити
роботу з
додатком. Але
це ні до чого
не призведе,
тому що під
час
наступного запуску
ситуація
повториться.
Ці дії можуть
лише сприяти
більш
швидкому
розумінню причини
помилки.

3
шлях –
пройти
частину
програми по
кроках, але
при цьому
отримати
ретельну
інформацію
про процеси у
додатку, які
призводять
до виникнення
помилки. Для
цього в Delphi 5
використовують
вікно
спостереження
Watches.

В
складних
додатках
програмісту необхідно
мати перед
очима
значення
певних
змінних для
того, щоб з
порівняння
їх значень
зрозуміти
причину
помилки. Таку
можливість і
надає вікно
спостереження
Watches.
Викликати це
вікно на
екран можна
командою View/Debug Windows/Watches.
Відповідну команду
можна
викликати з
контекстного
меню
клацанням
правою
кнопкою миші
у вікні редактору
коду. Але й
цього можна
не робити. Достатньо
підвести
курсор у
програмному коді
до певної
змінної і
натиснути на
комбінацію
клавіш Ctrl-F5. При
цьому вікно
спостережень
автоматично
відкриється
і в ньому
з’являться
ім’я змінної
та її
значення.

Іноді
виникають
такі
ситуації,
коли щоб знайти
причину
помилки
необхідно
виконати певний
фрагмент
програми по
крокам, спостерігаючи
при цьому
зміни змінних
під час
виконання
кожної
команди. Для
цього можна
використовувати
певні
команди (таб. 1.1).

Таблиця 1. Команди
для
налагодження
додатків

Команда

“Гарячі”

клавіші

Призначення

Step Over

F8

Виконання
програми по
кроках без
заходження
до процедур
і функцій

Trace Into

F7

Виконання
програми по
кроках з
заходженням
до процедур
і функцій, що
викликаються

Trace to Next Source

Shift+F7

Перехід
до
наступного
рядку
програми

Run To Cursor

F4

Виконання
програми до
того
оператора,
на якому
розташований
курсор у вікні
редактора
коду

Під час
налагодження
програми по
кроках використовують
вікно
спостереження
Watches та деякі
інші вікна. У Delphi 5
всі ці вікна
є
вбудованими.
Це зручно
використовувати,
наприклад,
вбудував
вікно
спостережень
у вікно
Інспектора
Об’єктів. В
режимі
проектування
вікно
спостережень
зберігається
на окремій
сторінці
позаду
Інспектора
Об’єктів, не
займаючи
зайву площу
екрану і не
перешкоджаючи
роботі. А після
запуску
додатку на
виконання
сторінки
Інспектора
Об’єктів
зникають і
під час зупинок
є можливість
спостерігати
значення
змінних у
вікні Watches.
У Delphi 5
задати
конфігурацію
вікон
налагодження
можна
командою View/Desktops/Set Debug Desktop. Для
збереження
описаної або
будь-якої іншої
конфігурації
вікон
налагодження
використовують
команду View/Desktops/Save Desktop.

У Delphi 5
є ще один
засіб
налагодження
програм – Інспектор
Налагодження
(Debug
Inspector),
який
дозволяє
отримувати
інформацію
про будь-яку
змінну
додатку і
надає
можливість,
як і вікно
оцінки й
модифікації (Evaluate/Modify), змінювати
значення
змінної і
продовжувати
виконання
додатку з цим
новим
значенням. За
допомогою
Інспектора
Об’єктів
можна досліджувати
різноманітні
дані, а саме,
змінні,
масиви,
класи,
функції тощо.
Виклик цього
інструменту
здійснюється
за командою Run/Inspect, яка
доступна
лише під час
виконання
додатку при
зупинці
засобами
налагодження
або внаслідок
генерації
винятку. При
зупинці виконання
додатку
необхідно
встановити курсор
на ім’я
певної
змінної і
виконати команду
Run/Inspect. За
цією
командою на
екрані
відкриється
вікно, яке
міститиме
відомості
про вказану
змінну. З
цього вікна
можна перейти
до
наступного, в
якому є
можливість змінити
значення
цієї змінної.

5. Основи
мови Object Pascal

Структура
програм у Delphi

Основним
інструментом
програмування
в Delphi є
мова Object Pascal.
Будь-яка
програма у Delphi
складається
з файлу
проекту та
одного або декількох
модулів.
Програма-проект
у загальному
випадку має
містити такі
розділи:

1.
Заголовок
програми.

2.
Розділ
оголошення
модулів, що
підключаються.

3.
Розділ
оголошення
міток.

4.
Розділ
оголошення
констант.

5.
Розділ
оголошення
типів.

6.
Розділ
оголошення
змінних.

7.
Розділ
процедур і
функцій.

8.
Тіло
програми
(обов’язкова
частина).

Елементи
мови Object Pascal

1. Алфавіт
–
сукупність
допустимих у
мові
символів або
груп
символів, які
являють
собою
послідовність
рядків, що
розглядаються
як єдине
ціле. Алфавіт
мови Object
Pascal (ObP)
містить
цифри, букви,
16-річні цифри,
спеціальні
символи та
зарезервовані
слова.

Цифри –
арабські
цифри від 0 до 9
використовують
для запису
чисел та ідентифікаторів.

Букви –
великі і малі
латинські
літери та
символ
підкреслювання.
Призначені
для
формування
ідентифікаторів
і службових
слів. Різниці
між великими
і малими літерами
немає, якщо
вони не
входять у
символьні
або рядкові
вирази.

16-річні
цифри мають
значення 0..15,
при чому
перші 10
значень позначаються
арабськими
цифрами, а
інші 6 – латинськими
літерами.

Спеціальні
символи використовують
для побудови
знаків операцій
виразів і
коментарів, а
також як
синтаксичні
роздільники.
До них
належать: + – *  /  ‘  ”  ;  :  $
та інші.

Також
існують пари
спеціальних
символів: <>,
<=, >=, :=, а також
позначки
коментарів. Якщо
пари
символів
використовують
як знаки
операцій, то
їх не можна
розділяти
пробілами.

Зарезервовані
слова (службові
слова) –
обмежена
група слів,
які мають
спеціальне
призначення.
Кожне
службове
слово являє
собою
неподільне
утворення,
зміст якого
фіксований у
мові. Службові
слова не
можна
використовувати
в якості
ідентифікаторів,
змінних,
констант,
імен
процедур і
функцій,
тобто в
якості імен,
що
створюються
програмістом.

2. Ідентифікатори
–
використовують
для
позначення в
програмах
змінних,
констант,
міток,
процедур і
функцій,
класів,
об’єктів,
властивостей,
типів тощо.
Будь-який
ідентифікатор
(крім системних)
повинен бути
визначений в
програмі, при
цьому його
визначення
повинно передувати
першому
використанню.

Ідентифікатори
формуються з
літер, цифр і завжди
повинні
починатись з
літери. Довжина
ідентифікатора
може бути
довільною, але
компілятор
сприймає
лише перші 63
його символи.

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

Під час
формування
імен
ідентифікаторів
програміст
повинен
надавати їм
змістовий
характер.

3. Коментарі
– фрагменти
пояснювального
характеру, які
використовуються
програмістом
для пояснення
програмних
кодів. Текст
коментарів
ігнорується
компілятором
і не впливає
на хід
виконання
програми.
Розмір
коментарів
обмежується
тільки
розміром
вільної
пам’яті. В ObP
існує три
різновиди
коментарів.

4. Змінні
та константи

Змінні
являють
собою
інформаційні
об’єкти
призначені
для
збереження
значень певних
типів. В
межах
заданого
типу змінна
може
приймати
будь-яке
значення, яке
також може
змінюватися
в процесі
виконання
програми.

Константи
– об’єкти,
які завжди
мають певне
значення. В
якості
констант можна
використовувати
цілі, дійсні
і 16-річні числа,
а також
логічні
константи,
символи, рядки
символів
тощо.

Числа в Object Pascal,
зазвичай,
записують у
десятковій
системі
числення і
вони можуть
бути цілими і
дійсними. Дійсні
числа
записують у
формі з
плаваючою
крапкою або з
використанням
10-го порядку, який
позначається
Е. Цей символ
визначає десятковий
порядок і має
зміст “”.
Наприклад, 5.12Е12
→ .

Логічна
константа може
приймати значення
false
або true
(хибно чи
істинно).

Символьна
константа
– це
будь-який
символ,
обмежений
апострофами.
Дозволяється
введення
символів
шляхом
зазначення
їх символьного
коду,
наприклад #97 →
“а”.

Рядкова
константа
–
послідовність
символів,
записана між
апострофами,
наприклад,
‘рядок’. Рядок
може не
містити
ніяких
символів і тоді
він
називається
порожнім.

16-річні
числа
складаються
з 16-річних
цифр, яким
передує знак
$, Наприклад, $7F.

Операції
подібні до
вбудованих
функцій мови,
їх
застосовують
до виразів – операндів.
Більшість
операцій
мають 2
операнди,
один з них
розміщується
перед знаком
операції, а інший
– після
нього. Такі
операції
називаються
бінарними (+, –, *,
/, div, mod).

Існують
ще і унарні
операції, які
мають лише
один операнд,
який
розміщується
після знаку
операції
(унарний плюс
–
підтвердження
знаку, унарний
мінус – зміна
знаку).

Типи
даних мови Object Pascal

У
програмуванні
змінні
класифікують
відповідно
до певних
важливих
характеристик.
При цьому
здійснюється
суворий
розподіл між
цілими,
дійсними,
логічними змінними.
Така
класифікація
дуже важлива
під час
обробки
даних на
комп’ютерах.
Розгалужена
структура
даних мови Object Pascal
наведена у
додатках.

В мові Object Pascal
будь-які дані
характеризують
типом. Під типом
даних
розуміють
множину
значень, які
може приймати
змінна і, як
наслідок,
множину
допустимих
операцій над
цією змінною.
Крім того,
типи даних
визначають
формат
внутрішнього
представлення
даних у
пам’яті
комп’ютера.

В Object
Pascal тип
змінної
визначається
під час її
опису. Змінна
не може
приймати
участь в
операціях,
які
недопустимі
її типом.
Такий підхід
вимагає
охайності
при
написанні
програм і призводить
до їх більшої
надійності.

Розглянемо
основні типи
даних мови Object Pascal.

Порядкові
(Ordinal) –
типи даних,
значення яких
можна впорядковувати
і для кожного
з них можна
чітко
вказати попереднє
і наступне
значення. В
цих типах даних
інформація
подається у
вигляді
окремих
елементів.

У мові Object Pascal
до порядкових
типів
належать
цілі,
символьні,
логічні типи,
а також,
перелічувальні
та діапазони,
що задаються
користувачем.
Всі значення
будь-якого
порядкового
типу
утворюють
впорядковану
послідовність,
при цьому,
значення
змінної
порядкового
типу
визначається
її місцем у
цій
послідовності.
За винятком
змінних
цілих типів,
значення
яких можуть
бути як
додатними,
так і
від’ємними,
перший елемент
будь-якого
порядкового
типу має
номер 0,
другий
елемент –
номер 1 тощо.

Цілі типи
даних
позначають
множини
цілих чисел в
різних діапазонах.
Вони
розрізняються
діапазоном
значень і
розміром
пам’яті, яку
вони займають.
До цілих
типів даних
належать: Byte, ShortInt, SmallInt, Word, Integer, LongInt, LongWord, Int64, Cardinal.

В мові Object Pascal
є п’ять логічних
типів даних:
Boolean, ByteBool, Bool, WordBool, LongBool, які
відрізняються
лише об’ємом
пам’яті, який
вони
займають.
Логічні типи
змінних можуть
приймати
одне з двох
значень: True (істина)
або False
(хиба). При
цьому слід
враховувати,
що False<True.

Символьні
типи даних
призначені
для
збереження
одного
символу. В Windows
використовують
код ANSI
(за назвою
інституту,
який
розробив цей
код – American
National Standard Institute). Множина
значень
символьного
типу складається
з 256 різних
символів,
впорядкованих
певним чином,
і містить
символи великих
і малих
літер, цифр
та інших
символів.

В Object
Pascal є три
символьні
типи: Char,
AnsiChar, WideChar.

Тип Char є
стандартним
типом Pascal і
може являти
собою
будь-який
символ з набору
ANSI.

AnsiChar –
символи,
впорядковані
відповідно
до розширеного
набору символів
ANSI.

WideChar –
це символи,
впорядковані
відповідно
до міжнародного
набору
символів UNICODE.
Перші 256
символів
цього набору
співпадають
з символами ANSI.

Перелічувальний
тип даних
визначається
шляхом
явного
перелічення всіх
можливих
його значень,
при чому, кожне
нове
значення
визначається
тільки ім’ям.
Ці типи даних
мають
компактне
машинне представлення.
Однак,
великим
недоліком для
нас є те, що в Object Pascal не
дозволяється
використовувати
кирилицю в
ідентифікаторах.

У
програмах
типи даних
перелічення
описуються
після
ключового
слова type
і
поміщаються
у списках
всередині
круглих
дужок,
наприклад:

type

test = (Level1,
Level2, Level3);

season = (winter,
spring, summer, autumn);

Тип-діапазон
– це
підмножина
значень
будь-якого
порядкового
типу, яка визначається
мінімальним
і
максимальним
значенням.
Тип-діапазон
підтримує
всі операції
базового
типу.
Підмножина
містить всі
значення, що
знаходяться
в цих межах,
включаючи
самі межі.
Задається
тип-діапазон
зазначенням
мінімального
і
максимального
значень, розділених
двома
крапками,
наприклад:

type

number = 1..25;

Тип-діапазон
можна
описувати, як
в розділі type, так
і в розділі var:

var

number:
500..700;

Дійсні
типи даних
призначені
для
збереження
чисел, що
мають цілу і
дробову
частину. В Object Pascal визначено
шість
дійсних
типів: Real, Single, Double, Extended, Comp, Currency.
Всі вони
розрізняються
діапазоном
значень,
точністю
(кількістю
значущих
цифр) і об’ємом
пам’яті,
необхідної
для їх
збереження.

Типи Real, Single, Double i Extended – типи
з так званою
плаваючою
крапкою. Типи
Currency
(для
обробки
грошових
операцій) і Comp –
типи з
фіксованою
десятковою
крапкою. Робота
з ними
здійснюється
швидше, ніж з
дійсними
числами з
плаваючою
крапкою.

Тип Дата-час
використовують
для
одночасного
збереження
дати й часу.
Цей тип даних
визначається
стандартним
ідентифікатором
TDateTime.
Він потребує
8 байт
пам’яті і
являє собою дійсне
число з
фіксованою
дробовою
частиною.
Ціла частина
цього числа
задає
кількість
днів, а
дробова
частина –
частку
поточного дня
з 0
годин. Дата
визначається
як кількість
діб, що пройшла
з 30
грудня 1899
року.
Наприклад,
значення 38234,754
відповідає 4
вересня 2004 р. 18:05:45.
Кількість
діб може бути
від’ємною,
але значення
менше

за –693594 (дата 00.00.0000)
функціями
перетворення
дати до
рядкового
типу
ігнорується.

Структуровані
типи даних

Структуровані
типи даних
визначають
набори
однотипних
або
різнотипних
елементів.
Типи
елементів
утворюються
з інших типів,
а саме,
простих,
структурованих
тощо.

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

В Object Pascal
є чотири
структурованих
типи даних:

-
масиви;

-
записи;

-
множини;

-
файли.

Масив (Array)– це
структура
даних, яка
дозволяє
зберігати
під одним
ім’ям
фіксовану
кількість
елементів
одного типу.
Масив
характеризується
ім’ям, типом
його
елементів,
розміром і розмірністю.
Масиви
бувають
одновимірними
і
багатовимірними,
а також,
статичними
або
динамічними.
Оголосити
одновимірний  масив
можна таким
чином:

Var а
: array
[1..5] of
integer;

Запис (Record)
– це
фіксований
набір даних
різних типів,
який має одне
ім’я.
Елементи
запису
називаються
полями.
Кількість
полів запису
та їх тип може
бути
довільним. Наприклад:

type

person = record;

Name:
string[20];

SurName: string[25];

Age:
integer;

Married:
boolean;

end;

Перед
зарезервованим
словом end крапку з
комою можна
не ставити.
Якщо
декілька
полів запису
мають
однаковий
тип, їхні
імена можна
перелічувати
через кому в
одному рядку.
Для обробки
полів
записів
використовують
оператор with…do…

Значення множин
складається
з декількох
значень
одного типу.
На відміну
від записів
кількість
елементів
множини може
коливатися
від 0 до 256.
Множини, в
яких немає елементів,
називаються
порожніми.
Множини задають
за допомогою
двох
зарезервованих
слів set of
і базового
типу,
зазвичай,
перелічувального
або
діапазону.
Наприклад:

type

letter = set of
‘A’..’Z’;

num = set of 0..9;

Множини,
також, можна
вводити і у
розділі опису
змінних,
наприклад:

var

tud: set of 0..9;

Еквівалентними
вважають дві
множини, всі елементи
яких
однакові,
причому,
порядок їх
розташування
не має
значення.

Над
множинами
визначені
такі
операції:

-
об’єднання
множин
(операція “+”);

-
різниця
множин
(операція “-“);

-
перетин
множин
(операція “*”);

-
перевірка
еквівалентності
двох множин та
деякі інші.

Файли являють
собою
послідовність
елементів одного
типу,
зазвичай,
розташованих
на
зовнішньому
пристрої
(дискеті,
жорсткому
дискові,
диску CD-ROM).
Кожен файл
має
унікальне
ім’я.
Елементи файлу
можуть бути
будь-якого
типу, за
винятком
типу файл.
Довжина
файлу під час
оголошення
не
зазначається
і
обмежується
ємністю
зовнішнього
пристрою.

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

-
ім’я
= TextFile;

-
ім’я
= File of тип;

-
ім’я
= File;

В
залежності
від способу
оголошення
файли
розділяються
на:

·
текстові
файли;

·
типізовані
файли;

·
нетипізовані
файли.

Покажчики.
В Object Pascal є
можливість
під час
виконання
програми виділяти
і звільняти
необхідну
пам’ять для
розміщення в
ній
різноманітних
даних. Таку
пам’ять
називають динамічною.
Вся
динамічна
пам’ять
розглядається
як суцільний
масив байтів
і називається
кипою.
Робота з
динамічною
пам’яттю
дозволяє ефективно
використовувати
оперативну
пам’ять
комп’ютера.
Така
можливість
пов’язана з
наявністю
типа даних – покажчики.
Покажчик
– це змінна,
значенням
якої є адреса
комірки
пам’яті.
Зазвичай,
покажчик
зв’язують з
певним типом
даним, який
називається базовим,
а покажчик – типізованим.
Для
оголошення
типізованого
покажчика перед
базовим
типом
ставлять
знак покажчика
“^”.
Наприклад:

var

p1: ^Double;

type

mas = array [1..40] of integer;     {базовий
тип}

p2 = ^mas;     {покажчик
на масив з 40
цілих чисел}.

Щоб
отримати
покажчик, не
пов’язаний
ні з яким
певним типом
даних,
необхідно
скористатися
стандартним
типом Pointer. Покажчики
такого виду
називаються нетипізованими.
Наприклад:

var

p1: Pointer;

До покажчиків
можна
застосовувати
операцію присвоювання.
Всі
покажчики
мають
однаковий
розмір, що
дорівнює 4
байтам.

Рядки.
Для обробки
текстів в Object Pascal використовують
рядки, які
являють
собою послідовність
символів.
Рядки
бувають чотирьох
типів:

-
короткий
рядок ShortString
або String[n], де n<=256;

-
довгий
рядок String;

-
широкий
рядок WideString;

-
рядок,
що
закінчується
нулем, PChar.

Кожен
рядок
вважається
одновимірним
масивом
символів,
тому до
символів
рядку можна
звертатися
за їх
порядковими
номерами у цьому
рядку.

Змінні
типів String
і WideString
– динамічно
розподілені
масиви
символів, максимальна
довжина яких
обмежується
лише
наявністю
пам’яті. В
типі String
символи
записують у
форматі Char, а в WideString – у
форматі WideChar, який
зручніше
використовувати
під час
роботи з
міжнародними
наборами
символів, такими
як, UNICODE.

Рядки, що
закінчуються
нулем,
складаються з
ненульових
символів і
закінчуються
символом з
порядковим
номером 0 (#0). На
відміну від
інших
рядкових
типів, рядки,
що
закінчуються
нулем, не
мають
покажчика
довжини.

Варіантні
змінні. Тип
даних Variant призначений
для
представлення
значень, які
можуть
динамічно
змінювати
свій тип. Іншими
словами, в
змінні
варіантного
типу можна
включати
значення
різних типів.
Тип Variant
треба
застосовувати
тоді, коли
тип об’єкту
заздалегідь
невідомий
або коли
певна
функція чи
процедура потребує
саме такий
тип
аргументу.
При цьому
слід
враховувати,
що витрати
пам’яті і процесорного
часу на
обробку типу Variant
значно
більше ніж
при роботі зі
звичайними
типами даних.
Тому
використовувати
цей тип даних
слід тільки
за
необхідності.

Змінним
типу Variant
можна
присвоювати
будь-які
значення
цілих,
дійсних,
рядкових і
логічних
типів. Крім того,
вони можуть
містити
масиви
змінної довжини
і
розмірності
з елементами
зазначених
типів.

Класи. Клас
– це тип
даних, що
визначається
користувачем.
В класах
описують
властивості
об’єктів, а
також їх
методи і
події, на які
вони можуть
реагувати.
Клас повинен
бути
оголошеним
до того, коли
буде
оголошена
хоча б одна змінна
цього класу.

Ім’я
класу може
бути
будь-яким
допустимим ідентифікатором,
але
починатись
він повинен з
літери Т,
наприклад, TButton.
Ім’я
батьківського
класу може не
зазначатись.
Тоді
передбачається,
що цей клас є
безпосереднім
нащадком
класу TObject
– найбільш загального
з
заздалегідь
визначених
класів.

Мова
програмування
Object Pascal, яку
використовує
Delphi,
передбачає
інструментарій
для створення
класів. Але
розробники
програмного
забезпечення
заздалегідь
розробили їх
певну множину,
що
знаходиться
в бібліотеках
Delphi.

Новий
клас
наслідує
поля, методи,
властивості
і події від
своїх
пращурів,
може відміняти
будь-які з
цих
елементів
класу або
додавати
нові.
Наприклад,
під час
створення
нової кнопки
можна взяти
за основу
один з розроблених
класів
кнопок і
додати або
змінити її
властивості,
а також
методи батьківського
класу. Доступ
до
оголошених елементів
класу
визначається
тим, в якому розділі
вони були
оголошені.

Особливості
синтаксису
мови Object
Pascal

Перелічимо
основні
синтаксичні
правила
написання програм
мовою ObP:

1.Всі типи,
константи,
змінні,
функції та
процедури
повинні бути
оголошені до
їх першого
використання.

2.Прописні
і маленькі
літери є
ідентичними. Під
час запису
ідентифікаторів
можна використовувати
латинські
літери, цифри
і символ
підкреслювання.
Ідентифікатор
не може
починатись з
цифри і не
може містити
пробілів.
Довжина
ідентифікатора
необмежена,
але
сприймається
не більш, ніж 255
перших
символів
ідентифікатора.

3.При
посиланні на
ідентичні
ідентифікатори,
що описані в
різних
модулях,
використовується
нотація з
крапкою, в
якій перелічуються
ідентифікатори
об’єктів,
розділені символом
крапки,
наприклад, Form1.Label1.Caption.

4.Кожне
речення мови
закінчується
символом
крапки з
комою за
винятком
деяких
випадків.

5.В одному
рядку
програми
можна розміщувати
декілька
операторів,
однак це недоцільно
робити з
метою
спрощення
читання
тексту
програми.
Необхідно
виділяти об’єднані
за змістом
оператори у
певні групи, використовуючи
для цього
відступи і
коментарі.

Коментарі
в тексті
програм
подаються:

1)
у
фігурних
дужках {…};

2)
у круглих
дужках з
символами
зірочки (*…*);

3)
коментарі,
також, можна
розміщувати
після двох
символів слеш
//, але такий
коментар
повинен
займати кінець
рядка, в
якому він
введений, і
не може
переходити
на наступний
рядок.

6.Операторні
дужки begin
… end
виділяють
складений
оператор.
Тому всі оператори
програми,
розміщені
між
ключовими
словами begin та end, синтаксично
сприймаються
як один
оператор.

7.Програма
або окремий
її модуль
завершується
оператором end з
крапкою.

8.Призначення
та загальні
правила
використання
основних
операторів Object Pascal, а саме:
присвоювання,
передачі
управління Goto,
умовного
оператору If…,
оператору
множинного
вибору Case…,
операторів
циклу For…, Repeat… і While…,
не
відрізняються
від правил їх
застосування
в мові Turbo
Pascal 7.0.

6. Засоби
програмування
Delphi

Загальна
характеристика
візуальних
компонентів

Як уже
зазначалося,
всі
компоненти Delphi
розділені на
2 категорії:
візуальні і
невізуальні.
Візуальні
компоненти
називаються елементами
керування.

Всі компоненти
Delphi є
нащадками
класу TComponent.
Більшість
візуальних
компонентів
походить від
класу TControl.
У цього класу
є два
нащадки, які
визначають
дві групи
компонентів
– ті, що мають
віконний
ресурс (TWinControl та
його нащадки)
та ті, що не
мають цього
ресурсу – (TGraphicControl і
його
нащадки). Так
званий віконний
ресурс – це
спеціальний
ресурс Windows, який
використовується
для
створення
вікон, а
також для
отримання і
обробки
повідомлень Windows.
Іншими
словами,
тільки
компоненти-нащадки
класу TWinControl
можуть
отримувати і
обробляти
повідомлення
Windows.
До
компонентів
з віконним
ресурсом
належать
елементи
редагування,
кнопки,
перемикачі,
лінійки
скролінгу, а
також різні
панелі, в
яких
розміщуються
інші
компоненти.
До компонентів
без
віконного ресурсу,
які
називаються елементами
графічного
типу,
належать
мітки,
геометричні
фігури,
рамки,
зображення,
панелі для
малювання
тощо.

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

Властивості
компонентів

Положенням
компоненту
на екрані та
його розмірами
можна
керувати за
допомогою
чотирьох
його
властивостей:

– Left –
горизонтальна
координата
лівого верхнього
кута компоненту;

– Top – вертикальна
координата
його лівого
верхнього
кута;

– Width – ширина
компоненту;

– Height – його
висота.

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

Для всіх
елементів
керування
доступною є властивість
Enabled,
яка визначає
чи повинен
цей елемент
реагувати на
події
клавіатури,
таймеру або
миші. При
значенні цій
властивості False
елемент
керування
вважається
відключеним
і
зображується
сірим
кольором,
тобто є недоступним.

Властивість Parent
також
доступна для всіх
елементів
керування.
Вона містить
посилання на
батьківський
елемент
керування,
який містить
цей елемент.

Властивість
Align
(вирівнювання)
визначає, як
розташовані
елементи
керування
всередині
свого батьківського
елементу.
Всім
елементам
керування ця
властивість
доступна
лише під час
виконання
програми.
Однак, для
деяких
компонентів, таких
як Label, Panel, Memo
тощо, вона є
доступною і
на етапі
конструювання
додатку.

У Windows
компоненти з
віконними
ресурсами
називаються батьківськими,
а пов’язані з
ними
невіконні – дочірніми.
Слід мати на
увазі, що
віконні
компоненти також
можуть бути
дочірніми по
відношенню
до
батьківського
віконного
компоненту, тобто,
коли на
екрані
з’являється
батьківський
компонент, то
з ним
з’являється
дочірній
компонент.
При закритті
батька вони
зникають
разом з ним.
До того ж,
дочірні
компоненти
не можуть
виходити за
межі
батьківських.

Основні
значення
властивості Align
компонентів:

–
alNone
(за
замовченням)
– компонент
залишається
там, де був
під час
проектування;

alTop
– компонент
розташовується
у верхньому
краю по всій
ширині
батьківського
компоненту;

alClient
–
компонент
займає всю
область
батьківського
компоненту
та деякі
інші.

Властивість
Visible дозволяє
керувати
відображенням
компонента
на екрані.
Якщо ця
властивість
має значення True, то
компонент є
видимим.

Колір
фону
більшості
елементів
керування
задає
властивість Color.

Властивість
Font
призначена
для
встановлення
характеристик
шрифтів
елементів
керування.

Властивість
Cursor
визначає
форму
курсору, коли
він знаходиться
над
елементом
керування.

Властивість
PopupMenu
задає
елементу
керування
локальне
меню.

Наявність
короткої
довідки
встановлюється
властивістю ShowHint, а її
зміст –
властивістю Hint.

Розміщений
в елементі
керування
текст задається
або
властивістю Text, або
властивістю Caption.

Фокус

Серед
всіх
елементів
керування,
розташованих
на формі, в
процесі
роботи
програми один
є завжди
активним. Він
повинен бути
тільки
елементом
віконного
типу. Якщо
елемент активний,
то кажуть, що
він “має
фокус”. За допомогою
клавіші Tab фокус по
черзі
переходить
до кожного
об’єкту
форми. Для
того, щоб
елемент
керування став
активним,
необхідно
виконання
кількох умов:

·
Всі його
батьківські
компоненти, а
також і сам
елемент
керування,
повинні бути
видимими на
екран, тобто,
у них
властивість Visible
повинна мати
значення True;

·
Властивість
Enabled
всіх цих
компонентів
повинна мати
значення True;

·
Цей
компонент
повинен
знаходитись
в активній
формі;

·
Елемент
керування
повинен бути
активований
або мишею,
або
програмно за
допомогою методу
SetFocus, або
клавішею Tab.

Події
миші і
клавіатури

У
компонентів Delphi
існує своя
“поведінка”,
тобто набір
відгуків на
події, що
відбуваються
з ними.
Список подій
для кожного
об’єкта, на
які він реагує,
міститься на
сторінці Events у
вікні
Інспектора
Об’єктів. Поведінка
об’єкту
визначається
тим, які обробники
і для яких
подій він
має.

Подія
– це
спеціалізована
властивість,
яка є покажчиком
функції. Тип
узагальненого
покажчика на
функцію, якій
передається
один параметр
типу TObject – TNotifyEvent.
Подібний тип
використовується
в Delphi
для подій
типу OnClick
і багатьох
інших, які
передають до
обробника
події тільки
один
параметр Sender: TObject.
Якщо
необхідно
ввести в клас
подібну подію,
то достатньо
визначити в
оголошенні
класу
відповідне
поле і метод
роботи з ним.

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

Створення
додатків у Delphi
полягає у
настроюванні
властивостей
об’єктів і
створенні
обробників
подій. Всі
дії
користувачів
під час
роботи з додатком
зводяться до
натискання
клавіш
клавіатури,
кнопок миші,
переміщення
миші вздовж
екрану тощо.
На всі ці дії
в програмі
необхідно передбачити
певні
процедури
обробки.

Обробка
подій миші

В
компонентах Delphi
передбачені
такі події,
пов’язані з
мишею:

·
OnClick –
клацання
мишею по
компоненту;

·
OnDblClick
–
подвійне
клацання
мишею по
компоненту;

·
OnMouseDown
–
натискання
кнопки миші
над
компонентом;

·
OnMouseUp
–
відпускання
натиснутої
кнопки миші;

·
OnMouseMove
–
переміщення
вказівки
миші.

Для
створення
обробників
перелічених
подій
необхідно
виділити
відповідний
елемент на
формі,
перейти на
сторінку Events
Інспектору
Об’єктів і
активізувати
мишею
необхідну
подію (двічі
клацнути напроти
ім’я події). При цьому
у вікні коду
програми
з’явиться порожній
обробник
події, до
якого
необхідно
ввести
програмний
код.
Наприклад,
напишемо
обробник
події для
кнопки BitBtn1, при
клацанні
мишею по
який,
змінювався б
колір форми:

Procedure
TForm1.BitBtn1Click(Sender:TObject);

begin

Form1.Color:=clGreen;

end;

Обробка
подій
клавіатури

Події, що
виникають
від
клавіатури:

·
OnKeyDown – натискання
клавіші;

·
OnKeyUp
–
відпускання
клавіші;

·
OnKeyPress
– обробник
натискання
клавіш ASCII-символів.

Слід зазначити,
що компонент
обробляє
події від клавіатури
тільки тоді,
коли він
активний, тобто,
має фокус.
Якщо
активних
елементів немає,
то події від
клавіатури
отримуватиме
форма.

Подію OnKeyPress
використовують,
зазвичай,
коли
необхідна реакція
на
натискання
однієї
клавіші на
клавіатурі.
Події OnKeyDown
і OnKeyUp
частіше
використовують
для
визначення натискання
комбінації
клавіш.

Характеристика
деяких
візуальних
компонентів

Кнопки

Основним
призначення
кнопок є
формування
подій при
натисканні
на них.
Подією за
замовченням
для всіх
кнопок є
подія OnClick.
В ІСР Delphi
є достатня
кількість
різноманітних
кнопок, які, в
основному,
відрізняються
зовнішнім
виглядом.
Найпростішою
кнопкою є
представник
класу TButton.

Кнопка Button
являє собою
прямокутник,
всередині якого
відображається
текст. Вона
призначена
для
виконання
будь-яких
дій, а саме,
розпочати,
завершити
або
перервати
певний процес
Ці дії
реалізуються,
зазвичай, за
допомогою
обробника
подій OnClick.

Основними
властивостями
цього класу
є:

·
Cancel
– при
значенні
цієї
властивості True,
кнопка є
кнопкою
завершення і
за натисканням
клавіші Esc виникає
подію OnClick.

·
Default –
кнопка
вважається
використаною
за замовченням
(якщо
значення
властивості True) і
при
натисканні
клавіші Enter
викликає
подію OnClick.

·
ModalResult –
визначає
результат
закриття
модального
вікна.

Колір
фону кнопки є
незмінним – його
визначає Windows.
Властивість Caption
кнопки,
зазвичай,
містить її
призначення,
наприклад, Введення,
Розрахунок,
Вихід
тощо.

Комбінована
кнопка класу TBitBtn є
прямим
нащадком
класу TButton,
тому у всьому
нагадує
звичайну
кнопку цього
класу, але до
того ж може
містити
графічне
зображення.
ІСР Delphi
містить
певну
множину
малюнків,
спеціально
призначених
для
розміщення в
таких кнопках.
У кнопки BitBtn може
бути 11 стандартних
різновидів
(типів),
наприклад: Ok, Close, Cancel, Help, Yes та ін.

Основні
властивості
цього класу:

·
Kind –
відповідає
за вибір типу
кнопки (Ok, Help тощо).

·
Glyph –
призначена
для зміни
піктограми у
кнопці. За
вибором цієї
властивості
відкривається
вікно
редактора
малюнків Picture Editor,
в якому за
допомогою
кнопки Load (Завантажити) можна
вибрати
будь-яку
піктограму
на кнопку
(растрове
зображення у
форматі BMP).
Після цього,
використовуючи
кнопку Save,
можна
зберегти
малюнок в
будь-якому
місці диску.

·
Style
– дозволяє
вибирати
стиль кнопки.
Можливі три
варіанти: bsAutoDetect –
стиль, що
визначається
в залежності
від операційної
системи; bsWin31 –
стиль для Windows 3.1; bsNew – новий
стиль.

Колір
фону кнопки
визначається
операційною
системою.

Кнопки класів
TButton
і TBitBtn
обробляють
події від
миші,
клавіатури, а
також події OnEnter і OnExit.

Кнопка
класу TSpeedButton
– це
графічна
кнопка, яка
забезпечує
швидке створення
панелей
інструментів.
Для цих кнопок
можна
призначати
декілька
піктограм і
змінювати їх
під час
виконання
додатку.
Переважна
частина
властивостей
таких кнопок
аналогічна
властивостям
кнопки класу TBitBtn.

Списки

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

Для
виконання
дій над
списками в
цьому класі є
такі
властивості:

·
Capacity – визначає
кількість
елементів,
яку можна помістити
у списку без
його
розширення;

·
Count
– повертає
кількість
елементів
списку;

·
Items
– повертає
покажчик на
елемент
списку за його
індексом.

Для
керування
списком
оголошені
методи, основними
з яких є:

·
Add (Item)
– додає у
кінець
списку новий
елемент і повертає
його індекс
(індексація
розпочинається
з 0);

·
Clear
– очищує
список від
елементів;

·
Delete (Index)
– видаляє із
списку
елемент з
індексом Index;

·
Expand
– збільшує
значення Capacity,
розширяючи
список;

·
First
– повертає
покажчик на
перший
елемент списку;

·
IndexOf (Item)
– здійснює
пошук
елементу у
списку і
повертає
його індекс.

Компонент
класу TListBox являє
собою
стандартний
механізм
вибору одного
або
декількох
елементів
списку. Список
може містити
як рядки, так
і довільні зображення.
При цьому є
можливість
додавати до
списку нові
елементи або
видаляти існуючі.

Компонент
класу TCheckListBox являє
собою поле зі
списком,
елементи
якого є
опціями. Цей
компонент
має у своєму
складі
об’єкт-список,
який містить
покажчики на
елементи
списку або на
самі
компоненти списку.

Редактори
символьної
інформації

Редактори
символьної
інформації
дозволяють
за допомогою
клавіатури
вводити у
програму символьну
інформацію
різноманітного
призначення.
Всі
редактори
мають
можливості
виділення,
копіювання,
вилучення і
вставки
фрагментів
тексту,
скролінгу
(якщо текст
не
вміщується у
вікні) та
деякі інші.

До
редакторів належать:

·
рядок
введення
класу TEdit;

·
комбінований
рядок
введення TComboBox;

·
рядок
введення
дати і часу TDateTimePicker;

·
редактор
тексту TMemo;

·
багаторядковий
текстовий
редактор
класу TRichEdit та деякі
інші.

У всіх
редакторів,
за винятком
редактора класу
TRichEdit
і рядка
введення
дати і часу
класу TDateTimePicker,
є вбудовані
контекстні
меню, які
містять такі
команди:

-
Undo – відмінити
останні
зміни у
тексті;

-
Cut – вирізати
фрагмент
тексту і
помістити
його в буфер;

-
Copy – скопіювати
виділений
фрагмент у буфер;

-
Paste – вставити
із буфера
текст у
місце,
вказане курсором;

-
Delete – видалити
виділений
фрагмент
тексту;

-
Select All – виділити
весь текст.

Клас TEdit. За
допомогою
рядка
введення
класу TEdit
можна
вводити один
рядок тексту.
Серед властивостей
цього класу
доцільно
розглянути
такі:

·
Anchors
– визначає
положення
компоненту
відносно
батьківського
елементу.

·
BorderStyle
– визначає
вигляд межі
редактору.

·
Name
– задає ім’я
компонента.

·
PasswordChar
– задає
символ, який
буде
заміняти всі
реально набрані
символи в
тексті, якщо
редактор
використовується
для введення
паролю.

·
ReadOnly
– забороняє
змінювати
текст в
редакторі, якщо
значення
властивості
встановлено True.

·
Text
– містить
весь текст.

Комбінований
рядок
введення TComboBox. Являє
собою
об’єднання
стандартного
рядка
введення і
списку. У
звичайному
стані він
нагадує
рядок
введення з
кнопкою у правій
частині, на
якій
зображена
стрілка. При
натисканні
на цю кнопку
з’являється
випадаючий
список
рядків, з
якого можна
зробити
вибір.

Рядок
введення
дати і часу класу
TDateTimePicker призначений
тільки для
введення або
дати, або
часу.
Інформацію у
цей рядок
можна вводити
трьома
способами:

·
безпосередньо
у рядок
введення;

·
у
процесі
виконання
програми –
при натисканні
на кнопку, що
знаходиться
у правій частині
компонента, є
можливість
вибрати дату
із календаря,
який
розкриється
при цьому;

·
за
допомогою
кнопок зміни
величини
параметра.

Редактор
тексту класу TMemo

Цей
редактор
тексту
нагадує
рядок введення,
але
відрізняється
тим, що в
нього можна вносити
велику
кількість
рядків. Ці
рядки
нумеруються,
починаючи з
нуля, і зберігаються
у
властивості Lines
класу TStrings.
Керування
рядками
здійснюється
за допомогою
методів і
властивостей
класу TStrings,
такими як Add, Count, Delete
тощо. TMemo
можна
заповнити
інформацією
з текстового
файлу за
допомогою
методу LoadFromFile
класу TString.

Клас TRichEdit.
Багаторядковий
текстовий
редактор
класу TRichEdit
зовні не
відрізняється
від
редактора
класу TMemo.
Основна
відмінність
полягає у
тому, що він
призначений
для роботи з
текстом в
розширеному
форматі RTF (Rich Text Format). Розмір
тексту, що
редагується,
необмежений.
При цьому
весь текст
розбивається
на так звані
параграфи
(параграфами
можуть бути абзаци
або окремі
речення). TRichEdit
своїми
властивостями
і методами
дозволяє
керувати
атрибутами
тексту, а
саме, зміною
шрифтів і
характеристик
параграфів.

Всі
редактори
реагують на
основні
події від
миші,
клавіатури і
перетягування
елементів, а
також на
зміну
об’єкту (OnChange), на
отримання
фокусу
введення
віконним елементом
(OnEnter),
на втрату
віконним
елементом
фокусу (OnExit) та деякі
інші. За
замовченням
активним є обробник
події OnChange.

Елементи
керування з
багатьма
станами

Кожна
стандартна
кнопка в Delphi призначена
для передачі
1 біта
інформації: натиснута
вона чи ні
(винятком є
лише кнопки
зміни
величини
параметрів).
Але на практиці
часто
необхідно
передавати
більший
об’єм
інформації.
Для цього і
призначені елементи
керування з
багатьма
станами, до
яких
належать:

-
незалежні
перемикачі
класу TCheckBox;

-
залежні
перемикачі
класу TRadioButton;

-
панель
перемикачів TradioGroup.

Один
перемикач, як
і одна
кнопка, може
передавати 1
біт
інформації,
але їх можна
об’єднувати
в групи. При
цьому
перемикачі
необхідно
розміщувати
в групових
елементах
керування
або на панелі
перемикачів.

Перемикачі
можуть
знаходитися
в двох станах
– увімкненому
і вимкненому.
При цьому у
об’єктів
класу TCheckBox ці стани
можна
встановлювати
незалежно один
від одного,
тоді як серед
перемикачів
класу TRadioGroup
фізично
можна обрати
тільки один
елемент з
групи.

Перемикачі
обробляють
всі події від
миші і
клавіатури,
події OnEnter
і OnExit,
події,
пов’язані з
перетягуванням
компонентів,
а також подію
OnClick.

Групові
елементи
керування

Групові
елементи
керування
дозволяють
об’єднувати
разом окремі
компоненти
форми. Це
робиться з
метою, щоб
отримати
можливість
одночасного
керування
об’єднаними
компонентами.
До групових
елементів
керування
належать

·
панель
для
розміщення
компонентів
класу TPanel;

·
групова
панель з
заголовком
класу TGroupBox;

·
панель
прокрутки
класу TScrollBox.

Групові
компоненти є
батьками для
компонентів,
які вони
містять. В
свою чергу,
батьком всіх
групових
компонентів
є компонент TForm.

Клас TPanel –
керуючий
елемент, який
використовують
з метою
візуального
об’єднання
елементів, що
знаходяться
на ньому.
Спочатку
його
переносять
на форму, а
потім зверху
розташовують
інші
компоненти.
Ці компоненти
відтепер
будуть
переміщуватися
при переміщенні
компоненту Panel.

Клас
TGroupBox
дозволяє
об’єднувати
будь-які
елементи керування
і являє собою
прямокутне
вікно з рамкою
і текстом в
розриві
рамки. За
текст
відповідає
властивість Caption.
Подією за
замовчуванням
є OnClick.

Клас TScrollBox
– це панель
з
вертикальною
і
горизонтальною
лінійками
скролінгу.
Якщо елемент
не вміщається
повністю в
панелі, то у
неї автоматично
з’являються
відповідні
лінійки
скролінгу. У TScrollBox є
одна
властивість BorderStyle,
яка
відповідає
за наявність
рамки (bsNone – рамки
немає; bsSingle– рамка є).
Всі інші
властивості
унаслідуються
від пращурів.