Задание№2

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

2. Откройте окно модуля данных. Поместите на него компоненты TQuery, TDataSourse. Присвойте модулю данных имя DMod.

3. Установите в свойстве Name компонента TQuery значение CountryQuery.

4. Установите в свойстве DataSet компонента TDataSource значение CountryQuery, в свойстве Name –значение CountrySource.

 
 



5. В основную форму поместите компонент TPanel. На панели разместите пять кнопок компонента TBitBtn с соответствующими именами :bbLoad, bbLoad2, bbpickA, bbPickB, bbPickC и подписями: Load, Load2, A, B, C. Чтобы поместить на кнопку графическое изображение надо воспользоваться свойством Glyph, щелкнуть в конце строки свойства и открыть окно Picture Editor, затем в окне редактора нажать кнопку Load, загрузить нужное изображение из папки Borland Shared\Images\Buttons.

6. Ниже разместите объект TDBGRid и объект TOpenDialog.

7. В свойстве DataSource объекта TDBGrid выберите из списка значение DMod->CountryQuery.

8. Для объекта TOpenDialog в свойстве Filter с помощью редактора введите имя фильтра SQL и сам фильтр - *.txt (или любое расширение, которое вы будете использовать для текстовых файлов с инструкцией SQL) В результате в списке будут отображаться только файлы с расширением *.txt.

9. С помощью программы Блокнот создайте два текстовых файла с расширением .txt :

Select * from country where Name like '%ia';

 

Select * from country where name like '%c%';

 

10. В модуле данных в редакторе кода поместите методы RunQuery RunQuery2, позволяющие загрузить файлы с диска.

void TDMod::RunQuery(TStringList *StringList)

{

CountryQuery->Close();

CountryQuery->SQL = StringList;

CountryQuery->Open();

}

 

void TDMod::RunQuery2(AnsiString S)

{

CountryQuery->Close();

CountryQuery->SQL->Clear();

CountryQuery->SQL->LoadFromFile(S);

CountryQuery->Open();

}

Функция LoadFromFile позволяет с помощью одной команды загрузить весь текстовый файл в процессе выполнения программы.

11. Также в модуле данных поместите метод выбора второй строки запроса в зависимости от выбранной кнопки : А, В, С.

void TDMod::SelectItems(AnsiString S)

{

CountryQuery->Close();

CountryQuery->SQL->Clear();

CountryQuery->SQL->Add("Select * from Country");

 

switch (S[1])

{

case 'A':

CountryQuery->SQL->Add("where name like 'A%'");

break;

 

case 'B':

CountryQuery->SQL->Add("where name like 'B%'");

break;

 

case 'C':

CountryQuery->SQL->Add("where name like 'C%'");

break;

}

CountryQuery->Open();

}

//******

Поместите объявление функций в заголовочный файл в раздел public

void SelectItems(AnsiString S);

void RunQuery(TStringList *StringList);

void RunQuery2(AnsiString S);

 

12. Создайте процедуры обработки события нажатия кнопок. Для кнопки bbLoad:

void __fastcall TForm1::bbLoadClick(TObject *Sender)

{

if (OpenDialog1->Execute())

{

TStringList *StringList = new TStringList();

StringList->LoadFromFile(OpenDialog1->FileName);

DMod->RunQuery(StringList);

StringList->Free();

}

}

Для кнопки bbLoad2:

void __fastcall TForm1::bbLoad2Click(TObject *Sender)

{

if (OpenDialog1->Execute())

DMod->RunQuery2(OpenDialog1->FileName);

}

Для трех кнопок : A, B, C создайте одну и ту же процедуру нажатия кнопки:

void __fastcall TForm1::bbPickAClick(TObject *Sender)

{

TComponent *C = (TComponent *)Sender;

switch (C->Tag)

{

case 65:

DMod->SelectItems("A");

break;

case 66:

DMod->SelectItems("B");

break;

case 67:

DMod->SelectItems("C");

break;

}

}

13. Запустите приложение. Убедитесь в работоспособности приложения.