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

📄 stylesmultidemomain.cpp

📁 DevExpress ExpressQuantumGrid Suite v5.9 Full Source
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#include "shellapi.hpp"
#pragma hdrstop

#include "StylesMultiDemoMain.h"
#include "StylesMultiDemoData.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 "cxGridCustomPopupMenu"
#pragma link "cxGridPopupMenu"
#pragma link "cxLookAndFeelPainters"
#pragma link "cxStyleSheetEditor"
#pragma link "cxRadioGroup"
#pragma link "cxListBox"
#pragma link "cxContainer"
#pragma link "cxGroupBox"
#pragma link "cxGridStyleSheetsPreview"
#pragma resource "*.dfm"
TStylesMultiDemoMainForm *StylesMultiDemoMainForm;

const cNone = 0;
const cPredefined = 1;
const cUserDefined = 2;

//---------------------------------------------------------------------------
__fastcall TStylesMultiDemoMainForm::TStylesMultiDemoMainForm(TComponent* Owner)
  : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TStylesMultiDemoMainForm::miAboutClick(TObject *Sender)
{
  ShowAboutDemoForm();
}
//---------------------------------------------------------------------------

void __fastcall TStylesMultiDemoMainForm::miExitClick(TObject *Sender)
{
  Close();
}
//---------------------------------------------------------------------------

void __fastcall TStylesMultiDemoMainForm::FormCreate(TObject *Sender)
{
  CreateUserStyleSheetsList();
  CreatePredefinedStyleSheetsList();
  SetPredefinedStyleSheets();
}
//---------------------------------------------------------------------------

void __fastcall TStylesMultiDemoMainForm::btnSaveClick(TObject *Sender)
{
    if (SaveDialog->Execute())
      SaveUserDefinedStyleSheets(SaveDialog->FileName);
}
//---------------------------------------------------------------------------

void __fastcall TStylesMultiDemoMainForm::btnLoadClick(TObject *Sender)
{
  if (OpenDialog->Execute())
    LoadUserDefinedStyleSheets(OpenDialog->FileName);
}
//---------------------------------------------------------------------------

void __fastcall TStylesMultiDemoMainForm::RadioGroupClick(TObject *Sender)
{
  switch (((TcxRadioGroup*)Sender)->ItemIndex) {
    case cNone:
      UpdateGridStyleSheets(NULL);
    case cPredefined:
      SetPredefinedStyleSheets();
    case cUserDefined:
      SetUserDefinedStyleSheets();
  }
  ChangeVisibility(((TcxRadioGroup*)Sender)->ItemIndex);
}
//---------------------------------------------------------------------------

void __fastcall TStylesMultiDemoMainForm::cbUserStyleSheetsChange(TObject *Sender)
{
  SetUserDefinedStyleSheets();
}
//---------------------------------------------------------------------------

void __fastcall TStylesMultiDemoMainForm::lbPredefinedStyleSheetsClick(TObject *Sender)
{
  SetPredefinedStyleSheets();
}
//---------------------------------------------------------------------------

void __fastcall TStylesMultiDemoMainForm::btnEditClick(TObject *Sender)
{
  ShowcxStyleSheetEditor((TcxGridTableViewStyleSheet*)(cbUserStyleSheets->Items->Objects[cbUserStyleSheets->ItemIndex]), NULL);
}
//---------------------------------------------------------------------------

void __fastcall TStylesMultiDemoMainForm::FormActivate(TObject *Sender)
{
  OpenDialog->InitialDir = ExtractFileDir(Application->ExeName);
  SaveDialog->InitialDir = OpenDialog->InitialDir;
}
//---------------------------------------------------------------------------

TcxGridTableViewStyleSheet* TStylesMultiDemoMainForm::GetCurrentStyleSheet()
{
  return (TcxGridTableViewStyleSheet*)tvProjects->Styles->StyleSheet;
}
//---------------------------------------------------------------------------

void TStylesMultiDemoMainForm::CreateUserStyleSheetsList()
{
  cbUserStyleSheets->Clear();
  for (int I = 0 ; I < StylesMultiDemoDataDM->strepUserDefined->StyleSheetCount; I++)
    cbUserStyleSheets->Items->AddObject(
      StylesMultiDemoDataDM->strepUserDefined->StyleSheets[I]->Caption,
      StylesMultiDemoDataDM->strepUserDefined->StyleSheets[I]);
  cbUserStyleSheets->ItemIndex = 0;
}
//---------------------------------------------------------------------------

void TStylesMultiDemoMainForm::CreatePredefinedStyleSheetsList()
{
  lbPredefinedStyleSheets->Clear();
  for (int I = 0; I < StylesMultiDemoDataDM->strepPredefined->StyleSheetCount; I++)
    lbPredefinedStyleSheets->Items->AddObject(
      StylesMultiDemoDataDM->strepPredefined->StyleSheets[I]->Caption,
      StylesMultiDemoDataDM->strepPredefined->StyleSheets[I]);
  lbPredefinedStyleSheets->ItemIndex = 0;
}
//---------------------------------------------------------------------------

void TStylesMultiDemoMainForm::UpdateView(TcxGridDBTableView *AView,
  TcxGridTableViewStyleSheet *AStyleSheet)
{
  AView->BeginUpdate();
  AView->Styles->StyleSheet = AStyleSheet;
  AView->EndUpdate();
}
//---------------------------------------------------------------------------

void TStylesMultiDemoMainForm::UpdateGridStyleSheets(TcxGridTableViewStyleSheet *AStyleSheet)
{
  if (GetCurrentStyleSheet() == AStyleSheet) return;
  UpdateView(tvProjects, AStyleSheet);
  UpdateView(tvTeam, AStyleSheet);
  tvProjects->DataController->ClearDetails();  // refresh detail level

  if (AStyleSheet != NULL)
    pnlCurrentStyleSheet->Caption = AStyleSheet->Caption;
  else
    pnlCurrentStyleSheet->Caption = "";
}
//---------------------------------------------------------------------------

void TStylesMultiDemoMainForm::ChangeVisibility(int AType)
{
  cbUserStyleSheets->Enabled = (AType == cUserDefined);
  gbUserDefined->Enabled = (AType == cUserDefined);
  btnEdit->Enabled = (AType == cUserDefined);
  btnLoad->Enabled = (AType == cUserDefined);
  btnSave->Enabled = (AType == cUserDefined);

  lbPredefinedStyleSheets->Enabled = (AType == cPredefined);
}
//---------------------------------------------------------------------------

void TStylesMultiDemoMainForm::SetPredefinedStyleSheets()
{
  if (lbPredefinedStyleSheets->Items->Count > 0)
    UpdateGridStyleSheets(
    (TcxGridTableViewStyleSheet*)lbPredefinedStyleSheets->Items->
      Objects[lbPredefinedStyleSheets->ItemIndex]);
}
//---------------------------------------------------------------------------

void TStylesMultiDemoMainForm::SetUserDefinedStyleSheets()
{
  if (cbUserStyleSheets->Items->Count > 0)
    UpdateGridStyleSheets((TcxGridTableViewStyleSheet*)cbUserStyleSheets->Items->
      Objects[cbUserStyleSheets->ItemIndex]);
}
//---------------------------------------------------------------------------

void TStylesMultiDemoMainForm::ClearUserDefinedStyleSheets()
{
  StylesMultiDemoDataDM->strepUserDefined->Clear();
  StylesMultiDemoDataDM->strepUserDefined->ClearStyleSheets();
}
//---------------------------------------------------------------------------

void TStylesMultiDemoMainForm::LoadUserDefinedStyleSheets(TFileName AFileName)
{
  UpdateGridStyleSheets(NULL);
  ClearUserDefinedStyleSheets();

  LoadStyleSheetsFromIniFile(AFileName, StylesMultiDemoDataDM->strepUserDefined,
    __classid(TcxGridTableViewStyleSheet), NULL, NULL, NULL, NULL);

  CreateUserStyleSheetsList();
  SetUserDefinedStyleSheets();
}
//---------------------------------------------------------------------------

void TStylesMultiDemoMainForm::SaveUserDefinedStyleSheets(TFileName AFileName)
{
  TList *AList = new TList();
  try {
    StylesMultiDemoDataDM->PopulateStyleSheetsList(AList);
    SaveStyleSheetsToIniFile(AFileName, AList);
  }
  __finally {
    delete AList;
  }
}
//---------------------------------------------------------------------------

void __fastcall TStylesMultiDemoMainForm::miNativeStyleClick(
      TObject *Sender)
{
  LookAndFeelController->NativeStyle = !LookAndFeelController->NativeStyle;
  ((TMenuItem*)Sender)->Checked = LookAndFeelController->NativeStyle;
}
//---------------------------------------------------------------------------


void __fastcall TStylesMultiDemoMainForm::miLookAndFeelKindClick(TObject *Sender)
{
  LookAndFeelController->Kind = (TcxLookAndFeelKind)((TMenuItem*)Sender)->MenuIndex;
  ((TMenuItem*)Sender)->Checked = true;
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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