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

📄 gridmenuviewsdemomain.cpp

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

#include <vcl.h>
#include "shellapi.hpp"
#pragma hdrstop

#include "GridMenuViewsDemoMain.h"
#include "GridMenuViewsDemoData.h"
#include "AboutDemoForm.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "cxClasses"
#pragma link "cxControls"
#pragma link "cxCustomData"
#pragma link "cxData"
#pragma link "cxDBData"
#pragma link "cxEdit"
#pragma link "cxFilter"
#pragma link "cxGraphics"
#pragma link "cxGrid"
#pragma link "cxGridCustomTableView"
#pragma link "cxGridCustomView"
#pragma link "cxGridDBTableView"
#pragma link "cxGridLevel"
#pragma link "cxGridTableView"
#pragma link "cxStyles"
#pragma link "cxGridCustomPopupMenu"
#pragma link "cxGridPopupMenu"
#pragma link "cxLookAndFeels"
#pragma resource "*.dfm"
TGridMenuViewsDemoMainForm *GridMenuViewsDemoMainForm;

//---------------------------------------------------------------------------
__fastcall TGridMenuViewsDemoMainForm::TGridMenuViewsDemoMainForm(TComponent* Owner)
  : TForm(Owner)
{
}
//---------------------------------------------------------------------------

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

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

void __fastcall TGridMenuViewsDemoMainForm::FormShow(TObject *Sender)
{
 if (GridMenuViewsDemoDataDM->tblOrders->Active)
 {
  tvOrders->DataController->Groups->FullCollapse();
  tvOrders->DataController->Groups->ChangeExpanding(0, false, false);
  tvOrders->DataController->GotoFirst();
 }
}
//---------------------------------------------------------------------------

void __fastcall TGridMenuViewsDemoMainForm::miCopyToClipboardClick(TObject *Sender)
{
  Variant AValue;
  TcxCustomGridHitTest *AHitTest = GridPopupMenu->HitTest;
  TcxGridViewHitType AHitType = GetHitTypeByHitCode(AHitTest->HitTestCode(AHitTest->ClassType()));
  switch (AHitType){
    case gvhtFooterCell:
      AValue =
        GetFooterSummaryValue((TcxGridFooterCellHitTest*)AHitTest);
      break;
    case gvhtGroupFooterCell:
      AValue =
        GetGroupFooterSummaryValue((TcxGridGroupFooterCellHitTest*)AHitTest);
  }
  Clipboard()->AsText = VarToStr(AValue);
  MessageDlg("Clipboard: "+ VarToStr(AValue), mtInformation, TMsgDlgButtons() << mbOK, 0);
}
//---------------------------------------------------------------------------

int TGridMenuViewsDemoMainForm::GetSummaryItemIndexByColumn(TcxDataSummaryItems *ASummaryItems,
  TcxGridColumn *AColumn)
{
  int Result = -1;
  for (int I = 0; I < ASummaryItems->Count; I++)

    if ((((TcxGridTableSummaryItem*)(ASummaryItems->Items[I]))->Column == AColumn)
      && (ASummaryItems->Items[I]->Position == spFooter))
      Result =  I;
  return Result;
}
//---------------------------------------------------------------------------

Variant TGridMenuViewsDemoMainForm::GetFooterSummaryValue(TcxGridFooterCellHitTest *AHitTest)
{
  TcxDataSummary *ASummary = tvOrders->DataController->Summary;
  return ASummary->FooterSummaryValues[
    GetSummaryItemIndexByColumn(ASummary->FooterSummaryItems, AHitTest->Column)];
}
//---------------------------------------------------------------------------

Variant TGridMenuViewsDemoMainForm::GetGroupFooterSummaryValue(TcxGridGroupFooterCellHitTest *AHitTest)
{
  TcxDataSummary *ASummary = tvOrders->DataController->Summary;
  TcxDataControllerGroups *ADataControllerGroups = tvOrders->DataController->Groups;
  int ARowIndex =
    ((TcxGridRowFooterCellViewInfo*)(AHitTest->ViewInfo))->GridRecord->Index;
  int ADataGroupIndex =
    ADataControllerGroups->DataGroupIndexByRowIndex[ARowIndex];
  return ASummary->GroupSummaryValues[ADataGroupIndex]
    [GetSummaryItemIndexByColumn(ASummary->DefaultGroupSummaryItems,
    AHitTest->Column)];
}
//---------------------------------------------------------------------------

void __fastcall TGridMenuViewsDemoMainForm::FormCreate(TObject *Sender)
{
  InsertMenuItem();
}
//---------------------------------------------------------------------------

void __fastcall TGridMenuViewsDemoMainForm::GridMenuPopup(TComponent *ASenderMenu,
    TcxCustomGridHitTest *AHitTest, int X, int Y)
{
  PopupMenu->Popup(X, Y);
}
//---------------------------------------------------------------------------

void __fastcall TGridMenuViewsDemoMainForm::miDeleteClick(TObject *Sender)
{
  tvOrders->Controller->DeleteSelection();
}
//---------------------------------------------------------------------------

void __fastcall TGridMenuViewsDemoMainForm::miInsertClick(TObject *Sender)
{
  tvOrders->DataController->Insert();
}
//---------------------------------------------------------------------------

void __fastcall TGridMenuViewsDemoMainForm::miUseBuiltInPopupMenuClick(TObject *Sender)
{
  ((TMenuItem*)Sender)->Checked = !((TMenuItem*)Sender)->Checked;
  GridPopupMenu->UseBuiltInPopupMenus = ((TMenuItem*)Sender)->Checked;
  if (((TMenuItem*)Sender)->Checked)
  {
    InsertMenuItem();
    miAddCopyToClipboard->Enabled = true;
    miAddCopyToClipboard->Checked = true;
  }
  else
    miAddCopyToClipboard->Enabled = false;
}
//---------------------------------------------------------------------------

void __fastcall TGridMenuViewsDemoMainForm::miUseCopyClipboardItemClick(TObject *Sender)
{
  ((TMenuItem*)Sender)->Checked = !((TMenuItem*)Sender)->Checked;
  if (GridPopupMenu->UseBuiltInPopupMenus)
    FMenuItem->Visible = ((TMenuItem*)Sender)->Checked;
}
//---------------------------------------------------------------------------

void __fastcall TGridMenuViewsDemoMainForm::miUseCustomPopupMenuClick(TObject *Sender)
{
  ((TMenuItem*)Sender)->Checked = !((TMenuItem*)Sender)->Checked;
  if (((TMenuItem*)Sender)->Checked){
    GridPopupMenu->PopupMenus->Items[0]->OnPopup = GridMenuPopup;
    GridPopupMenu->PopupMenus->Items[0]->PopupMenu = PopupMenu;
  }
  else{
    GridPopupMenu->PopupMenus->Items[0]->OnPopup = NULL;
    GridPopupMenu->PopupMenus->Items[0]->PopupMenu = NULL;
  }
}
//---------------------------------------------------------------------------

void TGridMenuViewsDemoMainForm::InsertMenuItem()
{
  TComponent *AMenu = NULL;
  TcxGridDefaultPopupMenu *ABuiltInMenus = GridPopupMenu->BuiltInPopupMenus;
  for (int I = 0; I < ABuiltInMenus->Count; I++)
    if ((TcxGridViewHitTypes()<<gvhtFooter<<gvhtFooterCell<<gvhtGroupFooter<<gvhtGroupFooterCell) *
      ABuiltInMenus->MenuInfos[I]->HitTypes != TcxGridViewHitTypes())
        AMenu = ABuiltInMenus->MenuInfos[I]->PopupMenu;
  if (AMenu != NULL && AMenu->InheritsFrom(__classid(TPopupMenu)))
  {
    FMenuItem = new TMenuItem(this);
    FMenuItem->Caption = "-";
    ((TPopupMenu*)AMenu)->Items->Add(FMenuItem);
    FMenuItem = new TMenuItem(this);
    FMenuItem->Caption = "Copy To Clipboard";
    FMenuItem->Hint = "Copy the contents to clipboard";
    FMenuItem->OnClick = miCopyToClipboardClick;
    ((TPopupMenu*)AMenu)->Items->Add(FMenuItem);
  }
}
//---------------------------------------------------------------------------



⌨️ 快捷键说明

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