首页 > 学院 > 开发设计 > 正文

DBGridEh用法总结二(PivotGrid的使用)

2019-11-11 06:01:23
字体:
来源:转载
供稿:网友

1、  之前的程序中实现分组编译都是动态生成SQL语句,到服务器执行,然后显示结果。现在用PivotGridEh,太方便了。但是在测试过程中费了不少劲,自带的例子很正常。经过代码跟踪,发现是字段的Required应该设置为false即可。解决办法

要修改单元PivotGridEh中4个过程,分别是:

    PRocedure MakeColsTable;

    procedure MakeInverseGaussMatrix;

    procedure MakeResultAggrTable;

    procedure MakeRowsTable;

在数据集打开之后,设置字段属性Required := false;

如下:

  ColsTable.Open;

  for I := 0 to ColsTable.FieldCount - 1 do

    ColsTable.Fields[i].Required := False;

其它几个过程参照上面代码修改。

2、  给PivotGridToolBoxEh设置排列样式

在基类TCustomPivotGridToolBoxEh 的Create事件中添加如下代码以创建右键菜单。

  FBuJuPM := TPopupMenu.Create(Self);

  FBuJuOne := TMenuItem.Create(FBuJuPM);

  FBuJuOne.Tag := 0;

  FBuJuOne.Caption := '上下排列';

  FBuJuOne.RadioItem := True;

  FBuJuOne.Checked := True;

  FBuJuOne.OnClick := self.BuJuPMClick;

  FBuJuPM.Items.Add(FBuJuOne);

  FBuJuTwo := TMenuItem.Create(FBuJuPM);

  FBuJuTwo.Tag := 1;

  FBuJuTwo.Caption := '左右排列';

  FBuJuTwo.RadioItem := True;

  FBuJuTwo.OnClick := self.BuJuPMClick;

  FBuJuPM.Items.Add(FBuJuTwo);

  self.PopupMenu :=FBuJuPM;

右键菜单事件代码:

procedure TCustomPivotGridToolBoxEh.BuJuPMClick(Sender:TObject);

var

  tmpMI: TMenuItem;

begin

  tmpMI := TMenuItem(Sender);

  if tmpMI.Tag = 0 then

  begin

    FSplitter.SetBounds(0,10,2,8);

    FPivotDataPanel.Align := alBottom;

    FSplitter.Align := alBottom;

    FFieldListPanel.Align := alClient;

    self.Width := self.Width div 2;

  end

  else

  begin

    FSplitter.SetBounds(0,10,2,10);

    FPivotDataPanel.Align := alRight;//alBottom;

    FSplitter.Align := alRight;//alBottom;

    FFieldListPanel.Align := alClient;

    self.Width := self.Width * 2;

  end;

  tmpMI.Checked :=True;

end;

3、  增加样式属性

property BuJuCols: Integer read FBuJuCols write SetBujuColsdefault 1;

1=默认的一列样式,2=两列显示,这样字段比较多时,可以显示更多的字段以方便操作。

事件代码如下:

procedureTCustomPivotGridToolBoxEh.SetBujuCols(const Value: Integer);

begin

  FBuJuCols := Value;

  if Value = 1 then

    BuJuPMClick(FBuJuOne)

  else

    BuJuPMClick(FBuJuTwo);

end;
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表