Componentes.Terceros.DevExp.../official/x.26/ExpressVerticalGrid/Demos/CBuilder/StylesMultiDemo/StylesMultiDemoMain.cpp

221 lines
7.7 KiB
C++
Raw Normal View History

//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "StylesMultiDemoMain.h"
#include "StylesMultiDemoData.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 "cxStyles"
#pragma link "cxLookAndFeels"
#pragma link "DemoBasicMain"
#pragma link "cxButtons"
#pragma link "cxDBVGrid"
#pragma link "cxInplaceContainer"
#pragma link "cxLookAndFeelPainters"
#pragma link "cxStyleSheetEditor"
#pragma link "cxVGrid"
#pragma link "cxVGridStyleSheetPreview"
#pragma resource "*.dfm"
TStylesMultiDemoMainForm *StylesMultiDemoMainForm;
//---------------------------------------------------------------------------
__fastcall TStylesMultiDemoMainForm::TStylesMultiDemoMainForm(TComponent* Owner)
: TDemoBasicMainForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TStylesMultiDemoMainForm::FormCreate(TObject *Sender)
{
CreateStyleSheetsList(shtUserDefined);
CreateStyleSheetsList(shtPredefined);
SelectFistChild(shtUserDefined);
cxDBVerticalGrid->FullExpand();
}
//---------------------------------------------------------------------------
void __fastcall TStylesMultiDemoMainForm::actSaveToFileExecute(TObject *Sender)
{
if (SaveDialog->Execute())
SaveUserDefinedStyleSheets(SaveDialog->FileName);
}
//---------------------------------------------------------------------------
void __fastcall TStylesMultiDemoMainForm::actLoadFromFileExecute(TObject *Sender)
{
if (OpenDialog->Execute()){
LoadUserDefinedStyleSheets(OpenDialog->FileName);
SelectFistChild(shtUserDefined);
}
}
//---------------------------------------------------------------------------
void __fastcall TStylesMultiDemoMainForm::actEditStyleSheetExecute(TObject *Sender)
{
ShowcxStyleSheetEditor(GetCurrentStyleSheet(), NULL);
}
//---------------------------------------------------------------------------
void __fastcall TStylesMultiDemoMainForm::FormActivate(TObject *Sender)
{
OpenDialog->InitialDir = ExtractFileDir(Application->ExeName);
SaveDialog->InitialDir = OpenDialog->InitialDir;
}
//---------------------------------------------------------------------------
void __fastcall TStylesMultiDemoMainForm::OnGetDisplayText(
TcxCustomEditorRowProperties *Sender, int ARecord,
String &AText)
{
AText = Sender->Caption;
}
//---------------------------------------------------------------------------
void __fastcall TStylesMultiDemoMainForm::vgStyleSheetsItemChanged(TObject *Sender,
TcxCustomRow *AOldRow, int AOldCellIndex)
{
if ((vgStyleSheets->FocusedRow != NULL) && (vgStyleSheets->FocusedRow->Tag != -1)){
UpdateGridStyleSheets(((TcxVerticalGridStyleSheet*)vgStyleSheets->FocusedRow->Tag));
vgStyleSheets->Update();
}
}
//---------------------------------------------------------------------------
void __fastcall TStylesMultiDemoMainForm::actEditAndSaveStyleSheetUpdate(TObject *Sender)
{
((TCustomAction*)Sender)->Enabled = (vgStyleSheets->FocusedRow->Parent != NULL) &&
(vgStyleSheets->FocusedRow->Parent == vgStyleSheetsUserDefinedStyleSheets);
}
//---------------------------------------------------------------------------
void __fastcall TStylesMultiDemoMainForm::vgStyleSheetsStylesGetCategoryStyle(
TObject *Sender, TcxCustomRow *ARow, TcxStyle *&AStyle)
{
if ((vgStyleSheets->FocusedRow == ARow))
AStyle = StylesMultiDemoDataDM->cxVerticalGridStyleSheetDevExpress->Styles->Selection;
}
//---------------------------------------------------------------------------
void __fastcall TStylesMultiDemoMainForm::vgStyleSheetsDrawRowHeader(
TObject *Sender, TcxCanvas *ACanvas, TcxvgPainter *APainter,
TcxCustomRowHeaderInfo *AHeaderViewInfo, bool &Done)
{
AHeaderViewInfo->FocusRect = Rect(0, 0, 0, 0);
}
//---------------------------------------------------------------------------
TcxVerticalGridStyleSheet* __fastcall TStylesMultiDemoMainForm::GetCurrentStyleSheet()
{
return ((TcxVerticalGridStyleSheet*)cxDBVerticalGrid->Styles->StyleSheet);
}
//---------------------------------------------------------------------------
class TcxCustomRowAccess : public TcxCustomRow
{
public:
inline void __fastcall RemoveAll(void) {TcxCustomRow::RemoveAll();};
};
void __fastcall TStylesMultiDemoMainForm::CreateStyleSheetsList(
TcxStyleRepositoryType AStyleRepositoryType)
{
TcxStyleRepository *AStyleRepository;
TcxCategoryRow *ACategory;
TcxCategoryRow *ARow;
if (AStyleRepositoryType == shtNone)
return;
if (AStyleRepositoryType == shtUserDefined){
AStyleRepository = StylesMultiDemoDataDM->strepUserDefined;
ACategory = vgStyleSheetsUserDefinedStyleSheets;
}
else{
AStyleRepository = StylesMultiDemoDataDM->strepPredefined;
ACategory = vgStyleSheetsPredefinedStyleSheets;
}
((TcxCustomRowAccess*)ACategory)->RemoveAll();
for (int I = 0; I < AStyleRepository->StyleSheetCount; I++){
ARow = (TcxCategoryRow*)vgStyleSheets->AddChild(ACategory, __classid(TcxCategoryRow));
ARow->Properties->Caption = AStyleRepository->StyleSheets[I]->Caption;
ARow->Options->TabStop = false;
ARow->Styles->Header =
StylesMultiDemoDataDM->cxVerticalGridStyleSheetDevExpress->Styles->Content;
ARow->Tag = (int)AStyleRepository->StyleSheets[I];
}
}
//---------------------------------------------------------------------------
void __fastcall TStylesMultiDemoMainForm::UpdateGridStyleSheets(
TcxVerticalGridStyleSheet *AStyleSheet)
{
if (GetCurrentStyleSheet() == AStyleSheet) return;
cxDBVerticalGrid->Styles->StyleSheet = AStyleSheet;
if (AStyleSheet != NULL)
pnlCurrentStyleSheet->Caption = AStyleSheet->Caption;
else
pnlCurrentStyleSheet->Caption = "None";
cxDBVerticalGrid->Update();
}
//---------------------------------------------------------------------------
void __fastcall TStylesMultiDemoMainForm::ClearUserDefinedStyleSheets()
{
TcxStyleRepository *ARepository = StylesMultiDemoDataDM->strepUserDefined;
ARepository->Clear();
ARepository->ClearStyleSheets();
}
//---------------------------------------------------------------------------
void __fastcall TStylesMultiDemoMainForm::LoadUserDefinedStyleSheets(
TFileName AFileName)
{
UpdateGridStyleSheets(NULL);
ClearUserDefinedStyleSheets();
LoadStyleSheetsFromIniFile(AFileName, StylesMultiDemoDataDM->strepUserDefined,
__classid(TcxVerticalGridStyleSheet), NULL, NULL, NULL, NULL);
CreateStyleSheetsList(shtUserDefined);
}
//---------------------------------------------------------------------------
void __fastcall TStylesMultiDemoMainForm::SaveUserDefinedStyleSheets(
TFileName AFileName)
{
TList *AList = new TList();
try{
PopulateStyleSheetsList(AList);
SaveStyleSheetsToIniFile(AFileName, AList);
}
__finally{
delete AList;
}
}
//---------------------------------------------------------------------------
void __fastcall TStylesMultiDemoMainForm::SelectFistChild(
TcxStyleRepositoryType AStyleRepositoryType)
{
switch (AStyleRepositoryType){
case shtNone: vgStyleSheets->FocusedRow = vgStyleSheetsNone; break;
case shtPredefined:
vgStyleSheets->FocusedRow = vgStyleSheetsPredefinedStyleSheets->Rows[0];
break;
case shtUserDefined:
vgStyleSheets->FocusedRow = vgStyleSheetsUserDefinedStyleSheets->Rows[0];
break;
}
}
//---------------------------------------------------------------------------