一、 以前的程序中实现分组编译都是动态生成SQL语句,到服务器执行,而后显示结果。如今用PivotGridEh,太方便了。可是在测试过程当中费了很多劲,自带的例子很正常。通过代码跟踪,发现是字段的Required应该设置为false便可。 要修改单元PivotGridEh中4个过程,分别是:测试 procedure MakeColsTable;ui procedure MakeInverseGaussMatrix;事件 procedure MakeResultAggrTable;it procedure MakeRowsTable;io 在数据集打开以后,设置字段属性Required := false;编译 以下:List ColsTable.Open;程序 for I := 0 to ColsTable.FieldCount - 1 do数据 ColsTable.Fields[i].Required := False; 其它几个过程参照上面代码修改。 二、 给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; 三、 增长样式属性 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; |
|