Задание№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. Запустите приложение. Убедитесь в работоспособности приложения.