Лекція №4
Тема 2. Інтегроване середовище розробки C++Builder (продовження)
План
1. Управління формами у проекті C++Builder.
2. Розміщення компонентів на формі.
3. Депозитарій — сховище форм і проектів.
4. Інструментальні засоби підтримки розробки коду.
1. Управління формами у проекті C++Builder
У багатьох випадках проект містить не одну, а декілька форм. Крім того, можна прибрати з нового проекту порожню форму і включити замість неї іншу, розроблену раніше вами або кимсь іншим. Наприклад, якщо ви для якогось свого проекту розробили форму, що запрошує пароль користувача, або форму з інформацією про програму і вашим красивим логотипом, то немає сенсу в новому проекті створювати їх наново.
Для всіх форм, що включаються в проект, навіть якщо у проекті всього одна форма, задавайте унікальні імена (властивість Nаme), змінюючи встановлені C++Builder за умовчанням. Це істотно полегшить повторне використання форм, оскільки дозволить уникнути дублювання імен при включенні колишньої форми в новий проект.
Включення в проект нової форми може проводитися різними способами.
Якщо ви хочете включити нову порожню форму то потрібно виконати команду File/New Form або натиснути відповідну швидку кнопку.
Тепер розглянемо випадок, коли потрібно включити в проект форму, розроблену раніше вами або кимсь для іншого проекту. Тут можливі декілька варіантів дій, що мають різні наслідки.
Можна включити готову форму в проект командою Project/Add to Project або відповідною швидкою кнопкою. При цьому якщо форма, що включається, має те ж ім'я, яке має одна з вже наявних в проекті форм (наприклад Form1), то ви отримаєте попередження вигляду: «The project already contains а form or module named Form1» — «Проект вже містить форму або модуль з ім'ям Form1». В результаті форма в проект не включиться. Аналогічний варіант буде, якщо в проекті вже є модуль Unit1 і ви намагаєтеся включити з іншого каталогу модуль форми, що теж має ім'я Unit1, то вам буде видано таке ж попередження і новий модуль в проект не включиться.
Вирішити подібні конфлікти можна таким чином. Перейменуйте у вашому проекті форму, що викликала конфлікт (задайте для неї нове ім'я у властивості Nаme). Якщо конфлікт викликаний збігом імен модулів, то збережете конфліктуючий модуль командою File/SaveAs, давши йому нове ім'я. Після цього можете повторити спробу додавання в проект нової форми.
Пам’ятайте, що форма, що міститься в одному проекті і включена описаним способом в інший проект, стає загальною для обох проектів. Якщо зробити в ній якісь зміни, а потім перекомпілювати обидва проекти, то внесені зміни відіб'ються на обох проектах.
Володіння декількома проектами однією і тією ж формою має свої плюси і мінуси. Якщо ці проекти є якоюсь групою зв'язаних один з одним проектів, розрахованих на застосування одними і тими ж користувачами, то наявність загальних форм можна тільки вітати. Якісь удосконалення, введені в подібній формі, погоджено відобразяться у всіх проектах, що використовують її (після їх перекомпіляції). Наприклад, якщо це форма, що запитує пароль користувача, то, звичайно, добре, якщо вона буде загальною в різних застосуваннях.
Якщо ж програми, що спільно використовують форму, абсолютно різні або форма використовується в них для різних цілей, то, ввівши зміни у форму в одному проекті можна зіпсувати інший. Наприклад, змінивши ім'я програми у формі, що описує нове проект, ви мимоволі введете те ж ім'я і в інший проект, що буде, поза сумнівом, помилкою.
Щоб уникнути сумісного володіння формою декількома проектами, після того, як ви включили в новий проект форму з іншого, перейдіть у вікні Редактора Коду в модуль цієї форми і виконайте команду File/Save As, зберігши модуль в каталозі нового проекту і, якщо хочете, під іншим ім'ям (ім'я змінювати не обов'язково). В цьому випадку різні проекти використовуватимуть абсолютно різні копії однієї форми і зміни однієї з них не торкнуться інших проектів.
Можна, звичайно, створити копію форми і іншими способами. По-перше, можна просто скопіювавши відповідні файли з одного каталогу в іншій. Тільки не забудьте при цьому, що форма — це не тільки файл модуля .срр, але ще його заголовний файл .h і файл зображення .dfm. Отже копіювати треба всі три файли. Файл об'єктного модуля можна не копіювати, оскільки він буде створений C++Builder в процесі компіляції.
Ще один спосіб створення автономної копії форми — використання меню С++Builder. Ви можете у будь-який момент послідовно виконати команди File/ Open, вказавши файл форми, що відкривається, і команду File/SaveAs. Перша з цих команд відкриє форму, а друга збереже її у вказаному каталозі під вказаним ім'ям. Перевага такої операції полягає в тому, що не потрібно думати про сукупність файлів, що зберігаються. C++Builder автоматично скопіює не тільки файл .срр, але і файли .h і .dfm.