//--------------------------------------------------------------------------- #include #include "shellapi.hpp" #pragma hdrstop #include "MasterDetailMultiDemoMain.h" #include "MasterDetailMultiDemoData.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 "cxGridBandedTableView" #pragma link "cxGridCardView" #pragma link "cxGridDBBandedTableView" #pragma link "cxGridDBCardView" #pragma link "cxLookAndFeels" #pragma resource "*.dfm" TMasterDetailMultiDemoMainForm *MasterDetailMultiDemoMainForm; //--------------------------------------------------------------------------- __fastcall TMasterDetailMultiDemoMainForm::TMasterDetailMultiDemoMainForm(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TMasterDetailMultiDemoMainForm::miAboutClick(TObject *Sender) { ShowAboutDemoForm(); } //--------------------------------------------------------------------------- void __fastcall TMasterDetailMultiDemoMainForm::miExitClick(TObject *Sender) { Close(); } //--------------------------------------------------------------------------- void __fastcall TMasterDetailMultiDemoMainForm::FormShow(TObject *Sender) { CreateLevels(); if (cxGrid->Levels->Count > 0) GridActiveTabChanged(cxGrid, cxGrid->Levels->Items[0]); } //--------------------------------------------------------------------------- void __fastcall TMasterDetailMultiDemoMainForm::miTabPositionClick( TObject *Sender) { ((TMenuItem*)Sender)->Checked = true; switch (((TMenuItem*)Sender)->Tag){ case 1: cxGrid->RootLevelOptions->DetailTabsPosition = dtpLeft; break; case 2: cxGrid->RootLevelOptions->DetailTabsPosition = dtpTop; break; default: cxGrid->RootLevelOptions->DetailTabsPosition = dtpNone; } } //--------------------------------------------------------------------------- void TMasterDetailMultiDemoMainForm::CreateLevels() { if (!(MasterDetailMultiDemoDataDM->tblGenres->Active)) MasterDetailMultiDemoDataDM->tblGenres->Open(); MasterDetailMultiDemoDataDM->tblGenres->First(); while (!MasterDetailMultiDemoDataDM->tblGenres->Eof) { TcxGridLevel *ALevel = cxGrid->Levels->Add(); ALevel->Caption = MasterDetailMultiDemoDataDM->tblGenresNAME->AsString; ALevel->Options->DetailTabsPosition = dtpTop; ALevel->Styles->Tab = MasterDetailMultiDemoDataDM->cxStyle1; ALevel->Styles->TabsBackground = MasterDetailMultiDemoDataDM->cxStyle39; ALevel->Add()->Caption = "Companies"; ALevel->Add()->Caption = "People"; ALevel->Add()->Caption = "Photos"; ALevel->Tag = MasterDetailMultiDemoDataDM->tblGenresID->AsInteger; MasterDetailMultiDemoDataDM->tblGenres->Next(); } } void __fastcall TMasterDetailMultiDemoMainForm::GridActiveTabChanged( TcxCustomGrid *Sender, TcxGridLevel *ALevel) { if (ALevel->IsMaster) try { cxGrid->BeginUpdate(); ALevel->GridView = bvFilms; ALevel->Items[0]->GridView = tvCompanies; ALevel->Items[1]->GridView = cvPeople; ALevel->Items[2]->GridView = cvPhotos; MasterDetailMultiDemoDataDM->qryFilms->Params->Items[0]->Value = ALevel->Tag; MasterDetailMultiDemoDataDM->qryFilms->Close(); MasterDetailMultiDemoDataDM->qryFilms->Open(); bvFilms->DataController->ClearDetails(); } __finally { cxGrid->EndUpdate(); } } //---------------------------------------------------------------------------