change the summary types (right mouse click on the group footer cell)

解决方案 »

  1.   

    我觉得很难的, 除非你改写TcxDBDataSummaryItem加上MouseMove事件.
    我的做法是在Cell中右击调用统计菜单, 代码如下希望对你有些帮忙.type
      TForm1 = class(TForm)
        tvcxgd1DBTableView1: TcxGridDBTableView;
        lvcxgd1Level1: TcxGridLevel;
        cxgd1: TcxGrid;
        ds1: TDataSource;
        qry1: TADOQuery;
        con1: TADOConnection;
        cltvcxgd1DBTableView1ID: TcxGridDBColumn;
        cltvcxgd1DBTableView1desr: TcxGridDBColumn;
        cltvcxgd1DBTableView1TEST: TcxGridDBColumn;
        cltvcxgd1DBTableView1Num: TcxGridDBColumn;
        pm1: TPopupMenu;
        btn1: TButton;
        procedure tvcxgd1DBTableView1CellClick(Sender: TcxCustomGridTableView;
          ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
          AShift: TShiftState; var AHandled: Boolean);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
        procedure OnMenuItemClick(Sender:TObject);
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementationuses
      TypInfo;
    {$R *.dfm}procedure TForm1.OnMenuItemClick(Sender: TObject);
    begin
      tvcxgd1DBTableView1.DataController.Summary.FooterSummaryItems[0].Kind:=
        TcxsummaryKind((sender as TMenuItem).tag) ;
    end;procedure TForm1.tvcxgd1DBTableView1CellClick(
      Sender: TcxCustomGridTableView;
      ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
      AShift: TShiftState; var AHandled: Boolean);
    var
      Pt:TPoint;
    begin
      if AButton=mbright then begin
        GetCursorPos(Pt);
        pm1.Popup(Pt.X, Pt.Y);
        AHandled:=True;
      end;
    end;procedure TForm1.FormCreate(Sender: TObject);
    var
      MI:TMenuItem;
      MinValue, MaxValue, I:Integer;
      MiCaption:string;
    begin
      pm1.Items.Clear;
      MinValue:=GetTypeData(TypeInfo(TcxSummaryKind))^.MinValue;
      MaxValue:=GetTypeData(TypeInfo(TcxSummaryKind))^.MaxValue;
      for I:= MinValue to MaxValue do begin
        MI:=TMenuItem.Create(Self);
        MiCaption:=GetEnumName(TypeInfo(TcxSummaryKind), I);
        MiCaption:=Copy(MiCaption, 3, Length(MiCaption)-2);
        MI.Caption:=MiCaption;
        MI.Tag:=I;
        MI.OnClick:=OnMenuItemClick;
        pm1.Items.Add(MI);
      end;
    end;***********************************
     高级群号:16497064欢迎编程高手加入.
    ***********************************
      

  2.   

    cxGrid似乎很难但是用Dev公司的另外一套类似Excel的控件就很简单!