;
# pragma hdrstop; # include "Unit2.h" p>
Директива
# include "Unit2.h" вказує на те, що в текст модуля повинен бути
включений відповідний заголовки. p>
При
створення модуля використовуються наступні правила: p>
Назва
повинно бути унікальним. Два модуля з одним і тим же ім'ям не можуть
використовуватися одночасно в одному і тому ж проекті. p>
Якщо
модуль пов'язаний з формою, то ім'я вихідного файлу модуля і файлу форми (з
розширенням *. dfm) повинні бути однаковими. При створенні обробника подій в
інспектора об'єктів в тексті файлу модуля генерується шаблон функції, в
який розробник повинен вводити код, що виконується при настанні
оброблюваного події. p>
Структура h-файлу h2>
h-файл
генерується при створенні нового модуля. У ньому міститься інформація про дані і
функції, які можна використовувати в модулі. h-файл для модуля, пов'язаного з
формою, містить описи інтерфейсних елементів і інших компонентів цієї
форми і обробників подій для них (тобто, в термінології
об'єктно-орієнтованого програмування, опис класу форми). Такі
опису автоматично додаються в h-файл при внесенні в форму нових
компонентів або створення нових обробників подій. Іншими словами, у h-файлі
міститься інтерфейс, а в самому модулі - реалізація. p>
p>
Рис.
3. Приклад структури h-файлу p>
Примітка.
Під час видалення з форми компонентів їх опису видаляються з h-файлу, а опису
обробників подій зберігаються. При перейменування компонентів змінюються їхні
опису в h-файлі, а також імена і описи обробників подій,
згенеровані автоматично. Однак при цьому не змінюються посилання на ці
компоненти і обробники подій, що використовуються в інших функціях, тому
рекомендується перейменовувати компоненти й обробники подій одразу ж після
їх створення, поки на них не з'явилися посилання. p>
Не
рекомендується видаляти з модуля порожні функції (наприклад, випадково створені
шаблони обробників подій). Вони не збільшать розмір файлу, що виконується, але їх
видалення може призвести до неможливості заново згенерувати обробник
події, якщо в цьому виникне необхідність. p>
Відзначимо,
що в модулі можуть містити функції, не описані в h-файлі, однак
видимість їх у цьому випадку обмежується даним модулем. p>
Всередині
модуля функції можуть бути визначені і посилатися один на одного в довільному
порядку. Якщо цей модуль посилається на інші форми і модулі, слід з
допомогою директиви препроцесора # include включити в нього відповідний h-файл
за допомогою пункту меню File/Include Unit Hdr ... . Після цього інтерфейсні
елементи іншого модуля будуть доступні в даному модулі. p>
Файл форми h2>
Форма
є одним з найважливіших елементів програми C + + Builder. Процес
редагування форми відбувається при додаванні до форми компонентів, зміні
їх властивостей, створенні обробників подій. p>
p>
Рис.
4. Структура файлу форми p>
Коли
до проекту додається нова форма, створюються три окремих файлу: p>
Файл
модуля (. cpp) - містять задану вихідний код, пов'язаний з формою. p>
h-файл (. h)
- Містять задану опис класу форми, тобто описи містяться на формі
компонентів і обробників подій. p>
Файл
форми (. dfm) - двійковий файл, який містить відомості про опублікованих (тобто
доступних в інспектора об'єктів) властивості компонентів, що містяться у формі.
Двійковий файл форми містить інформацію, яка використовується для конструювання форми
з компонентів, розташованих на ній. При додаванні компонента до форми та
заголовки, і двійковий файл форми модифікуються. Під час редагування
властивостей компонента в інспектора об'єктів ці зміни зберігаються в двійковому
файлі форми. p>
Хоча
в C + + Builder файл. dfm зберігається у двійковому форматі, його зміст можна
переглянути за допомогою редактора коду. Для цього потрібно натиснути праву клавішу
миші над формою і з контекстного меню форми вибрати пункт View as Text. p>
Відзначимо,
що при вилученні будь-якого компоненту з форми в буфер обміну в останньому
реально виявляється частина тестового подання файлу форми, що містить
опис даного компоненту. У цьому можна переконатися, виконавши потім операцію
вставки з буфера обміну в будь-якому текстовому редакторі. Модулі Delphi 2.0 p>
C + +
Builder створений на основі візуальної бібліотеки компонентів Borland Delphi,
що стала за останні два роки дуже популярною серед розробників. З цієї
причин цей продукт має спільну з Delphi бібліотеку класів, частина з яких
залишилася написаної на Object Pascal. З цього випливає, що в додатках можна
використовувати компоненти, створені для Delphi 2.0. p>
Однак
сумісність з Delphi цим не вичерпується. У проектах C + + Builder можна
використовувати не тільки бібліотеку компонентів Delphi, але і код, написаний на
Object Pascal, а також форми і модулі Delphi. Ці можливості з'явилися
завдяки включенню в С + + Builder обох компіляторів - С + + і Object Pascal. p>
p>
Рис.
5. Типи файлів, що використовуються в проектах С + + Builder p>
В
Відповідно до цього як частин проекту можуть бути використані модулі,
написані на Object Pascal. У цьому можна переконатися, взявши форми якого-небудь
з прикладів, створених в Delphi 2.0 і включивши їх в проект С + + Builder. Візьмемо
як такого прикладу додаток Graphex з набору прикладів Delphi 2.0.
Створимо новий проект, видалимо з нього створену за замовчуванням форму і додамо
два модулі з програми Graphex - Graphwin.pas і Bmpdlg.pas. p>
p>
Рис.
6. Додавання модулів Delphi до проекту. p>
Скомпіліруем
проект. Можна переконатися в працездатності отриманого програми, запустивши і
протестувавши його. p>
В
разі використання форм Delphi до проекту додаються два файли - файл форми з
розширенням *. dfm і файл модуля з розширенням *. pas. Опис класу форми
міститься в самому модулі, отже, для цього не потрібен окремий файл
заголовка. p>
Розглянемо
більш докладно структуру модуля Delphi. В якості найпростішого прикладу наведемо
структуру модуля, пов'язаного з формою, яка містить єдиний інтерфейсний
елемент - кнопку закриття вікна: unit Unit1; interface uses Windows, Messages,
SysUtils, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 =
class (TForm) Button1: TButton; procedure Button1Click (Sender: TObject); private
(Private declarations) public (Public declarations) end; var Form1: TForm1;
implementation ($ R *. DFM) procedure TForm1.Button1Click (Sender: TObject); begin
close; end; end. p>
Основними
елементами модуля є: p>
Заголовок
модуля - призначений для ідентифікації модуля і повинен бути унікальним для
даного проекту. Чи збігається з ім'ям файлу з розширенням *. pas. p>
Секція
інтерфейсу (починається зарезервованим словом interface). Секція інтерфейсу
є місцем, де оголошуються константи, типи, змінні, процедури і *
функції, які доступні для використання іншими програмними модулями. При
оголошення процедур і функцій в секції інтерфейсу необхідними є тільки
їх заголовки. Тіла, або реалізації, цих процедур і функцій розташовуються в
секції реалізації. p>
Секція
реалізації (починається зарезервованим словом implementation) містить
процедури та функції, включаючи обробники подій. Оголошення обробників
подій повинні бути присутніми в секції інтерфейсу. Крім цього, секція
реалізації може мати додаткові процедури, функції та оголошення констант,
типів і змінних, згадки про яких немає в секції інтерфейсу, але ці
оголошення видимі лише в межах даного модуля. p>
Секції
ініціалізації та завершення (починаються з зарезервованих слів initialization
і finalization) - необов'язкові секції для розміщення операторів, що виконуються
відповідно при запуску і завершенні програми. Пропозиція uses
(необов'язкове) містить імена інших модулів, які використовуються даним модулем та
може розташовуватися безпосередньо за ключовим словом interface і за ключовим
словом implementation. Пропозиція uses робить секцію інтерфейсу інших модулів
доступною в даному модулі. p>
Відзначимо,
однак, що для створення нових модулів Delphi потрібна наявність Delphi. У С + +
Builder їх можна тільки використовувати. Можливості редагування форм і модулів
Delphi в С + + Builder істотно обмежені - допустимі тільки операції, не
зачіпають секцію інтерфейсу модуля. Наприклад, можливо пересування
інтерфейсних елементів у межах їх містять компонентів-контейнерів,
зміна розмірів, копіювання в буфер обміну, але заборонено їх застосування або
видалення. Можливі зміни всередині коду процедур і функцій, але заборонено
додавання нових обробників подій. p>
* В
термінології Pascal процедурами зазвичай називають функції і не повертають
значень (зокрема, обробники подій). Єлманова Н.З., Кошель С.П.
Вступ в Borland С + + Builder p>
Список літератури h2>
Для
підготовки даної роботи були використані матеріали з сайту http://www.citforum.ru/
p>