⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stylesmultidemomain.cpp

📁 delphi的的三方控件
💻 CPP
字号:
//---------------------------------------------------------------------------

#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;
  }
}
//---------------------------------------------------------------------------


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -