Componentes.Terceros.DevExp.../internal/x.36/1/ExpressQuantumGrid 6/Demos/CBuilder/UnboundExternalDataDemo/UnboundExternalDataDemoMain.cpp
2008-09-04 11:31:51 +00:00

212 lines
6.9 KiB
C++

//---------------------------------------------------------------------------
#include <vcl.h>
#include "shellapi.hpp"
#pragma hdrstop
#include "UnboundExternalDataDemoMain.h"
#include "AboutDemoForm.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "cxClasses"
#pragma link "cxControls"
#pragma link "cxCustomData"
#pragma link "cxData"
#pragma link "cxDBData"
#pragma link "cxEdit"
#pragma link "cxFilter"
#pragma link "cxGraphics"
#pragma link "cxGrid"
#pragma link "cxGridCustomTableView"
#pragma link "cxGridCustomView"
#pragma link "cxGridDBTableView"
#pragma link "cxGridLevel"
#pragma link "cxGridTableView"
#pragma link "cxStyles"
#pragma link "cxLookAndFeels"
#pragma resource "*.dfm"
TUnboundExternalDataDemoMainForm *UnboundExternalDataDemoMainForm;
const String rsIniFileName = "odbcinst_test.ini";
//---------------------------------------------------------------------------
__fastcall TUnboundExternalDataDemoMainForm::TUnboundExternalDataDemoMainForm(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TUnboundExternalDataDemoMainForm::miAboutClick(TObject *Sender)
{
ShowAboutDemoForm();
}
//---------------------------------------------------------------------------
void __fastcall TUnboundExternalDataDemoMainForm::miExitClick(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TUnboundExternalDataDemoMainForm::miInsertClick(
TObject *Sender)
{
cxGrid->FocusedView->DataController->Insert();
}
//---------------------------------------------------------------------------
void __fastcall TUnboundExternalDataDemoMainForm::miDeleteClick(
TObject *Sender)
{
cxGrid->FocusedView->DataController->DeleteFocused();
}
//---------------------------------------------------------------------------
void __fastcall TUnboundExternalDataDemoMainForm::miOpenClick(
TObject *Sender)
{
if (IniFile->Modified){
int I = MessageDlg("Do you want to save the changes ?", mtConfirmation, TMsgDlgButtons() << mbYes << mbNo << mbCancel, 0);
switch (I) {
case mrYes: IniFile->SaveValues(); break;
case mrCancel: return;
}
}
OpenDialog->InitialDir = ExtractFilePath(Application->ExeName);
if(OpenDialog->Execute()) {
Load(OpenDialog->FileName);
UpdateFileInfo(OpenDialog->FileName);
ResetChanges();
}
}
//---------------------------------------------------------------------------
void __fastcall TUnboundExternalDataDemoMainForm::miSaveClick(
TObject *Sender)
{
IniFile->SaveValues();
ResetChanges();
}
//---------------------------------------------------------------------------
void __fastcall TUnboundExternalDataDemoMainForm::miSaveAsClick(
TObject *Sender)
{
if(SaveDialog->Execute()) {
IniFile->SaveAs(SaveDialog->FileName);
UpdateFileInfo(SaveDialog->FileName);
ResetChanges();
}
}
//---------------------------------------------------------------------------
void __fastcall TUnboundExternalDataDemoMainForm::CustomizeGrid()
{
GenerateColumns();
LoadData();
}
//---------------------------------------------------------------------------
void __fastcall TUnboundExternalDataDemoMainForm::GenerateColumns()
{
TcxGridColumn* GridColumn;
GridColumn = tvSections->CreateColumn();
GridColumn->Caption = "Section Name";
GridColumn->DataBinding->ValueTypeClass = __classid(TcxStringValueType);
GridColumn->Width = 600;
tvSections->DataController->CustomDataSource = UserDataSource;
GridColumn = tvValues->CreateColumn();
GridColumn->Caption = "Parameter Name";
GridColumn->DataBinding->ValueTypeClass = __classid(TcxStringValueType);
GridColumn->DataBinding->Data = (TObject *)0;
GridColumn->Width = 300;
GridColumn = tvValues->CreateColumn();
GridColumn->Caption = "Parameter Value";
GridColumn->DataBinding->ValueTypeClass = __classid(TcxStringValueType);
GridColumn->DataBinding->Data = (TObject *)1;
GridColumn->Width = 300;
tvValues->DataController->CustomDataSource = UserDetailDataSource;
}
//---------------------------------------------------------------------------
void __fastcall TUnboundExternalDataDemoMainForm::LoadData()
{
Load(IniFile->FileName);
}
//---------------------------------------------------------------------------
void __fastcall TUnboundExternalDataDemoMainForm::Load(String const AFileName)
{
IniFile->Rename(AFileName, true);
UserDataSource->DataChanged();
}
//---------------------------------------------------------------------------
void __fastcall TUnboundExternalDataDemoMainForm::UpdateFileInfo(String const AFileName)
{
sbMain->Panels->Items[1]->Text = ExtractFileName(AFileName);
}
//---------------------------------------------------------------------------
void __fastcall TUnboundExternalDataDemoMainForm::ResetChanges()
{
FChangesCount = 0;
sbMain->Panels->Items[2]->Text = "Changes Count: 0";
}
//---------------------------------------------------------------------------
void __fastcall TUnboundExternalDataDemoMainForm::DoSmthOnModify(TObject* Sender)
{
FChangesCount++;
sbMain->Panels->Items[2]->Text = Format("Changes Count: %d", ARRAYOFCONST((FChangesCount)));
}
//---------------------------------------------------------------------------
void __fastcall TUnboundExternalDataDemoMainForm::FormCreate(
TObject *Sender)
{
IniFile = new TUserIniFile(ExtractFilePath(Application->ExeName) + rsIniFileName);
UpdateFileInfo(IniFile->FileName);
IniFile->OnModify = DoSmthOnModify;
UserDataSource = new TUserDataSource(IniFile);
UserDetailDataSource = new TUserDetailDataSource(UserDataSource);
CustomizeGrid();
}
//---------------------------------------------------------------------------
void __fastcall TUnboundExternalDataDemoMainForm::FormCloseQuery(
TObject *Sender, bool &CanClose)
{
int i = -1;
if(IniFile->Modified)
i = MessageDlg("Do you want to save the changes ?", mtConfirmation, TMsgDlgButtons() << mbYes << mbNo << mbCancel, 0);
switch (i) {
case mrYes: IniFile->SaveValues(); break;
case mrCancel: CanClose = false; break;
}
}
//---------------------------------------------------------------------------
void __fastcall TUnboundExternalDataDemoMainForm::FormDestroy(
TObject *Sender)
{
delete UserDetailDataSource;
delete UserDataSource;
delete IniFile;
}
//---------------------------------------------------------------------------
void __fastcall TUnboundExternalDataDemoMainForm::sbMainResize(
TObject *Sender)
{
sbMain->Panels->Items[0]->Width = Width - (sbMain->Panels->Items[1]->Width +
sbMain->Panels->Items[2]->Width);
}
//---------------------------------------------------------------------------