Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекції по delphi методичка 1!!!.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
79.42 Mб
Скачать

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 використовують досить ак­тивно.