Файл Uint.h

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

#ifndef Unit1H

#define Unit1H

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

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

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

class TOneForm: public TForm

{

__published: // IDE-managed Components

TButton *Button1;

void __fastcall Button1Click(TObject *Sender);

private: // User declarations

public: // User declarations

__fastcall TOneForm(TComponent* Owner);

};

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

extern PACKAGE TOneForm *OneForm;

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

#endif

Дадим необходимые комментарии к тексту заголовочного файла. Первые две строки и последняя строка файла содержат директивы условной компиляции:

#ifndef Unit1H

#define Unit1H

#endif

Здесь они нужны для того, чтобы исключить повторную компиляцию заголо­вочного файла при его повторном включении в один и тот же программный файл. Это случается в сложных проектах, когда программные модули исполь­зуют друг друга.

Директива #ifndef (от английского if not defined — если не объявлен) проверя­ет, не была ли объявлена константа UnitlH. Если такое объявление уже было, компилятор пропускает текст до строки с директивой #endif. В противном случае объявляется константа Unit1H и компилируется весь заголовочный файл.

Перейдем к следующим строкам заголовочного файла Unit1.h. Они содержат директивы включения необходимых заголовочных файлов библиотеки VCL:

#include <vcl\Classes.hpp>

#include <vcl\Controls.hpp>

#include <vcl\StdCtrls.hpp>

#include <vcl\Forms.hpp>

Встретив директиву #include, компилятор просто подставляет содержимое за­данного файла вместо нее и продолжает трансляцию модуля (т. е. фактически осуществляется компиляция всех записанных заголовочных файлов). Среда C++Builder формирует эти строки без вашего участия (в зависимости от ис­пользуемых компонентов), но, в принципе, список подключенных файлов можно изменять и вручную.

Далее в заголовочном файле объявлен класс формы. По умолчанию он назы­вается Tform1 и порожден от стандартного класса TForm. Помещенные на фор­му компоненты представлены полями формы. У нас на форме шесть компо­нентов, поэтому и полей в описании класса тоже шесть. Имена полей совпа­дают с именами компонентов, заданными в инспекторе объектов.

После полей идут заголовки методов обработки событий. Название каждого такого метода среда C++Builder формирует автоматически на основании имени компонента и имени генерируемого им события. Например, для кнопки Button1 метод обработки события OnClick называется ButtonlClick.

Обратите внимание, что поля, представляющие компоненты формы, и методы обработки событий получают атрибут видимости __ published (он принимается по умолчанию для всех наследников TForm). Благодаря этому вы можете рабо­тать с ними на визуальном уровне, например видеть их имена в инспекторе объектов. Поскольку среда C++Builder умеет понимать содержимое секции __published на этапе проектирования, никогда не модифицируйте эту секцию вручную, пользуйтесь визуальными инструментами: палитрой компонентов и инспектором объектов. Запомните:

· Когда вы помещаете на форму компоненты, среда C++Builder до­бавляет в описание класса соответствующие поля, а когда вы уда­ляете компоненты с формы, среда C++Builder удаляет их поля из описания класса.

· Когда вы определяете в форме или компонентах обработчики собы­тий, среда C++Builder определяет в классе соответствующие мето­ды, а когда вы удаляете весь код из методов обработки событий, среда C++Builder удаляет и сами методы.

Для вашего удобства в классе формы заранее объявлены пустые секции private и public, в которых вы можете размещать любые вспомогательные поля, мето­ды и свойства. Визуальная среда C++Builder их "не видит", поэтому с ними можно работать только на уровне исходного текста в редакторе кода.

Вы наверняка обратили внимание на ключевое слово __ fastcall в заголовках методов. Оно указывает, что при вызове данного метода параметры передают­ся через внутренние регистры процессора, а не как обычно — через стековую память. Это увеличивает быстродействие программы, поэтому все стандартные функции из библиотеки VCL объявлены таким образом.

После описания класса объявлена ссылка на объект данного класса, это необ­ходимо для того, чтобы использовать объект класса в других программных модулях.

extern PACKAGE TOneForm *OneForm;

Н-файл определяет интерфейс программного модуля. Реализация интер­фейса выполняется в СРР-файле:


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: