Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка Builder 2курс.doc
Скачиваний:
4
Добавлен:
16.11.2019
Размер:
1.26 Mб
Скачать

6. 7. Ход выполнения работы

Задание №1

1. Создайте на диске каталог

2. Запустите утилиту BDE Administrator. При активной вкладке Databases в меню  Object выберите команду New.

В появившемся окне в раскрывающемся списке выбирают  тип создаваемой БД. Для таблиц Paradox оставьте без изменений STANDARD и нажмите кнопку ОК.

В левом поле окна администратора БД появится строка с именем STANDARD, измените это имя, например, на lab_1.

В правом поле указаны параметры БД. Измените параметр PATH, который указывает маршрут доступа к каталогу , в котором располагается БД. Запомните определение псевдонима, выбрав команду Apply.

Закройте окно администратора.

3.         

Скопируйте таблицы-примеры БД С++Builder из папки Data: Biolife.db, Customer.db,  Orders.db, Items.db, Parts.db , включая все индексные файлы, файлы мемо  этих таблиц  или скопируйте всю папку Data в созданную папку.

4. Запустите утилиту Database Desktop. После запуска утилиты установите умалчиваемый псевдоним. Для этого в меню File  выберите команду Working Directory. В раскрывающемся списке выберите имя псевдонима.

5. Откройте таблицу Customer, выбрав команду Tables ->Restructure. Просмотрите типы данных полей, размер, используемый индекс. Закройте окно  DBD.

6. Запустите C++Builder. Поместите на форму объект TTable, TDataSource (вкладка Data Access), TDBGrid. (вкладка Data Controls).

7. Теперь задайте свойства объекта TTable. Задайте в качестве значения свойства DatabaseName  используемый псевдоним.

8. Задайте в качестве значения свойства TableName имя таблицы (выберите из раскрывающегося списка в конце строки), например, Customer. Установите значение Name tblCustomer, True свойству Active

9. Подключите свойство DataSet элемента управления TDataSource к  tblCustomer (выберите из списка) .

10. Подключите свойство DataSource объекта TBDGrid  к DataSource1 в окне Инспектора объектов на вкладке Свойства.

11. Добавьте к форме элемент управления TDBNavigator. Чтобы связать этот элемент управления с циклом, нужно присвоить его свойству DataSource  значение DataSource1.

12. С помощью свойства Visible Buttons элемента TDBNavigator отключите все функциональные возможности, кроме переход к первой записи, следующей, предыдущей, последней.

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

 

 

 

Задание №2

1. Откройте  новое  приложение.

2. Выберите в меню File команду New и щелкните по компоненту Data Module, присвойте значениеDMod свойству Name.

3. Сохраните программу. Запишите модуль Unit1 под именем Main.cpp и Unit2 – под именем DMod1.cpp.

4. Щелкните левой кнопкой мыши по форме Form1, откройте меню File, выберите команду IncludeUnit Header . В диалоговом окне выберите DMod1  и щелкните на кнопке ОК.

Этот способ позволяет автоматически вставить директиву #include

#include <vcl.h>

#pragma hdrstop

 

#include "Main.h"

#include "Dmod1.h"

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

#pragma package(smart_init)

#pragma resource "*.dfm"

5. Поместите в окне DMod компоненты TTable, TDataSource.

6. Определите свойства этих объектов (см. задание №1). Свойству TableName присвойте значение BioLife.

7. Щелкните правой кнопкой мыши на объекте TTable и выберите пункт контекстного меню Fields Editor (Редактор полей). Щелкните правой кнопкой на Fields Editor и откройте диалоговое окно Add Fields (Добавление полей). Убедитесь в том, что в этом поле выбраны все поля. Щелкните на кнопке ОК.

8. Теперь Fields Editor содержит список всех полей таблицы BioLife. Перетащите эти поля на форму.Вид формы может выглядеть как на рис. 2

9. Добатьте в форму компонент TDBNavigator.

 

10. Сохраните приложение и запустите на выполнение.

 

Задание №3

1. Откройте приложение, созданное в задании №1.

2. В нижней части формы поместите четыре кнопки. Задайте последовательно для каждой из кнопок следующие значения для свойства Name:  vValue, bAsString,  bAsInteger, bAsFloat. ; для свойства Caption: Value, As String, As Integer,  As Float.

3. В окне Инспектора Объектов перейдите на вкладку Events(события). Для каждой кнопки сформируйте процедуры обработки нажатия кнопки. Например, :

void __fastcall TForm1::bValueClick(TObject *Sender)

{

  ShowMessage(tblCustomer->FieldByName("TaxRate")->Value;

}

void __fastcall TForm1::bAsStringClick(TObject *Sender)

{

  ShowMessage(tblCustomer->FieldByName("TaxRate")->AsString);

}

void __fastcall TForm1::bAsIntegerClick(TObject *Sender)

{

  int i = tblCustomer->FieldByName("TaxRate")->AsInteger;

  ShowMessage(static_cast<AnsiString>(i));

}

void __fastcall TForm1::bAsFloatClick(TObject *Sender)

{

  float f = tblCustomer->FieldByName("TaxRate")->AsFloat;

  ShowMessage(static_cast<AnsiString>(f));

}

4. Сохраните приложение и запустите на выполнение. Сделайте выводы.

Задание №4

1. Запустите утилиту Database Desktop (DBD

2. Создайте таблицу Country_r  со следующими полями: Name, Capital (столица), Kontinent(континент). Для поля Name установите свойства key (+). Это будет первичным индексом. Проиндексируйте по полю Kontinent . Для этого в списке Table properties выберите Secondary Indexes нажмите кнопку Define и установите индекс по нужному полю. Индекс сохраните.  Введите данные на русском языке.Закройте таблицу.

3. Откройте новое приложение. Поместите на форму компоненты TTable, TDataSource, TDBrid. Свяжите компонент TTable c таблицей Country_r. Определите все остальные свойства так, чтобы в сетке появились записи.

4. Поместите на форме в верней части панель, задайте ее свойству Align значение alTop, а для объекта TDBGrid установите в свойстве Align значение alClient.

5. На панель поместите компонент TEdit  и создайте для него событие OnChange со  следующим программным кодом:

void __fastcall TForm1::Edit1Change(TObject *Sender)

{

   Table1->FindNearest(OPENARRAY(TVarRec,(Edit1->Text)));

}

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

void TDMod::Country_rSearch(AnsiString S)

{

  AnsiString Temp(tblCountry_r->IndexName->IndexName);

tblCountry_r->IndexName=”Имя_втор_индекса”;

tblCountry_r->FindNearest(OPENARRAY)TVarRec, (S)));

tblCountry_r->IndexName=Temp;

}

6. Запустите программу. В процессе ввода значения в элементе управления Edit1 автоматически выполняется пошаговый поиск.

Задание №5

1. Откройте новое приложение. Поместите на форму компоненты TTable, TDataSource, TDBGrid. Свяжите компонент TTable c таблицей Country_r или  Country. Свяжите компоненты. Для компонента TTable определите свойство Name tblCountry (чтобы можно было использовать приведенный ниже код) и в свойстве Active оставьте значение False

 

2. Поместите на форме в верней части панель -компонент TPanel, задайте ее свойству Align значение alTop, а для объекта TDBGrid установите в свойстве Align значение alClient.

3. Для события формы OnCreate поместите код открытия таблицы:

void __fastcall TForm1::FormCreate(TObject *Sender)

{

  tblCountry->Open();

}

 

4. Поместите на панель объект TCheckBox и задайте значение Filter в свойстве Captiоn, в свойстве Name установите значение FFilter.  Свяжите следующий метод с событием OnClick для флажка:Для этого перейтите на вкладку Events инспектора объектов и щелкните событие OnClick

void __fastcall TForm1::FFilterClick(TObject *Sender)

{

tblCountry->Filtered=FFilter->Checked;

}

5. Перейдите на вкладку Events (События) объекта TTable  и свяжите следующую программу с событием OnFilterRecord:

void __fastcall TForm1::tblCountryFilterRecord(TDataSet *DataSet,

      bool &Accept)

{

Accept=tblCountry->FieldByName("Continent")->AsString==DBEdit1->Text;

}

6. Чтобы поле TDBEdit  содержало значение текущей записи, нужно установить в свойстве DataSource DataSource1, в свойстве DataField выберите из списка в конце строки значение Continent.

7. Поместите на панель кнопку TButton. Установите в свойстве Name  значение FFindNext,  а в свойстве Caption  значение Find Next. Для события OnClick поместите код :

void __fastcall TForm1::FFindNextClick(TObject *Sender)

{

  tblCountry->FindNext(); 

}

8. Запустите программу на выполнение. Проверьте действие фильтра.