📄 summaryfooterdemoeditsummary.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 + -