Занятие первое


Составные части среды
Создание и настройка нового проекта

Итак, вам требуется быстро научиться созданию приложений с использованием пакета Borland C++ Builder, и, как водится, багаж знаний языка Cи++ у вас уже есть, но совершенно нет времени на чтение толстых мудреных книжек. Если это так, то в моих силах вам помочь. И самое первое, что вам потребуется, - короткое занятие по работе в среде разработчика и созданию нового проекта.

Для понимания дальнейшей информации вам также важно знать, что проект в C++ Builder состоит из форм и модулей. Форма - это любое окно программы: простое окно, форма ввода или диалоговая панель. Сам файл формы представляет собой файл с расширением DFM, в котором в виде ресурсов хранится изображение формы и ее свойства. Модуль - это файл с исходным текстом на языке Cи++. Когда создается форма, к ней автоматически добавляется свой модуль, управляющий поведением и отображением формы. Правда, модули могут создаваться и без привязанных к ним форм.

Составные части среды

Среда Borland C++ Builder состоит из нескольких не связанных между собой окон. В каждый момент времени могут быть открыты сразу несколько окон или же одно главное окно. Это весьма удобно, потому что в среде C++ Builder столько окон, что легко в них потеряться, если открыть их все одновременно. Главное окно состоит из трех основных областей: области меню, области кнопок быстрого доступа и области палитры компонентов.

В свою очередь, кнопки на области быстрого доступа разбиты на три группы: открытия и сохранения файлов и проектов; группы работы с модулями и формами; группы запуска и отладки.

Надо отметить, что любая кнопка панели быстрого доступа имеет соответствующий ей пункт в главном меню и служит лишь для ускорения работы.

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

Поскольку Borland C++ Builder создает программы из компонентов, как из стандартных кубиков, придется подогнать "кубики" под нужды программиста. Для этого требуется настроить свойства компонентов через окно инспектора свойств (Object Inspector). Данные в нем представляются в виде таблицы из двух колонок. В левой содержатся названия всех свойств того компонента, который выделен в текущий момент. Правая колонка показывает значение свойств.

Если свойство может быть отредактировано, то программист щелкает на изменяемом значении и подставляет новое. Если свойство может быть отредактировано альтернативным способом, то в правой стороне от значения возникает кнопка с определенным значком, которую следует нажать. Если значение для свойства можно получить из раскрывающегося списка, на кнопке появится стрелка. Если для свойства имеется диалоговая панель настройки, то кнопка будет содержать значок многоточия. В дальнейшем, когда мы с вами будем писать программы из различных компонентов, мы подробнее рассмотрим их параметры и возможные значения. Помимо свойств с помощью инспектора свойств можно редактировать и обработчики событий, привязанные к событиям того или иного компонента.

Окно редактора исходного текста позволяет одновременно редактировать несколько файлов и переключаться между ними с помощью закладок. В нижней части окна редактирования имеется панель, в которой показываются сообщения об ошибках и предупреждения, получаемые во время компиляции (рис. 3).

Следует знать, что хотя бы один редактируемый файл должен быть открыт. Если закрыть все файлы с исходным текстом, то текущий проект также будет автоматически закрыт.

Создание и настройка нового проекта

При запуске C++ Builder автоматически создает новый проект. Если надо открыть новый проект вручную, можно либо выбрать из меню команду File·New Application, либо вызвать из меню командой File· New... диалоговую панель New Items и переключиться на закладку Projects. Под ней собраны несколько мастеров создания типовых приложений Windows: однооконного, многооконного, отвечающего требованиям Windows 95 Logo и просто мастер создания программ.

На следующем этапе проект необходимо настроить, т. е. указать необходимые опции компиляции и сборки проекта вместе с некоторой дополнительной информацией. Чаще всего вам не придется что-либо изменять, потому что по умолчанию проект настроен правильно. Однако неизвестно, когда и что может понадобиться в будущем. Поэтому разберем самые важные опции настройки. Они все собраны в диалоговой панели Project Options, вызываемой командой меню Options·Project. Настраивая проект, передвигайтесь от закладки к закладке слева направо, изменяя опции. Последовательные действия не дадут вам забыть или пропустить важные моменты при настройке. Рассмотрим последовательно имеющиеся закладки.

Forms

Здесь собраны все данные о формах, используемых в проекте, и порядке их создания:

MainForm - форма, которая создается самой первой и таким образом становится главной формой программы;

Auto-create forms - список всех форм, которые автоматически создаются при запуске приложения;

Available forms - имеющиеся в проекте формы, которые программист должен создавать и вызывать автоматически.

Между двумя последними списками имеются кнопки со стрелками, нажимая на которые вы можете переносить формы из одного списка в другой. Резон для отказа от автоматического создания формы простой: если у вас в приложении есть формы, которые вряд ли будут вызваны вообще, то есть ли смысл держать их в памяти? Уж коли они понадобятся, вы сможете создать и показать их сами, написав пару строчек на языке Cи++. К тому же это просто экономит место в памяти компьютера.

Application

Это чисто вспомогательная закладка, задающая необязательные параметры:

Title - задает надпись, которая появляется под пиктограммой приложения, если его минимизировать;

Help file - определяет имя файла подсказки для приложения;

Icon - пиктограмма для создаваемого приложения.

Cи++

Настройки опций языка Cи++ производятся опциями этой закладки:

Speed settings - автоматически настраивает опции компилятора и редактора связей так, чтобы проект выполнялся максимально быстро; различается для отладочного варианта (Debug) и для окончательного (Release);

Precompiled headers - определяет, использовать ли прекомпилируемые заголовки, и если да, то кэшировать ли их на диске;

Debugging - опции настройки проекта для отладки:

- Debug information - включение отладочной информации в проект;
- Line number information - включение в проект информации о номерах строк в исходном тексте;
- Automatic register variables - автоматическое присвоение регистровых переменных; отключается лишь в том случае, если в проекте используется ассемблерный код, чтобы избежать путаницы с регистрами процессора;
- Disable inline expansion - запрет inline-подстановки методов, дабы отладчик показывал правильную информацию.

Опции Compiling и Code optimization лучше не трогать, если только вы не являетесь специалистом по методам оптимизации.

Pascal

Под этой закладкой собраны все опции, которые характерны для пакета Borland Delphi. Они не понадобятся вам, если только вы не собираетесь компилировать в C++ Builder файлы на языке Object Pascal или подключать к проекту формы и модули, написанные для Delphi. Если вы не знаете языка Паскаль, то эти опции, скорее всего, вам все равно ничего не скажут.

Linker

В разработке программ закладка Link очень важна. От нее зависит, что вы получите после компиляции. Поэтому внимательно следите за правильностью установки предлагаемых ею опций:

Application target - управляя этими кнопками, вы получаете либо EXE-файл, либо динамическую библиотеку DLL;

Application type - получаемая программа будет либо графической, либо консольной;

Map file - управляет генерацией map-файла;

Linking - опции настройки редактора связей, среди которых:

- Use incremental linker - запускает вместо обычного редактора связей инкрементальный ILINK32, значительно ускоряющий сборку проекта;

- In-memory .EXE - при включенной опции C++Builder не создает дискового файла после сборки, а проделывает все операции в оперативной памяти, что также значительно ускоряет сборку проекта, но EXE-файла вы не получите, кроме того, в среде Windows 95 такая возможность не работает;

- Show warnings - включает или выключает выдачу предупреждающих сообщений компилятора и редактора связей, однако выдачей отдельных предупреждений можно управлять лишь через опции в файле проекта с расширением MAK;

- Include debug information - включает отладочную информацию в готовую программу либо делает из нее отдельный файл;

- Link debug version of VCL - связывает вашу программу с отладочной версией библиотеки VCL, позволяя, таким образом, отладчикам проходить внутрь VCL;

Опции Stack sizes трогать не требуется, поскольку они имеют стандартные для EXE-файла настройки и вряд ли вам это нужно.

Directories/Conditionals

Заключительная закладка служит для настройки путей, каталогов и условных директив:

Directories - определяет пути к линкуемым библиотекам и заголовочным файлам;

Conditionals - здесь через точку с запятой перечисляются все те определения, которые вы обычно делаете в исходном тексте директивами препроцессора #define; директива типа #define number 13 здесь будет выглядеть как number=13;

Pascal unit aliases - существует для обратной совместимости между текущими именами модулей предыдущей и настоящей версий Delphi; задается как <старое имя>=<новое имя>; не стоит трогать эти настройки, если только вы не работаете с Delphi давно и обладаете хорошими знаниями среды.

Default

Последнее, на что следует обратить внимание, так это на отмечаемую кнопку Default, которая есть на каждой закладке опций проекта. Если ее отметить, то все заданные на этой страничке настройки станут глобальными, т. е. будут выставляться каждый раз, когда вы создаете новый проект.

Репозитарий

Знайте, что в C++ Builder имеется хранилище объектов, в котором находятся заготовки форм, модулей, приложений и т. д. Использование этого репозитария дает возможность не начинать каждый раз работу "с нуля", поскольку вы можете выбрать готовый каркас как базу для нового проекта. Неплохо, если вы заберетесь в настройки этого хранилища командой Options·Repository и проверите их.

На самом деле нас интересует следующий момент. Из левого списка Pages выберите Forms и посмотрите в нижнюю часть диалоговой панели. Там располагаются две отмечаемые кнопки: New Form и Main Form. Если в правом списке имеющихся в репозитарии форм выбрать одну и отметить кнопку New Form, она становится новой формой по умолчанию, т. е. каждый раз, когда вы создаете новую форму, вы получаете именно эту форму. Если отметить форму кнопкой Main Form, то она будет создаваться каждый раз, когда вы начинаете новый проект, и будет в нем главной формой. Примерно такая же опция имеется и для задания проекта по умолчанию. Укажите Projects в левом списке, и вы увидите, что в низу диалоговой панели имеется отмечаемая кнопка New Project. Если отметить ею какую-нибудь заготовку проекта, он станет проектом по умолчанию, т. е. будет вызываться каждый раз при создании нового пустого проекта или вызове команды File·New Application. Подобные настройки хранилища полезны, когда вы создаете сложные проекты с единым интерфейсом и не желаете мириться с тем, что делает для вас C++ Builder.

Менеджер проектов

Важным элементом в работе над проектом является менеджер проектов (Project Manager). Его можно вызвать командой View·Project Manager. Менеджер проектов служит для добавления и исключения файлов проекта. Интерфейс его очень прост и состоит из панели со списком файлов проекта и командных кнопок.

Хотите добавить файл в проект - нажимайте кнопку со знаком "плюс", хотите удалить файл - давите на "минус". Если указать на файл формы и затем нажать на кнопку View Form, будет открыта указанная форма. То же самое можно сделать для модуля кнопкой View Unit. Кнопкой Project Options вызывается уже знакомая нам диалоговая панель опций проекта. Последняя кнопка Update обновляет данные в окне менеджера проектов по тем данным, которые имеются в главном файле проекта. Вряд ли вы с этим столкнетесь, но знать не мешает.

Начальный этап проекта

Вооруженные знаниями о среде C++ Builder, мы можем приступить к реализации любого проекта. Идеология этого продукта требует, чтобы разработка велась по следующим этапам:

Создание нового файла проекта и его настройка.
Создание форм проекта со всеми элементами интерфейса.
Подключение обработчиков событий для каждого из элементов интерфейса.
Сборка и отладка проекта.

Поскольку первый этап мы с вами успешно изучили, то перейдем сразу же ко второму.

Вы уже знаете, как размещать компоненты на формах. Но разместить - это еще не все, важно разместить правильно. Поэтому в C++ Builder есть возможности выравнивания компонентов относительно формы и друг друга. Удобнее всего делать это, открыв окно палитры выравнивания.

Чтобы выровнять компоненты, их нужно выделить и нажать на палитре выравнивания кнопку, обозначающую требуемую операцию.

Скажем несколько слов о том, как выделять компоненты. Выделение единичного компонента не представляет трудности - просто нужно щелкнуть на нем мышью. А вот для выделения сразу нескольких компонентов нужно щелкнуть на них мышью, удерживая нажатой клавишу . Внешний вид выделенных компонентов отличается. Если компонент выделен один, то у него по краям появляются черные квадратики, перетаскивая которые можно изменять размер компонентов. Если выделенных компонентов несколько, то квадратики по углам становятся серыми.

Когда размещение компонентов закончено, заблокируйте их командой Edit·Lock controls. Это предотвратит их случайный сдвиг и изменение размера. Выделенный заблокированный компонент имеет по углам серые квадратики в черном обрамлении.

На следующем занятии мы перейдем к изучению обработчиков событий и их написанию.