Советы пользователям Delphi и C++Builder


         

Создание универсального инструмента для сохранения содержимого таблиц в локальных файлах


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

С этой целью создадим форму, содержащую два компонента TListBox, два компонента TDBGrid, один компонент TSplitter, два компонента TEdit, две кнопки и один TCheckBox.

Поместим также на форму TSaveDialog, TDatabase, TSession, TTable, TClientDataSet, TDataSetProvider, два компонента TDataSource.

Рис. 4 Форма приложения для сохранения таблиц в локальных файлах.

Установим следующие значения свойств этих компонентов:

КомпонентСвойствоЗначение
Session1SessionNameMySession
Database1SessionNameMySession
LoginPromptfalse
DatabaseNameMyDB
Table1SessionNameMySession
ClientDataSet1ProviderNameDataSetProvider1
Activefalse
DataSource1DataSetTable1
DataSource2DataSetClientDataSet1
DataSetProvider1DataSetTable1
DBGrid1DataSourceDataSource1
DBGrid2DataSourceDataSource2
SaveDialog1 FilterClientDataSetFiles|*.cds|All files|*.*
DefaultExt*.cds

Создадим обработчики событий, связанные с нажатиями на кнопки, выбором из списков и созданием формы приложения:

//------------------------------------------------------------ #include <vcl.h> #pragma hdrstop #include "uni_cds1.h" //------------------------------------------------------------ #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //------------------------------------------------------------ __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //---------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { TStringList *DBList = new TStringList(); try { Session1->GetAliasNames(DBList); for (int I = 0; I < DBList->Count; I++) ListBox1->Items->Add(DBList->Strings[I]); } __finally { delete DBList; } } //------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { Database1->Connected=false; ClientDataSet1->Close(); Database1->Params->Clear(); Database1->AliasName= ListBox1->Items->Strings[ListBox1->ItemIndex]; Database1->Params->Add("User Name="+Edit1->Text); Database1->Params->Add("Password="+Edit2->Text); TStringList *TabList = new TStringList(); try { Database1->Connected=true; Session1->GetTableNames("MyDB","",!(CheckBox1->Checked),false, TabList) ; ListBox2->Items=TabList; } __finally { delete TabList; } } //----------------------------------------------------------- void __fastcall TForm1::ListBox2Click(TObject *Sender) { Table1->Close(); ClientDataSet1->Close(); Table1->DatabaseName=Database1->DatabaseName ; Table1->TableName= ListBox2->Items->Strings[ListBox2->ItemIndex]; Table1->Open(); ClientDataSet1->Open(); } void __fastcall TForm1::Button2Click(TObject *Sender) { if (SaveDialog1->Execute()) { ClientDataSet1->SaveToFile(SaveDialog1->FileName); } } //-----------------------------------------------------------



Содержание раздела