
- •3 Інспектор об'єктів
- •4 Реагування на події
- •2. Диспетчер проекту
- •2. Опис компонент у довідковій системі
- •1. Сторінка standart
- •3. Сторінка win32
- •6. Сторінка dата ассеss
- •8 Сторінка decision cube
- •9. Сторінка qreport
- •10. Сторінка dialogs
- •11. Сторінка win3.1
- •12. Сторінка samples
- •13. Сторінка activex
2. Диспетчер проекту
Головним інструментом керування проектом у Delphi є диспетчер проекту. Він дає змогу швидко відшукати потрібний модуль або закриту іншими вікнами форму, а також задати параметри керування проекту (режими роботи), крім того, надає набір функцій для роботи з проектом у цілому. Командами диспетчера проекту можна запам'ятовувати файли поточного проекту, працювати зі списками модулів та форм, додавати нові та вилучати з проекту файли модулів і форм, змінювати список стандартних шаблонів форм.
Диспетчер проекту дуже зручний для роботи зі складними проектами, які мають багато модулів. Однак у вікні диспетчера проекту виводиться список лише тих модулів, які описані в секції Uses файлу проекту. Диспетчер проекту викликають з меню Vsew командою Project Manager. Вікно диспетчера проекту показано на рис.2.18. Воно містить панель інструментів з набором кнопок, списки модулів та форм проекту, а також рядок стану.
І
Рис.2.18. Вікно диспетчера проекту.
У рядку стану є довідкова інформація про головний файл проекту, шлях доступу до нього, кількість модулів та форм, уведених у поточний проект.
Список імен модулів та форм зроблено у вигляді таблиці. Лівий стовпець має імена файлів модулів проекту, другий - імена форм проекту (саме імена форм, а не імена файлів форм), третій - шляхи до відповідних файлів,якщо цих файлів нема в поточному каталозі проекту. Потрібні операції можна виконувати як з окремими елементами списку, так і з групами, виокремленими мишкою. Для керування формами і модулями рекомендують використовувати панель інструментів диспетчера проекту - за допомогою її піктограм. Призначення піктограм таке.
• Аdd - додавання до проекту файлу, ім'я якого треба вибрати з діалогового вікна Аdd to Project.
• Removе - вилучення з проекту модуля або групи модулів, виокремлених у списку.
• Unit - відкривання файлу модуля або групи модулів, виокремлених у списку, і розташування їх на нових сторінках редактора коду.
• Form - відкривання вікна форми та розташування програмного коду модуля на новій відкритій сторінці редактора коду з використанням імен форми та файлу відповідного модуля, виокремлених у списку.
• Орtions - задання параметрів проекту у вікні, яке буде відкрито. Відкривається те ж вікно, що й командою Ргoject => Орtions, яке складається з декількох сторінок.
• Update - синхронізування складу проекту, відображеного у вікні диспетчера проекту, зі складом проекту з файлу .Dрг. Використовують після внесення змін до файлу проекту.
3. Керування параметрами проекту та середовища
Параметри середовища використовують для загального налаштування самого середовища розробки програм Delphi. Вони впливають на всі проекти, створені протягом сеансу роботи, а якщо їх запам'ятовувати у разі виходу з Delphi- то і на проекти, створені протягом наступних сеансів роботи.
Параметри проекту визначають для кожного конкретного проекту і залежно від етапу роботи над проектом вони можуть відповідно змінюватися. У загальному випадку всі параметри проекту мають деякі стандартні значення, які можуть задовольняти більшість простих проектів. Побачити та змінити параметри проекту можна, або натиснувши на кнопку Орtions у диспетчері проекту, або командою Ргoject => Орtions, Унаслідок цього з'явиться діалогове вікно Ргoject Орtions , яке складається з декількох сторінок. Усі параметри згруповані за тематичною ознакою на відповідних сторінках. Вибрати потрібну сторінку можна, клацнувши мишкою на відповідній закладці.
Кожна сторінка параметрів проекту має ознакуDefault, задавши яку, відновлюють прийняті стандартні значення параметрів цієї сторінки. Це доцільно, якщо нема впевненості в значеннях деяких параметрів або на комп'ютері почергово працюють декілька осіб.
Розглянемо лише параметри роботи транслятора та їхнє призначення. Вони є на сторінці Соmpiler (рис.2.19). Повне визначення всіх інших параметрів та їхнє застосування можна отримати з довідкової системи Delphi.
Група ознак Code generation задає параметри створення компілятором виконуваного коду.
• Орtimization - виконати оптимізацію коду. Застосовують після остаточного налагодження програми перед створенням її робочого варіанта (Ехе-файлу).
РГО|ЄСІ ОрІІОПВ
Рис.2.19. Список параметрів компілятора.
Аlіgned record fields - усі поля даних, які мають розмір, більший ніж один байт, вирівнювати на межу слова. Це дає змогу дещо збільшити швидкодію програми.
•Stackframes - змушує компілятор генерувати власний стек для процедур і функцій.
• Реntium-safe FDIV - генерує скоректований код для перших серій процесорів Реntium, які допускають помилку під час ділення чисел з рухомою крапкою.
Група ознак Syntax options визначає поведінку компілятора у разі перевіряння тексту програми.
• Strict var-strings- змушує компілятор перевіряти формальний та відповідний фактичний параметри рядкового типу (string) у разі виклику процедур та точний збіг їхніх розмірів (типів). Рекомендують завжди мати цю ознаку ввімкненою.
• Соmplete boolean eval - змушує компілятор генерувати код так, щоб під час виконання логічні вирази обчислювалися повністю. Якщо ввімкнена ознака, то згенерований код є такий, що обчислення логічного виразу в процесі виконання програми припиняється, коли стає відомим його значення. Рекомендують цю ознаку вимикати, тоді програма працюватиме дещо швидше.
• Ехtehded syntax - дає змогу компілятору використовувати набір розширених синтаксичних правил. Можна викликати функцію як процедуру -оператором, а результат функції буде ігнорований. Ознака дає змогу також використовувати змінні величини типу РСhaг, які застосовують у разі викликівWindows АРІ, отже, варто мати цю ознаку ввімкненою.
• Туреd @ орегаtог - змушує компілятор визначати вказівник, тип якого є аналогічним операнду операції. Наприклад, байтова змінна визначить вказівник на байт. Якщо @ ознака вимкнена, то компілятор завжди визначає вказівник без типу. Рекомендують мати ознаку вимкненою, щоб уникнути несумісних типів вказівників.
• Ореn paraments - дає змогу компілятору розглядати будь-який рядок, переданий функції, як відкритий рядок або РСНаг всередині цієї функції, не звертаючи уваги на тип рядка - формального параметра.
• Нuge strings- дає змогу використовувати довгі рядки літер (новий тип даних), довжина яких перевищує 255.
• Assignable typed constants - дає змогу використовувати присвоєння значень типованим константам, сумісне з Delphi-1.
Група ознак Runtime errors дає змогу ввімкнути або вимкнути перевірку деяких ситуацій у разі виконання програми: вихід значення індексу масиву або рядка за визначені типом межі (Range checking); помилки під час
операцій з файлами (І/О сhecking ); переповнення у разі виконання операцій з цілочисловими змінними (Оverflow сhecking). Увімкнення ознак дає змогу контролювати програму в процесі її виконання і формувати діагностику про помилки, якщо вони з'являться, однак сповільнює швидкість
її роботи.
Група ознак Debugging визначає параметри інтегрованого налагоджу-
вача Delphі.
• Debug information - дає компілятору вказівку генерувати інформацію для налагоджувача, яка буде зберігатися в файлі з розширенням Dcu. Інформація в основному складається з таблиці, яка зіставляє номер рядка програми з позицією команди у відтрансльованій програмі. Ознаку треба вмикати, щоб використовувати налагоджувач Delphі.
• Local symbols - призначена для створення компілятором списку змінних величин, які використовують у програмі, та запам'ятовування його в файлі з розширенням .Оси. Список має ім'я кожної змінної величини та її розташування в пам'яті у разі виконання програми. Якщо цей список доступний для налагоджувача, то можна контролювати значення величин та змінювати їх під час роботи програми.
• Symbol info - додає до збереженого для налагоджувача списку змінних інформацію про те, як ці змінні були описані й де до них звертаються.
• Assertions - розташовує повідомлення про можливі помилки в самому відтрансльованому коді програми.
Після остаточного налагодження програми перед створенням робочого варіанта (Ехе-файлу), який передають або використовують у роботі, треба вимкнути всі ознаки групи Debugging Це зменшить розмір програми та збільшить швидкість її виконання. Крім того, на сторінці Linкег потрібно вимкнути ознаку Include TDW debug infoГрупа ознак Messages задає види повідомлень, які генеруватиме компілятор у відповідних випадках під час роботи і виводитиме на екран: пові-домлення-підказки (Show hints ); повідомлення-попередження (Show warning).
Заняття 5 Стандартні файли Delphi
Кожна розробка прикладної програми в Delphi називається проектом. Проект складається, як звичайно, з декількох різних файлів. Кожне ім'я файлу закінчується певним розширенням, яке визначає зміст файлу. Перелічимо типи та зміст файлів, які створюються Delphi під час проектування.
♦ Файли ,-* - якщо розширення імені файлу починається знаком «~» (тильда), то це резервна копія модифікованого файлу. Ці файли можна не зберігати, однак може виникнути потреба повернутися до попереднього варіанта після невдалої модифікації або втрати файлу.
♦ Файли .Dcr (Dсг - це скорочення від Delphi Component Resourse) -файли ресурсів компонент Delphi, містять піктограми компонент, які з'являються на палітрі. Якщо цього файлу нема або він викреслений, то у разі вставляння компоненти в палітру Delphi буде використана стандартна піктограма. Отже, файл потрібно зберігати.
♦ Файли .Dcu (Delphi Compiled Unit) містять відтрансльований код та дані модулів програми. Наприклад, abcUnit.Dcu містить програмний код і дані, описані в текстовому файлі abcUnit.Pas. Файли типу .Dси завжди можна вилучати, оскільки Delphi створює їх заново у випадку кожної компіляції проекту.
♦ Файли .Dfm (Delphi Form file) містять значення в двійковому форматі, які стосуються властивостей форми, а також властивості всіх компонент, розташованих на формі. У файлах типу .Dfm також зафіксовані зв'язки між подіями та процедурами їх опрацювання. Delphi копіює цю інформацію у виконуваний .Ехе-файл. Файли типу .Dfm завжди
потрібні, їх не можна знищувати, як і файли з текстами програм проекту.
♦ Файли .Dsm призначені для зберігання проміжного коду або символів. їх можна знищувати, однак лише після успішної компіляції проекту.
♦ Файли .Dll зберігають код бібліотек динамічного компонування. Можна вилучати ті файли .Dll, для яких маємо початковий текст. Якщо немає тексту або копії .Dll-файлу в іншому місці, то знищувати .Dll-файл не можна.
♦ Файл .Dpr (Delphi Project) - це є текстовий файл головної програми проекту, який Delphi створює автоматично. Як звичайно, цей файл не змінюють, за винятком спеціальних випадків. Delphi створює .Dрг-файл під час першого запам'ятовування проекту. Файли .Dрг не можна знищувати.
♦ Файли .Dsk зберігають конфігурацію робочого середовища проекту, однак за умови, що ввімкнена ознака Аutosave options - Desktop командою Тооls => Environment на сторінці Ргеferences. Файли типу .Dsk можна вилучати, якщо інформація про вікна не потрібна або треба повернутися до розташування вікон, що діє за замовчуванням. Зауважимо, що .Dsk-файли зберігають також маршрути проекту, отже, у разі перенесення проекту в інший каталог або збереження модулів проекту в декількох каталогах знищувати .Dsk-файл не варто.
♦ Файли .Ехе - це виконавчі файли, які створюються в результаті компіляції. Delphi створює єдиний .Ехе-файл для кожного проекту у випадку успішної компіляції, саме цей файл передають замовникам або користувачам для роботи. Такий файл можна вилучати, оскільки Delphi створює його під час кожної компіляції.
♦ Файли .Dof (або .Opt) призначені для збереження параметрів, визначених командою Project => Options на всіх сторінках відповідного вікна. Якщо цей файл знищити, то Delphi створить його заново, використовуючи значення параметрів за замовчуванням. Якщо задані значення параметрів є важливими, то такий файл не варто знищувати.
♦ Файли .Раs містять початковий текст модулів проекту. В загальному випадку для кожної форми створено один .Раs-файл. Крім того, можуть бути модулі з процедурами, функціями, константами тощо, які не пов'язані з формами, і використовуються в інших модулях проекту. Очевидно, що .Раs-файли ніколи не можна вилучати.
♦ Файли .Res містять ресурси в двійковому форматі, такі як піктограма програми та інші зображення, якщо вони є. Ці файли створюються в процесі побудови проекту. Файли типу .Res не можна ні змінювати ззовні, ні знищувати.
Розглянемо знову наш демонстраційний проект. Перед процедурою TForm1.ShinEdit1Change записана директива компілятора {$R *.DFM}. Вона визначає потребу шукання файлу з іменем, яке збігається з іменем модуля, однак з розширенням .Dfm (властивості форми, а також властивості всіх компонент, розташованих на формі), та копіювання цієї інформації у виконавчий .Ехе-файл. Таку ж директиву Delphi завжди записує на початку розділу реалізації інших модулів, пов'язаних з формами.
Подібну директиву {$R *.RES} маємо на початку головної програми program abcProject Вона визначає компіляторові потребу введення в .Ехе-файл піктограми програми та інших зображень, які можуть зберігатися там.
2. Робота з вікнами форм та модулями
Проект може складатись з однієї або декількох форм. На практиці кожна окрема форма стосується логічної частини задачі. Для того, щоб додати до проекту нову форму, треба виконати команду file => New Formабо скористатися інструментом New Form панелі швидкого доступу. Кожна форма пов'язана зі своїм текстовим файлом - модулем, який містить визначення класу форми та методи опрацювання подій форми і компонент, що розташовані на ній. Під час роботи в Delphi модуль формують, зокрема, можна додавати свої процедури та функції за загальними правилами Оbject Pascal
Коли
маємо
відразу
декілька
форм,
то
на
екрані
вони,
як
звичайно,
перекривають
одна
одну,
а
якщо
форма
велика,
то
може
закривати
і
весь
екран.
Тому
деякі
форми доводиться мінімізувати для
вивільнення місця на екрані. Щоб зробити активною невидиму в конкретний момент форму, можна
скористатися командою View => Forms, після чого вибрати в діалоговому вікні (рис.2.2) потрібну форму та натиснути на кнопку ОК.
View Form
Зробити потрібну форму активною можна також через диспетчер проекту (див. вище) кнопкою Form його панелі інструментів.
Третій і, можливо, найзручніший спосіб активізації форми - за допомогою інструментальної кнопки Select form from list на панелі швидкого доступу.
Подібно працюють з модулями. Якщо наявне видиме вікно редактора коду, то найпростіше увімкнути потрібний модуль за допомогою закладок цього вікна. Крім того, командою View => Units задають подібне до рис.2.2 вікно, в якому треба вибрати потрібний модуль. Диспетчер проекту для цього має кнопку Unit. І, нарешті, перемикати модулі можна за допомогою інструменту Select unit from list панелі швидкого доступу. Окремо назвемо команду View => Project Source для перемикання вікна редактора коду на файл проекту, тобто головну програму.
До проекту можна також додати модуль, не пов'язаний з жодною формою, наприклад, модуль з процедурами та функціями для числових розрахунків. Використання таких процедур та функцій автор може передбачати в інших модулях, наприклад, у методах опрацювання подій компонент. Якщо такий модуль створюватимуть заново в Delphi, то потрібно вибрати команду головного меню File => New => New => Unit. У редакторі коду після цього з'явиться початковий текст на новій сторінці. Повний текст модуля треба визначити в подальшій роботі. Можна також використовувати раніше створені модулі, причому навіть не в системі Delphi. Для цього потрібно скористатись командою File => Add to Project або Project => Add tj Project. У стандартному діалоговому вікні розшукати папку та файл модуля і натиснути на кнопку відкриття. Після появи раніше створеного модуля у вікні рекомендуємо скористатися командою File => Save As для запам'ятовування копії модуля в папці поточного проекту (ім'я файлу можна не змінювати).
Редактор коду можна використовувати для створення та редагування будь-яких текстових файлів, наприклад, файлів початкових даних або файлів документації. Для цього треба спочатку відкрити такий файл на одній із сторінок редактора командою File => New => New =>Text (якщо файл новий) або File => Ореп (якщо файл вже є), а після внесення змін запам 'ятати файл командами File => Save As або File => Save, після чого закрити-File => Close.
Заняття 6 Інспектор об'єктів та властивості компонент
Майже всі властивості компонент можна визначати як через інспектор об'єктів - під час проектування програми, так і присвоєнням потрібних значень або викликом спеціального методу компоненти - під час виконання програми. Властивість - це спеціальне поле об'єкта, зміна значення якого не лише фіксується в комірці пам'яті, а й зумовлює виконання певної процедури. Така процедура може виконати дуже значний обсяг роботи, і не тільки пов'язаної зі 'своєю' властивістю. Наприклад, зміна значення властивості СоІОГ не лише фіксує в пам'яті нове значення кольору зафарбування компоненти, а й перемальовує зображення у цей колір. У цьому випадку можуть виконуватися додаткові перевірки, наприклад, чи є компонента в цей момент видимою, невидимою або частково закритою на екрані іншою компонентою? Невидиму компоненту, очевидно, не перемальовують, лише запам'ятовується майбутній новий колір, який вона матиме у разі появи. Частково закрита компонента повинна змінити колір своєї видимої відкритої частини.
Такі дії виконують самі компоненти, ми ж повинні пам'ятати, що зміна значення властивості під час виконання програми означає переважно виконання певної роботи, прихованої від нас за компонентою. Поняття властивості введено саме з такою метою - мати змогу програмно виконувати дії, унаслідок яких компоненти матимуть певну поведінку.
Дуже важливо знати, що перевалжна більшість властивостей будь-якої компонента одержують свої початкові стандартні значення автоматично - у разі появи на формі компоненти під час проектування. В подальшому їх можна змінити ще в процесі проектування за допомогою інспектора об'єктів або вже під час виконання програми.
Наприклад, для компоненти-позначки (типу TLabel) список властивостей та їхніх значень в інспекторі об'єктів виглядає, як на рис.3.1 (з урахуванням зроблених нами змін). Найважливіші властивості позначки такі: Аlign = ( аlNone, alTop, alBottom, alLeft, alRight, alClient ) - вирівнювання щодо меж батьківської компоненти;
Alignment - правило вирівнювання тексту ;
Autosize = true - розмір компоненти автоматично зводиться до розмірів тексту і висоти шрифту ; Соlог - колір тла поля компоненти ; Сursor - вигляд курсора над компонентою (crDefault, crArrow, crCross, сгІВеаm, ... );
+Font - комплексна властивість - шрифт для записування тексту позначки; Hint - текст підказки (string) - у разі ShowHint = true;
Name - ім'я компоненти у списку власника (форми чи іншого батьківського елемента);
РорирМеnu - наявність спадного меню (контекстного);
ShowHint - активність системи підказки компоненти; Visible- видимість під час виконання.
Доцільно на прикладі демонстраційного проекту з параграфа 2.1 переглянути поведінку позначки Labell у випадку зміни значень її властивостей через інспектор об'єктів. Для цього рекомендуємо повернутися до згаданого проекту та ще раз виконати проектування за описаною там схемою.
Р
ис.3.1.
Список
властивостей
позначки.
Наприклад, спробуємо спочатку поміняти значення властивості Сlїог, яка в загальному списку розташована після властивості Сарtion. У разі кожної зміни відразу ж змінюється колір тла поля, на якому записаний текст позначки. Розкривши список підвластивостей комплексної властивос-ti Font, відшукаємо таку ж підвластивість Соlor, яка тепер вже стосується кольору літер, тобто самого тексту. Зміна значення цієї підвластивості так само негайно відображається на формі програми. Як бачимо, на етапі проектування компоненти негайно реагують на зміну значень властивостей.
Однак деякі властивості виявляються лише на етапі виконання програми. Наприклад, властивість Visible означає видимість позначки під час виконання. Тому зміна її значення з Тrue на False в інспекторі об'єктів не приведе до зникнення позначки з форми. Це станеться, якщо програму запустити на виконання - тоді позначки не буде.
Отже, використовуючи інспектор об'єктів, можна змінювати стандартні значення властивостей, у цьому випадку частина змін буде відразу відображена в компоненті на формі, а частина - реалізована під час запуску програми на виконання. Списки всіх властивостей та методів кожної компоненти (точніше, кожного типу компоненти) можна переглянути в довідковій системі, яку в процесі роботи в Delphi використовують досить активно.