Componentes.Terceros.DevExp.../official/x.36/ExpressQuantumGrid 6/Demos/CBuilder/ViewNestedBandsDemo/ViewNestedBandsDemoMain.cpp

215 lines
7.5 KiB
C++
Raw Normal View History

//---------------------------------------------------------------------------
#include <vcl.h>
#include "shellapi.hpp"
#pragma hdrstop
#include "ViewNestedBandsDemoMain.h"
#include "ViewNestedBandsDemoData.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 "cxButtons"
#pragma link "cxCheckBox"
#pragma link "cxContainer"
#pragma link "cxGridCardView"
#pragma link "cxGridDBCardView"
#pragma link "cxLookAndFeelPainters"
#pragma link "cxMaskEdit"
#pragma link "cxSpinEdit"
#pragma link "cxTextEdit"
#pragma link "cxLookAndFeels"
#pragma link "cxGridBandedTableView"
#pragma link "cxGridDBBandedTableView"
#pragma resource "*.dfm"
/* TcxNestedBandInfo */
//---------------------------------------------------------------------------
__fastcall TcxNestedBandInfo::TcxNestedBandInfo(TcxGridBand *ABand)
{
FBand = ABand;
FParentBand = ABand->Bands->Items[ABand->Position->BandIndex];
FCaption = ABand->Caption;
FColumnIndex = ABand->Position->ColIndex;
}
//---------------------------------------------------------------------------
void __fastcall TcxNestedBandInfo::RestoreBand()
{
FBand->Caption = FCaption;
FBand->Position->BandIndex = FParentBand->Index;
FBand->Position->ColIndex = FColumnIndex;
}
TViewNestedBandsDemoMainForm *ViewNestedBandsDemoMainForm;
//---------------------------------------------------------------------------
__fastcall TViewNestedBandsDemoMainForm::TViewNestedBandsDemoMainForm(TComponent* Owner)
: TForm(Owner)
{
FNestedBands = new TList();
}
//---------------------------------------------------------------------------
__fastcall TViewNestedBandsDemoMainForm::~TViewNestedBandsDemoMainForm(void)
{
ReleaseNestedBandInfos();
delete FNestedBands;
}
//---------------------------------------------------------------------------
void __fastcall TViewNestedBandsDemoMainForm::miAboutClick(TObject *Sender)
{
ShowAboutDemoForm();
}
//---------------------------------------------------------------------------
void __fastcall TViewNestedBandsDemoMainForm::miExitClick(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TViewNestedBandsDemoMainForm:: miNestedBandsClick(TObject *Sender)
{
((TMenuItem*)Sender)->Checked = !((TMenuItem*)Sender)->Checked;
AdjustNestedBands(((TMenuItem*)Sender)->Checked);
bvOrders->OptionsCustomize->NestedBands =((TMenuItem*)Sender)->Checked;
}
//---------------------------------------------------------------------------
void __fastcall TViewNestedBandsDemoMainForm:: miBandsQuickCustomizationClick(TObject *Sender)
{
((TMenuItem*)Sender)->Checked = !((TMenuItem*)Sender)->Checked;
bvOrders->OptionsCustomize->BandsQuickCustomization =((TMenuItem*)Sender)->Checked;
}
//---------------------------------------------------------------------------
void __fastcall TViewNestedBandsDemoMainForm:: miColumnsQuickCustomizationClick(TObject *Sender)
{
((TMenuItem*)Sender)->Checked = !((TMenuItem*)Sender)->Checked;
bvOrders->OptionsCustomize->ColumnsQuickCustomization =((TMenuItem*)Sender)->Checked;
}
//---------------------------------------------------------------------------
void __fastcall TViewNestedBandsDemoMainForm:: miCellMergingClick(TObject *Sender)
{
((TMenuItem*)Sender)->Checked = !((TMenuItem*)Sender)->Checked;
AdjustCellMerging(((TMenuItem*)Sender)->Checked);
}
//---------------------------------------------------------------------------
void TViewNestedBandsDemoMainForm::AddNestedBandInfo(TcxGridBand *ABand)
{
FNestedBands->Add(new TcxNestedBandInfo(ABand));
}
//---------------------------------------------------------------------------
void TViewNestedBandsDemoMainForm::AdjustCellMerging(bool AUseCelMerging)
{
bvOrders->BeginUpdate();
try{
clnCustomerID->Options->CellMerging = AUseCelMerging;
clnOrdersProductID->Options->CellMerging = AUseCelMerging;
clnPurchaseDate->Options->CellMerging = AUseCelMerging;
clnPaymentType->Options->CellMerging = AUseCelMerging;
clnCustomerCompany->Options->CellMerging = AUseCelMerging;
clnCustomerAddres->Options->CellMerging = AUseCelMerging;
clnCustomerFax->Options->CellMerging = AUseCelMerging;
clnCustomerPhone->Options->CellMerging = AUseCelMerging;
clnCustomerOccupation->Options->CellMerging = AUseCelMerging;
clnCustomerZipCode->Options->CellMerging = AUseCelMerging;
clnCarCyl->Options->CellMerging = AUseCelMerging;
clnCarHP->Options->CellMerging = AUseCelMerging;
clnCarLiter->Options->CellMerging = AUseCelMerging;
clnCarMPG_City->Options->CellMerging = AUseCelMerging;
clnCarMPG_Highway->Options->CellMerging = AUseCelMerging;
clnCarTransMissAuto->Options->CellMerging = AUseCelMerging;
clnCarTransmissSpeedCount->Options->CellMerging = AUseCelMerging;
}
__finally{
bvOrders->EndUpdate();
}
}
//---------------------------------------------------------------------------
void TViewNestedBandsDemoMainForm::AdjustNestedBands(bool AUseNestedBands)
{
if (AUseNestedBands)
ShowNestedBands();
else
HideNestedBands();
}
//---------------------------------------------------------------------------
void TViewNestedBandsDemoMainForm::ChangeBandVisibility(int AIndex, bool AVisible)
{
bvOrders->Bands->Items[AIndex]->Visible = AVisible;
}
//---------------------------------------------------------------------------
void TViewNestedBandsDemoMainForm::HideNestedBands()
{
ReleaseNestedBandInfos();
bvOrders->BeginUpdate();
try{
for (int I = 0; I < bvOrders->Bands->Count; I++)
if (bvOrders->Bands->Items[I]->Position->BandIndex != -1){
AddNestedBandInfo(bvOrders->Bands->Items[I]);
ChangeBandVisibility(bvOrders->Bands->Items[I]->Position->BandIndex, false);
bvOrders->Bands->Items[I]->Caption =
bvOrders->Bands->Items[bvOrders->Bands->Items[I]->Position->BandIndex]->Caption + "'s " +
bvOrders->Bands->Items[I]->Caption;
bvOrders->Bands->Items[I]->Position->BandIndex = -1;
}
}
__finally{
bvOrders->EndUpdate();
}
}
//---------------------------------------------------------------------------
void TViewNestedBandsDemoMainForm::ReleaseNestedBandInfos()
{
for (int I = 0; I < FNestedBands->Count; I++)
if (FNestedBands->Items[I] != NULL)
delete (TcxNestedBandInfo*)FNestedBands->Items[I];
FNestedBands->Clear();
}
//---------------------------------------------------------------------------
void TViewNestedBandsDemoMainForm::ShowNestedBands()
{
bvOrders->BeginUpdate();
try{
for (int I = 0; I < FNestedBands->Count; I++)
if (FNestedBands->Items[I] != NULL){
((TcxNestedBandInfo*)FNestedBands->Items[I])->RestoreBand();
ChangeBandVisibility(
((TcxNestedBandInfo*)FNestedBands->Items[I])->ParentBand->Index, true);
}
ReleaseNestedBandInfos();
}
__finally{
bvOrders->EndUpdate();
}
}
//---------------------------------------------------------------------------