Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Л3.doc
Скачиваний:
12
Добавлен:
30.10.2018
Размер:
92.67 Кб
Скачать

5. Структура файлів модулів форм

Кожен модуль складається з двох файлів: заголовочного, що містить опис класу форми, і файлу реалізації. Нижче приведені тексти цих файлів модуля форми, на якій розміщена одна мітка (компонент типу TLabel) і одна кнопка (компонент типу TButton). Докладні коментарі в цьому тексті пояснюють, куди і що в цей код ви можете додавати.

Заголовочний файл:

Лістинг 2

//заголовочний файл unit1.h -----------------------------------------

#ifndef UNIT1H

#define UNIT1H

//-------------------------------------------------------------------

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

//сюди можуть поміщатися додаткові директиви препроцесора (зокрема, include)

//що не включаються у файл автоматично

//-------------------------------------------------------------------

//оголошення класу форми Tform1

class Tform1 : public TForm

{

__published: //IDE-managed Components

//розміщені на формі компоненти

TButton *Button1;

TLabel *Label1;

void _ fastcall Button1Click{TObject *sender);

private: //User declarations

// закритий розділ класу

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

// що включаються в клас форми, але не доступних для інших модулів

public: // User declarations

// відкритий розділ класу

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

//що включаються в клас форми і доступних для інших модулів

__fastcall TForml{TComponent* Owner);

};

//---------------------------------------------------------

extern PACKAGE Tform1 *Form1;

//---------------------------------------------------------

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

// які не включаються в клас форми;

// доступ до них з інших блоків можливий тільки при дотриманні деяких додаткових умов

#endif

Файл реалізації:

Лістинг 3

//файл реалізації unit1.cpp -------------------------------

#include <vcl.h>

#pragma hdrstop

#include "unit1.h"

#pragma package(smart_init)

#pragma resource "*.dfm"

// сюди можуть поміщатися додаткові директиви препроцесора (зокрема, include),

// що не включаються у файл автоматично

// оголошення об'єкту форми Form1

TForml *Forml;

//-------------------------------------------------------------------

// виклик конструктора форми Form1

__fastcall Tform1::Tform1(TComponent* Owner)

:TForm(Owner}

{

//сюди ви можете помістити оператори, які повинні виконуватися при створенні форми

}

//-------------------------------------------------------------------

//сюди можуть поміщатися оголошення типів і змінних доступ до яких з інших модулів //можливий тільки при дотриманні деяких додаткових умов;

//тут же повинні бути реалізації всіх функцій, оголошених в заголовочному файлі

// а також можуть бути реалізації будь-яких додаткових функцій, не оголошених раніше

void __fastcall Tform1::Button1Click(TObject *Sender)

{

Close ();

}

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

Після директив препроцесора розташовано опис класу форми. Ім'я класу форми — Tform1. Клас містить три розділи: __published — відкритий розділ, що містить оголошення розміщених на формі компонентів і обробників подій в них, private — закритий розділ класу, і public — відкритий розділ класу. В даному випадку в розділі published можна бачити оголошення покажчиків на два компоненти: компонент Button1 типу TButton і компонент Label1 типу TLabel. Там же розташовано оголошення функції Button1Click — створеного обробника події клацання на кнопці Button1. Все, що є в розділі__published, C++Builder включає в нього автоматично в процесі проектування форми. А в розділи private і public можна додавати свої оголошення типів, змінних, функцій. Те, що оголошено в розділі public, буде доступне для інших класів і модулів. Те, що оголошене в розділі private, доступно тільки в межах даного модуля. Єдине, що С++Builder самостійно включив в розділ public, це оголошення (прототип) конструктора форми Tform1.

Після оголошення класу слідує структура PACKAGE, яка включається у файл автоматично і яке ми зараз розглядати не будемо.

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

Імена файлам модулів C++Builder дає за умовчанням: для першого модуля ім'я – Unit1, для другого - Unit2, і так далі

Контрольні питання:

1. Які основні типи файлів створює C++Builder в процесі проектування програми? Поясніть їх призначення.

2. Для чого призначені файли наступних типів .~cр, .~df, .~cp, .~h?

3. Що потрібно зробити для включення в .ехе файл спеціальних динамічних бібліотек?

4. Для чого використовують Депозитарій?

5. Які особливості збереження проекту у ІСР C++Builder?

6. Що зберігається у головному модулі проекту?

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]