chartdatadrillingdemomain.cpp

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

CPP
151
字号
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "ChartDataDrillingDemoMain.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 "cxDBData"
#pragma link "cxEdit"
#pragma link "cxFilter"
#pragma link "cxGraphics"
#pragma link "cxGrid"
#pragma link "cxGridChartView"
#pragma link "cxGridCustomTableView"
#pragma link "cxGridCustomView"
#pragma link "cxGridDBChartView"
#pragma link "cxGridDBTableView"
#pragma link "cxGridLevel"
#pragma link "cxGridTableView"
#pragma link "cxStyles"
#pragma resource "*.dfm"
TfrmMain *frmMain;
//---------------------------------------------------------------------------
__fastcall TfrmMain::TfrmMain(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

TcxGridDBColumn* TfrmMain::GetColumnByChartItem(TcxGridChartItem* AChartItem)
{
  TcxGridDBChartItemDataBinding* ADataBinding = (TcxGridDBChartItemDataBinding*)AChartItem->DataBinding;
  return TableView->GetColumnByFieldName(ADataBinding->FieldName);
}
//---------------------------------------------------------------------------

void TfrmMain::ShowTableActiveGroup()
{
  int ADataGroupIndex;

  // expand group rows so that the group with the active chart data is made visible
  ActiveDataGroups.Length = ChartView->ActiveDataLevel;
  TableView->BeginUpdate();
  try {
    TableView->DataController->Groups->FullCollapse();
    ADataGroupIndex = -1;
    for (int i = 0; i < ChartView->ActiveDataLevel; i++) {
      ADataGroupIndex = TableView->DataController->Groups->GetDataGroupIndexByGroupValue(
        ADataGroupIndex, ChartView->VisibleDataGroups[i]->ActiveValue);
      ActiveDataGroups[i] = ADataGroupIndex;

      int AGroupRowIndex = TableView->DataController->DataControllerInfo->DataGroups->Items[ADataGroupIndex]->RowIndex;
      TableView->DataController->Groups->ChangeExpanding(AGroupRowIndex, true, false);
      TableView->Controller->FocusedRowIndex = AGroupRowIndex;
    }
  }
  __finally {
    TableView->EndUpdate();
  }
  // select rows with the data used for the active chart
  TableView->BeginUpdate();
  try {
    if (ADataGroupIndex == -1)
      TableView->Controller->SelectAll();
    else {
      TableView->Controller->ClearSelection();
      for (int i = TableView->Controller->FocusedRowIndex + 1; i < TableView->ViewData->RowCount; i++) {
        TcxCustomGridRow* ARow = TableView->ViewData->Rows[i];
        if (ARow->Level == ChartView->ActiveDataLevel) {
          ARow->Focused = true;
          ARow->Selected = true;
        }
        else
          break;
      }
    }
  }  
  __finally {
    TableView->EndUpdate();
  }
}
//---------------------------------------------------------------------------

void TfrmMain::SynchronizeTableWithChart()
{
  UpdateTableGroupingAndColumnVisibility();
  ShowTableActiveGroup();
}
//---------------------------------------------------------------------------

void TfrmMain::UpdateTableGroupingAndColumnVisibility()
{
  TableView->BeginUpdate();
  try {
    TableView->Controller->ClearGrouping();
    for (int i = 0; i < ChartView->VisibleDataGroupCount; i++)
      GetColumnByChartItem(ChartView->VisibleDataGroups[i])->GroupIndex = i;

    for (int i = 0; i < ChartView->DataGroupCount; i++)
      GetColumnByChartItem(ChartView->DataGroups[i])->Visible = ChartView->DataGroups[i]->Visible;
    for (int i = 0; i < ChartView->SeriesCount; i++)
      GetColumnByChartItem(ChartView->Series[i])->Visible = ChartView->Series[i]->Visible;
  }    
  __finally {
    TableView->EndUpdate();
  }
}
//---------------------------------------------------------------------------

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

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

void __fastcall TfrmMain::GridActiveTabChanged(TcxCustomGrid *Sender,
      TcxGridLevel *ALevel)
{
  if (ALevel == GridLevelTable)
    SynchronizeTableWithChart();
}
//---------------------------------------------------------------------------

void __fastcall TfrmMain::TableViewStylesGetGroupStyle(
      TcxGridTableView *Sender, TcxCustomGridRecord *ARecord, int ALevel,
      TcxStyle *&AStyle)
{
  if (ARecord == NULL) return;
  int ADataGroupIndex = TableView->DataController->Groups->DataGroupIndexByRowIndex[ARecord->Index];
  for (int i = 0; i < ActiveDataGroups.Length; i++)
    if (ADataGroupIndex == ActiveDataGroups[i]) {
      AStyle = styleActiveGroup;
      break;
    };
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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