Borland C++ Builder - Программирование и комп-ры - Скачать бесплатно
Оглавление
Работа в Borland C++ Builder 3
Среда разработки C++ Builder 3
Компоненты C++ Builder 3
Свойства компонентов 4
События 4
Методы 5
Менеджер проектов 5
Создание приложений в C++ Builder 6
Компоненты Borland C++ Builder 8
Выбор компонентов для групповых операций 8
Установка разделяемых свойств компонентов 8
Изменение размера компонентов 8
Выравнивание компонентов 9
Работа с базами данных в Borland C++ Builder. 11
Компонент TDataSource 11
Компонент TTable 12
Компонент TField 15
Компонент TDBGrid 17
Поставка приложений, созданных с помощью С++ Builder 19
Поставка исполняемых файлов 19
Установка и настройка Borland Database Engine 19
Установка дополнительных компонентов приложения 21
Способы создания дистрибутивов 22
Создание дистрибутивов с помощью InstallShield Express 23
Список использованной литературы 27
Работа в Borland C++ Builder
Среда разработки C++ Builder
C++ Builder представляет собой SDI-приложение, главное окно которого
содержит настраиваемую инструментальную панель (слева) и палитру
компонентов (справа). Помимо этого, по умолчанию при запуске C++ Builder
появляются окно инспектора объектов (слева) и форма нового приложения
(справа). Под окном формы приложения находится окно редактора кода.
Формы являются основой приложений C++ Builder. Создание пользовательского
интерфейса приложения заключается в добавлении в окно формы элементов
объектов C++ Builder, называемых компонентами. Компоненты C++ Builder
располагаются на палитре компонентов, выполненной в виде многостраничного
блокнота. Важная особенность C++ Builder состоит в том, что он позволяет
создавать собственные компоненты и настраивать палитру компонентов, а также
создавать различные версии палитры компонентов для разных проектов.
Компоненты C++ Builder
Компоненты разделяются на видимые (визуальные) и невидимые (невизуальные).
Визуальные компоненты появляются во время выполнения точно так же, как и во
время проектирования. Примерами являются кнопки и редактируемые поля.
Невизуальные компоненты появляются во время проектирования как пиктограммы
на форме. Они никогда не видны во время выполнения, но обладают
определенной функциональностью (например, обеспечивают доступ к данным,
вызывают стандартные диалоги Windows и др.)
Для добавления компонента в форму можно выбрать мышью нужный компонент в
палитре и щелкнуть левой клавишей мыши в нужном месте проектируемой формы.
Компонент появится на форме, и далее его можно перемещать, менять размеры и
другие характеристики.
Каждый компонент C++ Builder имеет три разновидности характеристик:
свойства, события и методы.
Если выбрать компонент из палитры и добавить его к форме, инспектор
объектов автоматически покажет свойства и события, которые могут быть
использованы с этим компонентом. В верхней части инспектора объектов
имеется выпадающий список, позволяющий выбирать нужный объект из имеющихся
на форме.
Свойства компонентов
Свойства являются атрибутами компонента, определяющими его внешний вид и
поведение. Многие свойства компонента в колонке свойств имеют значение,
устанавливаемое по умолчанию (например, высота кнопок). Свойства компонента
отображаются на странице свойств (Properties). Инспектор объектов
отображает опубликованные (published) свойства компонентов. Помимо
published-свойств, компоненты могут и чаще всего имеют общие (public),
опубликованные свойства, которые доступны только во время выполнения
приложения. Инспектор объектов используется для установки свойств во время
проектирования. Список свойств располагается на странице свойств инспектора
объектов. Можно определить свойства во время проектирования или написать
код для видоизменения свойств компонента во время выполнения приложения.
При определении свойств компонента во время проектирования нужно выбрать
компонент на форме, открыть страницу свойств в инспекторе объектов, выбрать
определяемое свойство и изменить его с помощью редактора свойств (это может
быть простое поле для ввода текста или числа, выпадающий список,
раскрывающийся список, диалоговая панель и т.д.).
События
Страница событий (Events) инспектора объектов показывает список событий,
распознаваемых компонентом (программирование для операционных систем с
графическим пользовательским интерфейсом, в частности, для Windows 95 или
Windows NT пре полагает описание реакции приложения на те или иные события,
а сама операционная система занимается постоянным опросом компьютера с
целью выявления наступления какого-либо события). Каждый компонент имеет
свой собственный набор обработчиков событий. В C++ Builder следует писать
функции, называемые обработчиками событий, и связывать события с этими
функциями. Создавая обработчик того или иного события, вы поручаете
программе выполнить написанную функцию, если это событие произойдет.
Для того чтобы добавить обработчик событий, нужно выбрать на форме с
помощью мыши компонент, которому необходим обработчик событий, затем
открыть страницу событий инспектора объектов и дважды щелкнуть левой
клавишей мыши на колонке значений рядом с событием, чтобы заставить C++
Builder сгенерировать прототип обработчика событий и показать его в
редакторе кода. При этом автоматически генерируется текст пустой функции, и
редактор открывается в том месте, где следует вводить код. Курсор
позиционируется внутри операторных скобок { ... }. Далее нужно ввести код,
который должен выполняться при наступлении события. Обработчик событий
может иметь параметры, которые указываются после имени функции в круглых
скобках.
Методы
Метод является функцией, которая связана с компонентом, и которая
объявляется как часть объекта. Создавая обработчики событий, можно вызывать
методы, используя следующую нотацию: ->, например:
Edit1->Show();
Отметим, что при создании формы связанные с ней модуль и заголовочный файл
с расширением *.h генерируются обязательно, тогда как при создании нового
модуля он не обязан быть связан с формой (например, если в нем содержатся
процедуры расчетов). Имена формы и модуля можно изменить, причем желательно
сделать это сразу после создания, пока на них не появилось много ссылок в
других формах и модулях.
Менеджер проектов
Файлы, образующие приложение - формы и модули - собраны в проект. Менеджер
проектов показывает списки файлов и модулей приложения и позволяет
осуществлять навигацию между ними. Можно вызвать менеджер проектов, выбрав
пункт меню View/Project Manager. По умолчанию вновь созданный проект
получает имя Project1.cpp.
По умолчанию проект первоначально содержит файлы для одной формы и
исходного кода одного модуля. Однако большинство проектов содержат
несколько форм и модулей. Чтобы добавить модуль или форму к проекту, нужно
щелкнуть правой кнопкой мыши и выбрать пункт New Form из контекстного меню.
Можно также добавлять существующие формы и модули к проекту, используя
кнопку Add контекстного меню менеджера проектов и выбирая модуль или форму,
которую нужно добавить. Формы и модули можно удалить в любой момент в
течение разработки проекта. Однако, из-за того, что форма связаны всегда с
модулем, нельзя удалить одно без удаления другого, за исключением случая,
когда модуль не имеет связи с формой. Удалить модуль из проекта можно,
используя кнопку Remove менеджера проектов.
Если выбрать кнопку Options в менеджере проектов, откроется диалоговая
панель опций проекта, в которой можно выбрать главную форму приложения,
определить, какие формы будут создаваться динамически, каковы параметры
компиляции модулей (в том числе созданных в Delphi, так как C++ Builder
может включать их в проекты) и компоновки.
Важным элементом среды разработки C++ Builder является контекстное меню,
появляющееся при нажатии на правую клавишу мыши и предлагающее быстрый
доступ к наиболее часто используемым командам.
Разумеется, C++ Builder обладает встроенной системой контекстно-зависимой
помощи, доступной для любого элемента интерфейса и являющейся обширным
источником справочной информации о C++ Builder.
Создание приложений в C++ Builder
Первым шагом в разработке приложения C++ Builder является создание проекта.
Файлы проекта содержат сгенерированный автоматически исходный текст,
который становится частью приложения, когда оно скомпилировано и
подготовлено к выполнению. Чтобы создать новый проект, нужно выбрать пункт
меню File/New Application.
C++ Builder создает файл проекта с именем по умолчанию Project1.cpp, а
также make-файл с именем по умолчанию Project1.mak. При внесении изменений
в проект, таких, как добавление новой формы, C++ Builder обновляет файл
проекта.
Проект или приложение обычно имеют несколько форм. Добавление формы к
проекту создает следующие дополнительные файлы:
. Файл формы с расширением .DFM, содержащий информацию о ресурсах окон
для конструирования формы
. Файл модуля с расширением .CPP, содержащий код на C++.
. Заголовочный файл с расширением .H, содержащий описание класса формы.
Когда вы добавляете новую форму, файл проекта автоматически обновляется.
Для того чтобы добавить одну или более форм к проекту , выберите пункт меню
File/New Form. Появится пустая форма, которая будет добавлена к проекту.
Можно воспользоваться пунктом меню File/New, выбрать страницу Forms и
выбрать подходящий шаблон из репозитория объектов.
Для того, чтобы просто откомпилировать текущий проект, из меню Compile
нужно выбрать пункт меню Compile. Для того чтобы откомпилировать проект и
создать исполняемый файл для текущего проекта, из меню Run нужно выбрать
пункт меню Run. Компоновка проекта является инкрементной (перекомпилируются
только изменившиеся модули).
Если при выполнении приложения возникает ошибка времени выполнения, C++
Builder делает паузу в выполнении программы и показывает редактор кода с
курсором, установленным на операторе, являющемся источником ошибки. Прежде
чем делать необходимую коррекцию, следует перезапустить приложение, выбирая
пункт меню Run из контекстного меню или из меню Run, закрыть приложение и
лишь затем вносить изменения в проект. В этом случае уменьшится вероятность
потери ресурсов Windows.
Компоненты Borland C++ Builder
Выбор компонентов для групповых операций
Для эффективной разработки пользовательских интерфейсов приложений C++
Builder нередко возникает необходимость в манипулировании компонентами на
формах. Большинство операций для манипулирования компонентами находятся в
меню Edit: К различным опциям этого меню следует обращаться после того, как
на форме вы ран один или несколько компонентов, свойства которых требуется
изменить.
Выбрать один компонент можно следующими способами:
. Выбрав с помощью мыши компонент на форме
. Выбрав имя компонента в селекторе объектов.
. Переходом к компоненту на форме, нажимая клавишу Tab.
Выбрать несколько компонентов можно следующими способами:
. Удерживая нажатой клавишу Shift, щелкнуть мышью на каждом компоненте.
. Нажать левую клавишу мыши и окружить нужные компоненты прямоугольным
контуром.
Установка разделяемых свойств компонентов
Большинство визуальных компонентов имеют общие свойства, (например,
Visible, Width, Left). Для установки одинаковых значений общих свойств для
нескольких компонентов необходимо выполнить следующие действия:
1. Выбрать несколько настраиваемых компонентов. При этом страница свойств
объектов будет отображать только те свойства, которые имеются у всех
выбранных компонентов.
2. Установить значения свойств, общих для выделенных компонентов.
Изменение размера компонентов
Изменение размера компонента можно проводить как при добавлении его на
форму, так и после этого.
При добавлении компонента следует выбрать его на палитре компонентов. Далее
нужно поместить курсор мыши на форму, нажать левую клавишу и перемещать
мышь, в результате чего на форме появится прямоугольник, изображающий
границы будущего компонента. Когда прямоугольник приобретет необходимые
размеры, нужно отпустить кнопку мыши.
Если перевести курсор мыши на один из появившихся вокруг компонента
маленьких черных квадратиков, курсор мыши изменяет форму. Перемещая этот
курсор и вместе с ним границу компонента, можно изменять его размеры.
Для изменения размеров нескольких компонентов следует выбрать их одним из
описанных выше способов. Далее нужно выбрать пункт меню Edit/Size. Появится
диалоговое окно Size. Выберите опции размера. Для точной установки размера
в пикселях можно ввести числа в поля Width и Height. Далее нужно нажать
кнопку OK.
Можно добавить несколько копий компонента одного типа, выбирая компонент из
палитры при нажатой клавише Shift. В этом случае вокруг компонента
появляется прямоугольник, окружающий этот компонент. После этого каждый
щелчок мышью на форме приводит к появлению на ней копии компонента.
Закончив режим многократного копирования, следует щелкнуть мышью на
инструменте выбора курсора (первая кнопка на палитре компонентов с
изображением стрелки).
Выравнивание компонентов
Для выравнивания компонентов на форме можно использовать следующие
комбинации клавиш:
|Shift + стрелки|Изменяет размер компонента на один пиксель в направлении|
| |выбранной стрелки |
|Shift + Ctrl + |Перемещает компонент на одну единицу сетки в направлении|
|стрелки |выбранной стрелки |
|Ctrl + стрелки |Перемещает компонент на один пиксель в направлении |
| |выбранной стрелки |
Можно также выровнять компоненты, используя пункт меню View/Alignment
Palette. Для этого нужно:
1. Выбрать компоненты для выравнивания.
2. Выбрать пункт меню View/Alignment Palette.
3. Выбрать нужную кнопку.
Можно выровнять компоненты, используя пункт меню Edit/Align. Для этого
нужно:
1. Выбрать компоненты для выравнивания.
2. Выбрать пункт меню Edit/Align. Появится диалоговое окно Alignment.
3. Выбрать нужную опцию и нажать на кнопку OK.
Можно изменить условия выравнивания компонент, используя пункт меню
Options/Environment. Для этого нужно:
1. Выбрать пункт меню Options/Environment. Диалоговое окно Environment
появится открытым на странице Preferences.
2. В группе Form designer можно выбрать следующие опции:
. Display grid - сделать сетку из точек на форме видимой для
выравниваемых компонентов
. Snap to grid - заставить левые и верхние стороны компонентов
расположиться на линиях сетки.
3. Для того, чтобы изменить расстояние между узлами сетки, нужно ввести
новые значения вместо имеющихся. Значение по умолчанию -- 8 пикселей по оси
X (по горизонтали) и по оси Y (по вертикали).
4. Нажать OK.
Работа с базами данных в Borland C++ Builder.
Используя Borland C++ Builder, можно создать приложения, работающие как с
однопользовательскими базами данных (БД), так и с серверными СУБД, такими
как Oracle, Sybase, Informix, Interbase, MS SQL Server, DB2, а также с ODBC-
источниками. Возможности C++ Builder, связанные с созданием приложений,
использующих базы данных, весьма обширны для того, чтобы описать их в одной
статье. Поэтому сегодня мы рассмотрим лишь простейшие возможности работы с
таблицами баз данных.
Набор данных в C++ Builder - это объект, состоящий из набора записей,
каждая из которых, в свою очередь, состоит из полей, и указателя текущей
записи. Набор данных может иметь полное соответствие с реально существующей
таблицей или быть результатом запроса, он может быть частью таблицы или
объединять между собой несколько таблиц.
Набор данных в C++ Builder является потомком абстрактного класса TDataSet
(абстрактный класс - это класс, от которого можно порождать другие классы,
но нельзя создать экземпляр объекта данного класса). Например, классы
TQuery, TTable и TStoredProc, содержащиеся на странице палитры компонентов
Data Access, - наследники TDBDataSet, который, в свою очередь, является
наследником TDataSet. TDataSet содержит абстракции, необходимые для
непосредственного управления таблицами или запросами, обеспечивая средства
для того, чтобы открыть таблицу или выполнить запрос и перемещаться по
строкам.
Компонент TDataSource
Компонент DataSource действует как посредник между компонентами TDataSet
(TTable, TQuery, TStoredProc) и компонентами Data Controls - элементами
управления, обеспечивающими представление данных на форме. Компоненты
TDataSet управляют связями с библиотекой Borland Database Engine (BDE), а
компонент DataSource управляет связями с данными в компонентах Data
Controls.
В типичных приложениях БД компонент DataSource, как правило, связан с одним
компоненом TDataSet (TTable или TQuery) и с одним или более компонентами
Data Controls (такими, как DBGrid, DBEdit и др.). Связь этого компонента с
компонентами TDataSet и DataControls осуществляется с использованием
следующих свойств и событий:
. Свойство DataSet компонента DataSource идентифицирует имя компонента
TDataSet. Можно присвоить значение свойству DataSet на этапе
выполнения или с помощью инспектора объектов на этапе проектирования.
. Свойство Enabled компонента DataSource активизирует или останавливает
взаимосвязь между компонентами TDataSource и Data Controls. Если
значение свойства Enabled равно true, то компоненты Data Controls,
связанные с TDataSource, воспринимают изменения набора данных.
Использование свойства Enabled позволяет временно разъединять
визуальные компоненты Data Controls и TDataSource, например, для того,
чтобы в случае поиска в таблице с большим количеством записей не
отображать на экране пролистывание всей таблицы.
. Свойство AutoEdit компонента DataSource контролирует, как инициируется
редактирование в компонентах Data Controls. Если значение свойства
AutoEdit равно true, то режим редактирования начинается
непосредственно при получении фокуса компонентом Data Controls,
связанным с данным компонентом TDataSet. В противном случае режим
редактирования начинается, когда вызывается метод Edit компонента
TDataSet, например, после нажатия пользователем кнопки Edit на
компоненте DBNavigator. · Событие OnDataChange компонента DataSource
наступает, когда происходит изменение значения поля, записи, таблицы,
запроса.
. Событие OnUpdateData компонента DataSource наступает, когда
пользователь пытается изменить текущую запись в TDataSet. Обработчик
этого события следует создавать, когда требуется соблюсти условия
ссылочной целостности или ограничения, накладываемые на значения полей
изменяемой базы данных.
Компонент TTable
Наиболее простым способом обращения к таблицам баз данных является
использование компонента TTable, предоставляющего доступ к одной таблице.
Для этой цели наиболее часто используются следующие свойства:
. Active - указывает, открыта (true) или нет (false) данная таблица.
. DatabaseName - имя каталога, содержащего искомую таблицу, либо
псевдоним (alias) удаленной БД (псевдонимы устанавливаются с помощью
утилиты конфигурации BDE, описание которой присутствует во многих
источниках, посвященных продуктам Borland, либо с помощью SQL
Explorer, вызываемого с помощью пункта меню Database/Explore). Это
свойство может быть изменено только в случае, если таблица закрыта (ее
свойство Active равно false), например:
Table1->Active = false;
Table1->DatabaseName = "BCDEMOS"
Table1->Active = true;
. TableName - имя таблицы.
. Exclusive - если это свойство принимает значение true, то никакой
другой пользователь не может открыть таблицу, если она открыта данным
приложением. Если это свойство равно false (значение по умолчанию), то
другие пользователи могут открывать эту таблицу.
. IndexName - идентифицирует вторичный индекс для таблицы. Это свойство
нельзя изменить, пока таблица открыта.
. MasterFields - определяет имя поля для создания связи с другой
таблицей.
. MasterSource - имя компонента TDataSource, с помощью которого TTable
будет получать данные из связанной таблицы.
. ReadOnly - если это свойство равно true, таблица открыта в режиме
"только для чтения". Нельзя изменить свойство ReadOnly, пока таблица
открыта.
. Eof, Bof - эти свойства принимают значение true, когда указатель
текущей записи расположен на последней или соответственно первой
записи таблицы.
. Fields - массив объектов TField. Используя это свойство, можно
обращаться к полям по номеру, что удобно, когда заранее неизвестна
структура таблицы:
Edit1->Text=Table1->Fields[2]->AsString;
Наиболее часто при работе с компонентом TTable используются следующие
методы:
. Open и Close устанавливают значения свойства Active равными True и
False соответственно.
. Refresh позволяет заново считать набор данных из БД.
. First, Last, Next, Prior перемещают указатель текущей записи на
первую, последнюю, следующую и предыдущую записи соответственно,
например:
Table1->First();
while (!Table1->Eof)
{
//что-то делаем...
Table1->Next();
};
. MoveBy перемещает указатель на указанное число строк (оно может быть и
отрицательным) в пределах таблицы
. Insert, Edit, Delete, Append - переводят таблицу в режимы вставки
записи, редактирования, удаления, добавления записи соответственно.
. Post - осуществляет физическое сохранение измененных данных. Например:
Table2->Insert();
Table2->Fields[0]->AsInteger = 100;
Table2->Fields[1]->AsString =Edit1->Text;
Table2->Post();
. Cancel - отменяет внесенные изменения, не сохраненные физически.
. FieldByName - предоставляет возможность обращения к данным в полях по
имени поля:
S=Table1->FieldByName("area")->AsString;
. SetKey переключает таблицу в режим поиска.
. GotoKey начинает поиск строки, значение Fields[n] которой равно
выбранному, где n - номер колонки таблицы, начиная с 0:
Table1->SetKey();
Table1->Fields[0]->AsString=Edit1->Text;
Table1->GotoKey();
. SetRangeStart, SetRangeEnd, ApplyRange позволяют выбрать нужные строки
на основе диапазона значений какого-либо поля.
Table1->SetRangeStart();
Table1->Fields[0]->AsString = Edit1->Text;
Table1->SetRangeEnd();
Table1->Fields[0]->AsString = Edit2->Text;
Table1->ApplyRange();
. FreeBookmark, GetBookmark, GotoBookmark- позволяют создать помеченную
строку в таблице и затем вернуться к ней позже. Методы Bookmark
используют класс TBookmark. Метод GetBookmark устанавливает закладку
на текущей cтроке таблицы. GotoBookmark осуществляет перемещение в
таблице к строке, ранее отмеченной закладкой. Метод FreeBookmark
используется для уничтожения объекта типа TBookmark:
TBookmark Marker =Table1->GetBookmark();
Table1->GotoBookmark(Marker);
Table1->FreeBookmark(Marker);
Cобытия компонента TTable позволяют строить и контролировать поведение
приложе ий БД. Например, событие BeforePost наступает перед вставкой или
изменением записи, событие AfterPost - после сохранения вставленной или
измененной записи, событие AfterDelete - после удаления записи и т.д.
Чтобы внести компонент TTable в форму, нужно выполнить следующее:
1. Используя страницу Data Access палитры компонентов, разместить компонент
TTable на форме или в модуле данных.
2. Свойству DatabaseName присвоить имя каталога, где находится БД, либо
псевдо има БД.
3. Свойству TableName присвоить имя таблицы или выбрать таблицу из
выпадающего списка.
4. Внести в форму компонент DataSource и установить значение свойства
DataSet равным имени компонента TTable.
5. Внести компоненты Data Controls и связать их с компонентом DataSource
для того, чтобы отобразить на экране данные из таблицы БД.
Компонент TField
Объекты класса TField являются свойством объекта TDataSet (напомним, что
некоторые свойства объектов сами являются объектами с их собственными
наборами свойств, и TField - один из них).
Свойство Fields объекта типа TDataSet позволяет обращаться к отдельным
полям набора данных. Свойство Fields является массивом или набором объектов
TField, динамически создающимся во время выполнения приложения. Элементы
массива соответствуют колонкам таблицы.
Объект TField не делает никаких предположений относительно типов данных, с
которыми он связан. Он имеет несколько свойств, позволяющих установить или
вернуть обратно значения поля, например, AsString, AsBoolean, AsFloat,
AsInteger. Наиболее часто используются свойства Text (cтрока текста,
выводимого в связанный с данным полем интерфейсный элемент) и FieldName
(имя поля базы данных).
Fields Editor позволяет создать так называемый статический список полей
таблицы, добавляемых к описанию класса формы. Когда впервые используются
такие компоненты TDataSet, как компонент TTable или TQuery, список полей
для них динамически генерируется в процессе выполнения приложения на основе
имеющихся столбцов таблиц или результатов SQL-запроса. Fields Editor
позволяет определить и затем модифицировать статический список компонентов
Field на этапе проектирования приложения. При внесении колонок с
использованием Fields Editor для каждого из полей, добавленных к TDataSet,
возникают объекты TField, после чего можно
|