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

📄 filtercontroldemomain.cpp

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

#include <vcl.h>
#pragma hdrstop

#include "FilterControlDemoMain.h"
#include "cxFilterControlDialog.hpp"
#include "FilterControlDemoFilterDialog.h"
#include "AboutDemoForm.h"
#include "shellapi.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "cxButtons"
#pragma link "cxClasses"
#pragma link "cxControls"
#pragma link "cxCustomData"
#pragma link "cxData"
#pragma link "cxDBData"
#pragma link "cxDBEditRepository"
#pragma link "cxEdit"
#pragma link "cxFilter"
#pragma link "cxFilterControl"
#pragma link "cxDBFilterControl"
#pragma link "cxGraphics"
#pragma link "cxGrid"
#pragma link "cxGridCustomPopupMenu"
#pragma link "cxGridCustomTableView"
#pragma link "cxGridCustomView"
#pragma link "cxGridDBTableView"
#pragma link "cxGridLevel"
#pragma link "cxGridPopupMenu"
#pragma link "cxGridTableView"
#pragma link "cxLookAndFeelPainters"
#pragma link "cxLookAndFeels"
#pragma link "cxStyles"
#pragma resource "*.dfm"
TFilterControlDemoMainForm *FilterControlDemoMainForm;
//---------------------------------------------------------------------------
__fastcall TFilterControlDemoMainForm::TFilterControlDemoMainForm(TComponent* Owner)
  : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TFilterControlDemoMainForm::FormCreate(TObject *Sender)
{
  OpenDialog->InitialDir = ExtractFileDir(Application->ExeName);
  SaveDialog->InitialDir = OpenDialog->InitialDir;

  cxFilterControl->Align = alClient;
  cxDBFilterControl->Align = alClient;
  pnlFilterDialog->Width = 240;
  FFilterControl = cxFilterControl;
  FFilterControlAlign = ltLeft;
  PageControl->ActivePage = tsGrid4DisplayStyle;
  PageControlChange(PageControl);
  cxFilterControl->LoadFromFile("ExtendedFilter.flt");
  cxFilterControl->ApplyFilter();
  cxDBFilterControl->LoadFromFile("StandardFilter.sft");
  cxDBFilterControl->ApplyFilter();
}
//---------------------------------------------------------------------------

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

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

void __fastcall TFilterControlDemoMainForm::cxFilterControlApplyFilter(
      TObject *Sender)
{
  ((TcxGridTableView*)((TcxFilterControl*)Sender)->LinkComponent)->DataController->Filter->Active = true;
}
//---------------------------------------------------------------------------

void __fastcall TFilterControlDemoMainForm::cxDBFilterControlApplyFilter(
      TObject *Sender)
{
  TDataSet* ADataSet = ((TcxDBFilterControl*)Sender)->DataSet;
  try {
    ADataSet->DisableControls();
    ADataSet->Filtered = false;
    ADataSet->Filter =
      ((TcxDBFilterControl*)Sender)->FilterText;
    ADataSet->Filtered = true;
  }
  __finally {
    ADataSet->EnableControls();
  }
}
//---------------------------------------------------------------------------

void __fastcall TFilterControlDemoMainForm::btnLoadClick(TObject *Sender)
{
 if (PageControl->ActivePage == tsGrid4DisplayStyle)
   OpenDialog->Filter = "Grid Filters(*.flt)|*.flt|All files|*.*";
 else
   OpenDialog->Filter = "Standard Filters(*.sft)|*.sft|All files|*.*";
 if (OpenDialog->Execute())
   FFilterControl->LoadFromFile(OpenDialog->FileName);
}
//---------------------------------------------------------------------------

void __fastcall TFilterControlDemoMainForm::btnSaveAsClick(TObject *Sender)
{
 if (PageControl->ActivePage == tsGrid4DisplayStyle)
   SaveDialog->Filter = "Grid Filters(*.flt)|*.flt";
 else
   SaveDialog->Filter = "Standard Filters(*.sft)|*.sft";
 if (SaveDialog->Execute())
   FFilterControl->SaveToFile(SaveDialog->FileName);
}
//---------------------------------------------------------------------------

void __fastcall TFilterControlDemoMainForm::btnApplyClick(TObject *Sender)
{
  FFilterControl->ApplyFilter();
}
//---------------------------------------------------------------------------

void __fastcall TFilterControlDemoMainForm::PageControlChange(
      TObject *Sender)
{
  FFilterControl->Visible = False;
  if (((TPageControl*)Sender)->ActivePage == tsStandardDisplayStyle)
    FFilterControl = cxDBFilterControl;
  else
    FFilterControl = cxFilterControl;
  FFilterControl->Visible = true;
}
//---------------------------------------------------------------------------

void __fastcall TFilterControlDemoMainForm::miFiltConrolPosClick(
      TObject *Sender)
{
 if (!((TMenuItem*)Sender)->Checked) {
   ((TMenuItem*)Sender)->Checked = true;
   FFilterControlAlign = (TcxLocate)((TMenuItem*)Sender)->Tag;
   Relocate(FFilterControlAlign);
 }
}
//---------------------------------------------------------------------------

void __fastcall TFilterControlDemoMainForm::Relocate(TcxLocate ALocate)
{
  TAlign AAlign;
  Splitter->Visible = false;
  pnlFilterDialog->Visible = false;
  if (ALocate == ltNone) return;
  if (ALocate == ltTop)
    AAlign = alTop;
  else
    AAlign = alLeft;
  if(ALocate == ltLeft)
    Splitter->Align = AAlign;
  pnlFilterDialog->Align = AAlign;
  if(ALocate == ltTop)
    Splitter->Align = AAlign;
  Splitter->Visible = true;
  pnlFilterDialog->Visible = true;
  lbDescription->Top = 0;
}
//---------------------------------------------------------------------------

void __fastcall TFilterControlDemoMainForm::ShowButtons(bool AShow)
{
  btnOK->Visible = AShow;
  btnCancel->Visible = AShow;
}
//---------------------------------------------------------------------------

void __fastcall TFilterControlDemoMainForm::miFillterControlModalClick(
      TObject *Sender)
{
  if (PageControl->ActivePage == tsGrid4DisplayStyle)
   tvOrders->Filtering->RunCustomizeDialog(NULL);
  else {
    miFiltConrolPosClick(miFiltConrolNone);
    int AHeight = pnlFilterDialog->Height;
    int AWidth = pnlFilterDialog->Width;
    TAlign AAlign = pnlFilterDialog->Align;
    ShowButtons(true);
    pnlFilterDialog->Parent = FilterControlDemoFilterDialogForm;
    pnlFilterDialog->Align = alClient;
    pnlFilterDialog->Visible = true;
    FilterControlDemoFilterDialogForm->ShowModal();
    pnlFilterDialog->Align = AAlign;
    ShowButtons(false);
    pnlFilterDialog->Visible = false;
    pnlFilterDialog->Parent = this;
    pnlFilterDialog->Height = AHeight;
    pnlFilterDialog->Width = AWidth;
  }
}
//---------------------------------------------------------------------------

void __fastcall TFilterControlDemoMainForm::tvOrdersFilterControlDialogShow(
      TObject *Sender)
{
  FCloseEvent = ((TfmFilterControlDialog*)Sender)->OnClose;
  ((TfmFilterControlDialog*)Sender)->OnClose = FilterDialogClose;
  Relocate(ltNone);
}
//---------------------------------------------------------------------------

void __fastcall TFilterControlDemoMainForm::FilterDialogClose(System::TObject* Sender, TCloseAction &Action)
{
  Relocate(FFilterControlAlign);
  if (FCloseEvent)
    FCloseEvent(Sender, Action);
  ((TForm*)Sender)->OnClose = FCloseEvent;
}
//---------------------------------------------------------------------------

void __fastcall TFilterControlDemoMainForm::tvOrdersDataControllerFilterChanged(
      TObject *Sender)
{
  cxFilterControl->UpdateFilter();
}
//---------------------------------------------------------------------------

void __fastcall TFilterControlDemoMainForm::miShowFilterPnlClick(
      TObject *Sender)
{
  ((TMenuItem*)Sender)->Checked = true;
  tvOrders->Filtering->Visible =
    (TcxGridFilterVisible)((TMenuItem*)Sender)->Tag;
}
//---------------------------------------------------------------------------

void __fastcall TFilterControlDemoMainForm::miShowFilterBtnClick(
      TObject *Sender)
{
  ((TMenuItem*)Sender)->Checked = !((TMenuItem*)Sender)->Checked;
  tvOrders->Filtering->CustomizeDialog = ((TMenuItem*)Sender)->Checked;
}
//---------------------------------------------------------------------------

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


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

⌨️ 快捷键说明

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