44_______________________________________________Глава 1

Labell типа TLabel. Там же вы видите объявление функции ButtonlClick — вве-
денного пользователем обработчика события щелчка на кнопке Buttonl. Все, что
имеется в разделе _published, C++Builder включает в него автоматически в про-
цессе проектирования вами формы. Так что вам не приходится, как правило, рабо-
тать с этим разделом. А в разделы private и public вы можете добавлять свои объ-
явления типов, переменных, функций. То, что вы или C++Builder объявите в раз-
деле public, будет доступно для других классов и модулей. То, что объявлено в раз-
деле private, доступно только в пределах данного модуля. Как вы можете видеть,
единственное, что C++Builder самостоятельно включил в раздел public, это объяв-
ление (прототип) конструктора вашей формы TForml.

После объявления класса следует предложение PACKAGE, которое включает-
ся в файл автоматически и которое мы сейчас рассматривать не будем. После этого
вы можете разместить объявления типов, переменных, функций, к которым при
соблюдении некоторых дополнительных условий (см. раздел 1.6.5) будет доступ из
других модулей, но которые не включаются в класс формы.

Теперь рассмотрим текст файла реализации модуля. После автоматически
включенных в этот файл директив препроцессора следует тоже автоматически
включенное объявление указателя на объект формы Formi, а затем — вызов кон-
структора 4эормы. Тело соответствующей функции пустое, но вы можете включить
в него какие-то операторы. После этого размещаются описания всех функций, объ-
явленных в заголовочном файле. Вы можете также размещать здесь объявления
любых типов, констант, переменных, не объявленных в заголовочном файле, и
размещать описания любых функций, не упомянутых в заголовочном файле.

Имена файлам модулей C++Builder дает по умолчанию: для первого модуля
имя равно Uniti, для второго Unit2 — и т.д.

Хороший стиль программирования «——----^~»-»»«^™-^«,^,~»>^~«——..«»»~»««_,.

Если в вашем приложении несколько модулей, сохраняйте их файлы под какими-то осмыс-
ленными именами, изменяя тем самым имена модулей, заданные C++Builder по умолча-
нию. Вам проще будет работать с осмысленными именами, а не с именами Uniti, Unit2,
Unit3, которые ни о чем не говорят.

1.6.5 Области видимости и доступ к объектам, переменным
и функциям модуля

1.6.5.1 Пример модуля, содержащего объекты и процедуры

Теперь посмотрим, как можно вводить в модуль переменные, функции и осу-
ществлять к ним доступ. Ниже приведен текст кода модуля, в котором на форме
размещены два компонента: кнопка Buttonl типа TButton и метка Labell типа
TLabel. Кроме того, в модуле введен обработчик события, связанного со щелчком
пользователя на кнопке, и в разных местах модуля введены переменные и функ-
ции, чтобы можно было видеть, как получить к ним доступ.

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

//—————————————————————-

ttifndef UnitlH

#define UnitlH

//———————————————————————-

ttinclude <Classes.hpp>
«include <Controls.hpp>
«include <StdCtrls.hpp>
«include <Forms.hpp>
//———————————————————————-

class TForml : public TForm
(                                                      ^       .