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

📄 summaryfooterdemoeditsummary.cpp

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

#include <vcl.h>
#pragma hdrstop

#include "SummaryFooterDemoEditSummary.h"
#include "SummaryFooterDemoMain.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "cxButtons"
#pragma link "cxContainer"
#pragma link "cxControls"
#pragma link "cxDropDownEdit"
#pragma link "cxEdit"
#pragma link "cxImageComboBox"
#pragma link "cxLookAndFeelPainters"
#pragma link "cxMaskEdit"
#pragma link "cxTextEdit"
#pragma link "cxListBox"
#pragma resource "*.dfm"
TSummaryFooterDemoEditSummaryForm *SummaryFooterDemoEditSummaryForm;
//---------------------------------------------------------------------------
__fastcall TSummaryFooterDemoEditSummaryForm::TSummaryFooterDemoEditSummaryForm(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TSummaryFooterDemoEditSummaryForm::btnAddClick(
      TObject *Sender)
{
  TcxGridDBTableSummaryItem* AFooterSummaryItem = ((TcxGridDBTableSummaryItem*)GetFooterSummaryItems()->Add());
  try {
    try {
      AFooterSummaryItem->BeginUpdate();
      if(cbFooterSummaryColumn->ItemIndex != -1);
        AFooterSummaryItem->Column =
          (TcxGridDBColumn*)GetFocusedView()->VisibleColumns[cbFooterSummaryColumn->ItemIndex];
      TcxGridDBColumn* AColumn = NULL;
      if(cbCalculatedColumn->ItemIndex != -1)
        AColumn =
          (TcxGridDBColumn*)GetFocusedView()->VisibleColumns[cbCalculatedColumn->ItemIndex];
      if(AColumn != NULL)
        AFooterSummaryItem->FieldName = AColumn->DataBinding->FieldName;
      AFooterSummaryItem->Kind = (TcxSummaryKind)((int)cbSummaryKind->EditValue);
      cbFooterSummaryColumn->ItemIndex = 0;
      cbSummaryKind->EditValue = 0;
    }
    __finally {
      AFooterSummaryItem->EndUpdate();
    }
  }
  catch(...) {
    ::MessageDlg("Invalid Data", mtError, TMsgDlgButtons()<<mbOK, 0);
    GetFooterSummaryItems()->Items[GetFooterSummaryItems()->Count - 1]->Free();
  }
  UpdateSummaryList(false);
}
//---------------------------------------------------------------------------

inline TcxDataFooterSummaryItems*  TSummaryFooterDemoEditSummaryForm::GetFooterSummaryItems()
{
  return SummaryFooterDemoMainForm->Grid->FocusedView->
    DataController->Summary->FooterSummaryItems;
}
//---------------------------------------------------------------------------

inline TcxGridDBTableView* TSummaryFooterDemoEditSummaryForm::GetFocusedView()
{
  return ((TcxGridDBTableView*)SummaryFooterDemoMainForm->Grid->FocusedView);  
}
//---------------------------------------------------------------------------

void TSummaryFooterDemoEditSummaryForm::UpdateSummaryList(bool AFirstItemActive)
{
  lbSummaries->Clear();
  for(int i = 0; i <= GetFooterSummaryItems()->Count - 1; i++)
    if(((TcxGridTableSummaryItem*)GetFooterSummaryItems()->Items[i])->Column != NULL)
      lbSummaries->Items->Add(
        ((TcxGridTableSummaryItem*)GetFooterSummaryItems()->Items[i])->Column->Caption);
    else
      lbSummaries->Items->Add("Unassigned");
  if(AFirstItemActive)
    lbSummaries->ItemIndex = 0;
  else
    lbSummaries->ItemIndex = lbSummaries->Items->Count - 1;
  btnDelete->Enabled = lbSummaries->Items->Count > 0;
}
//---------------------------------------------------------------------------

void __fastcall TSummaryFooterDemoEditSummaryForm::FormShow(
      TObject *Sender)
{
  cbCalculatedColumn->Properties->Items->Clear();
  cbFooterSummaryColumn->Properties->Items->Clear();
  for(int i = 0; i <= GetFocusedView()->VisibleColumnCount - 1; i++) {
    cbCalculatedColumn->Properties->Items->Add(GetFocusedView()->VisibleColumns[i]->Caption);
    cbFooterSummaryColumn->Properties->Items->Add(GetFocusedView()->VisibleColumns[i]->Caption);
  }
  if(GetFocusedView()->VisibleColumnCount > 0)
    cbFooterSummaryColumn->ItemIndex = 0;
  else
    btnAdd->Enabled = false;
  UpdateSummaryList(true);
}
//---------------------------------------------------------------------------

void TSummaryFooterDemoEditSummaryForm::UpdateSummaryKinds(TField* AField)
{
  TcxFieldTypes NumberFieldTypes;
  NumberFieldTypes = NumberFieldTypes<<ftSmallint<<ftInteger<<ftWord<<ftFloat<<
    ftCurrency<<ftBCD<<ftDate<<ftTime<<ftDateTime<<ftAutoInc;
  TcxFieldTypes TimeFieldTypes;
  TimeFieldTypes = TimeFieldTypes<<ftDate<<ftTime<<ftDateTime;
  cbSummaryKind->Properties->Items->Clear();
  if(AField != NULL) {
    AddSummaryKind(skNone);
    AddSummaryKind(skCount);
    if(NumberFieldTypes.Contains(AField->DataType)) {
      AddSummaryKind(skMax);
      AddSummaryKind(skMin);
      if(!TimeFieldTypes.Contains(AField->DataType)) {
        AddSummaryKind(skSum);
        AddSummaryKind(skAverage);
      }
    }
  }
  if(cbSummaryKind->Properties->Items->Count == 0)
    cbSummaryKind->Enabled = False;
  else {
    cbSummaryKind->Enabled = True;
    cbSummaryKind->EditValue = 0;
  }
}
//---------------------------------------------------------------------------

void TSummaryFooterDemoEditSummaryForm::AddSummaryKind(TcxSummaryKind AKind)
{
  TcxImageComboBoxItem* AItem = (TcxImageComboBoxItem*)cbSummaryKind->Properties->Items->Add();
  switch(AKind) {
    case skNone:
      SetItemProperties("None", -1, 0, AItem);
      break;
    case skSum:
      SetItemProperties("Sum", 6, 1, AItem);
      break;
    case skMin:
      SetItemProperties("Min", 5, 2, AItem);
      break;
    case skMax:
      SetItemProperties("Max", 4, 3, AItem);
      break;
    case skCount:
      SetItemProperties("Count", 3, 4, AItem);
      break;
    case skAverage:
      SetItemProperties("Average", 7, 5, AItem);
      break;
  };
}
//---------------------------------------------------------------------------

void TSummaryFooterDemoEditSummaryForm::SetItemProperties(AnsiString ADescription,
        int AImageIndex, int AValue, TcxImageComboBoxItem* AItem)
{
  AItem->Description = ADescription;
  AItem->ImageIndex = AImageIndex;
  AItem->Value = AValue;
}
//---------------------------------------------------------------------------


void __fastcall TSummaryFooterDemoEditSummaryForm::cbCalculatedColumnPropertiesChange(
      TObject *Sender)
{
  if(cbCalculatedColumn->ItemIndex != -1) {
    TcxGridDBColumn* AColumn =
      (TcxGridDBColumn*)GetFocusedView()->VisibleColumns[cbCalculatedColumn->ItemIndex];
    UpdateSummaryKinds(AColumn->DataBinding->Field);
  }
}
//---------------------------------------------------------------------------

void __fastcall TSummaryFooterDemoEditSummaryForm::cbFooterSummaryColumnPropertiesChange(
      TObject &Sender)
{
  cbCalculatedColumn->ItemIndex = cbFooterSummaryColumn->ItemIndex;
}
//---------------------------------------------------------------------------

void __fastcall TSummaryFooterDemoEditSummaryForm::btnDeleteClick(
      TObject *Sender)
{
  TcxGridDBTableSummaryItem* AItem =
    (TcxGridDBTableSummaryItem*)GetFooterSummaryItems()->Items[lbSummaries->ItemIndex];
  if(AItem->FieldName != "")
    for(int i = 0; i < GetFocusedView()->VisibleColumnCount - 1; i++) {
      TcxGridDBColumn* AColumn = (TcxGridDBColumn*)GetFocusedView()->VisibleColumns[i];
      if(AColumn->DataBinding->FieldName == AItem->FieldName) {
        cbCalculatedColumn->ItemIndex = AColumn->VisibleIndex;
        break;
      }
    }
  if(AItem->Column != NULL)
    cbFooterSummaryColumn->ItemIndex = AItem->Column->VisibleIndex;
  cbSummaryKind->EditValue = (int)AItem->Kind;;
  GetFooterSummaryItems()->Items[lbSummaries->ItemIndex]->Free();
  UpdateSummaryList(true);
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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