filterdemomain.cpp

来自「胜天进销存源码,国产优秀的进销存」· C++ 代码 · 共 186 行

CPP
186
字号
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "FilterDemoMain.h"
#include "AboutDemoForm.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "cxClasses"
#pragma link "cxControls"
#pragma link "cxCustomData"
#pragma link "cxData"
#pragma link "cxDataStorage"
#pragma link "cxDBLookupComboBox"
#pragma link "cxEdit"
#pragma link "cxEditRepositoryItems"
#pragma link "cxFilter"
#pragma link "cxGraphics"
#pragma link "cxGrid"
#pragma link "cxGridCustomTableView"
#pragma link "cxGridCustomView"
#pragma link "cxGridLevel"
#pragma link "cxGridTableView"
#pragma link "cxStyles"
#pragma resource "*.dfm"
TfrmMain *frmMain;
//---------------------------------------------------------------------------
__fastcall TfrmMain::TfrmMain(TComponent* Owner)
        : TForm(Owner)
{
  GenerateData();
  UpdateMenuValues();

  TableViewProduct->DataBinding->AddToFilter(NULL, foLike, "Express*", "", true);
  TableViewOrderDate->DataBinding->AddToFilter(NULL, foThisMonth, VarAsType(0, varNull), "", true);
  TableView->DataController->Filter->Active = true;
}
//---------------------------------------------------------------------------

void TfrmMain::GenerateData()
{
  const OrdersPerCustomer = 25;
  const DayRange = 3 * 365 / 2;
  const MaxQuantity = 50;

  TDateTime ADate = Date();
  TableView->DataController->RecordCount = tblCompanies->RecordCount * OrdersPerCustomer;

  TableView->BeginUpdate();
  try {
    tblCompanies->First();
    while (!tblCompanies->Eof)
    {
      AnsiString ACompanyName = tblCompaniesCOMPANYNAME->AsString;
      int ACountryID = tblCompaniesCOUNTRYID->AsInteger;

      for (int i = 0; i < OrdersPerCustomer; i++)
      {
        int ARecordIndex = (tblCompanies->RecNo - 1) * OrdersPerCustomer + i;
        TcxCustomGridRow* ARow = TableView->ViewData->Rows[ARecordIndex];

        ARow->Values[TableViewCompany->Index] = ACompanyName;
        ARow->Values[TableViewCountry->Index] = ACountryID;
        ARow->Values[TableViewOrderDate->Index] =
          ADate + (int)(random(DayRange) - DayRange / 2) + (double)random(3599) / 3600;
        ARow->Values[TableViewProduct->Index] = GetProductName(1 + random(tblProducts->RecordCount));
        ARow->Values[TableViewQuantity->Index] = 1 + random(MaxQuantity);
      }
      
      tblCompanies->Next();
    }
    TableViewOrderDate->SortOrder = soAscending;
  }
  __finally {
    TableView->EndUpdate();
  }

  TableView->BeginUpdate();
  try {
    for(int i = 0; i < TableView->ViewData->RowCount; i++)
      TableView->ViewData->Rows[i]->Values[TableViewOrderID->Index] = 1 + i;
  }
  __finally {
    TableView->EndUpdate();
  }
}
//---------------------------------------------------------------------------

AnsiString TfrmMain::GetProductName(int AID)
{
  if (tblProducts->Locate("ID", AID, TLocateOptions()))
    return tblProductsName->AsString;
  else
    return "";
}
//---------------------------------------------------------------------------

void TfrmMain::UpdateMenuValues()
{
  miColumnFilterPopupMultiSelect->Checked = TableView->Filtering->ColumnPopup->MultiSelect;
  miApplyMultiSelectChanges->Enabled = TableView->Filtering->ColumnPopup->MultiSelect;
  if (TableView->Filtering->ColumnPopup->ApplyMultiSelectChanges == fpacImmediately)
    miApplyMultiSelectChangesImmediately->Checked = true;
  else
    miApplyMultiSelectChangesOnButtonClick->Checked = true;

  miColumnFilterPopupFilteredList->Checked = TableView->Filtering->ColumnFilteredItemsList;

  miFilterRow->Checked = TableView->FilterRow->Visible;
  miApplyFilterRowChanges->Enabled = TableView->FilterRow->Visible;
  if (TableView->FilterRow->ApplyChanges == fracOnCellExit)
    miApplyFilterRowChangesOnCellExit->Checked = true;
  else
    miApplyFilterRowChangesImmediately->Checked = true;

  for (int i = 0; i < miDateTimeFilters->Count; i++)
    miDateTimeFilters->Items[i]->Checked = TableView->DateTimeHandling->Filters.Contains((TcxGridDateTimeFilter)i);
}
//---------------------------------------------------------------------------

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

void __fastcall TfrmMain::miColumnFilterPopupMultiSelectClick(
      TObject *Sender)
{
  TableView->Filtering->ColumnPopup->MultiSelect = !TableView->Filtering->ColumnPopup->MultiSelect;
  UpdateMenuValues();
}
//---------------------------------------------------------------------------

void __fastcall TfrmMain::miApplyMultiSelectChangesClick(TObject *Sender)
{
  TableView->Filtering->ColumnPopup->ApplyMultiSelectChanges =
    (TcxGridItemFilterPopupApplyChangesMode)((TMenuItem*)Sender)->MenuIndex;
  UpdateMenuValues();
}
//---------------------------------------------------------------------------

void __fastcall TfrmMain::miColumnFilterPopupFilteredListClick(
      TObject *Sender)
{
  TableView->Filtering->ColumnFilteredItemsList = !TableView->Filtering->ColumnFilteredItemsList;
  UpdateMenuValues();
}
//---------------------------------------------------------------------------

void __fastcall TfrmMain::miFilterRowClick(TObject *Sender)
{
  TableView->FilterRow->Visible = !TableView->FilterRow->Visible;
  UpdateMenuValues();
}
//---------------------------------------------------------------------------

void __fastcall TfrmMain::miApplyFilterRowChangesClick(TObject *Sender)
{
  TableView->FilterRow->ApplyChanges =
    (TcxGridFilterRowApplyChangesMode)((TMenuItem*)Sender)->MenuIndex;
  UpdateMenuValues();
}
//---------------------------------------------------------------------------

void __fastcall TfrmMain::miDateTimeFilterClick(TObject *Sender)
{
  TcxGridDateTimeFilter AFilter = (TcxGridDateTimeFilter)((TMenuItem*)Sender)->MenuIndex;
  TcxGridDateTimeFilters AFilters = TableView->DateTimeHandling->Filters;
  if (AFilters.Contains(AFilter))
    AFilters >> AFilter;
  else
    AFilters << AFilter;
  TableView->DateTimeHandling->Filters = AFilters;
  UpdateMenuValues();
}
//---------------------------------------------------------------------------

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

⌨️ 快捷键说明

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