起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 223|回复: 8

【结】关于DecisionGridDecisionExamineCell事件

[复制链接]
发表于 2010-4-23 12:51:13 | 显示全部楼层 |阅读模式
DecisionGridDecisionExamineCell该事件是右键触发的,怎么使它能鼠标左键触发呢?
回复

使用道具 举报

 楼主| 发表于 2010-4-23 14:00:31 | 显示全部楼层
顶起来
回复 支持 反对

使用道具 举报

发表于 2010-4-23 14:21:45 | 显示全部楼层
楼主,你描述一下,这么做的目的是想实现什么。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-4-23 20:49:38 | 显示全部楼层
点击一个单元格显示单元格的行标签和列标签
回复 支持 反对

使用道具 举报

发表于 2010-4-26 10:51:33 | 显示全部楼层
请稍等,我这边尝试一下。
回复 支持 反对

使用道具 举报

发表于 2010-4-26 11:04:20 | 显示全部楼层
参考代码:
1、调用过程
ShowDecisionGridCellInfo(DecisionGrid);
2、逻辑实现
procedure ShowDecisionGridCellInfo(ADecisionGrid: TDecisionGrid);
var
  I: Integer;
  P: TPoint;
  lMsg: TStringList;
  lSourceCell: TGridCoord;
  lSmallIntArray: TSmallIntArray;
  lSubLevel: Integer;
  lDecisionDataSet: TDecisionDataSet;
begin
  if Assigned(ADecisionGrid) and
    Assigned(ADecisionGrid.DecisionSource) and
    Assigned(ADecisionGrid.DecisionSource.DecisionCube) and
    Assigned(ADecisionGrid.DecisionSource.DecisionCube.DataSource) and
    Assigned(ADecisionGrid.DecisionSource.DecisionCube.DataSource.DataSet) then
  begin
    lDecisionDataSet := ADecisionGrid.DecisionSource.DecisionCube.DataSource.DataSet as TDecisionDataSet;
    P.X := -1; P.Y := -1;
    Borland.Delphi.Windows.GetCursorPos(P);
    P := ADecisionGrid.ScreenToClient(P);
    lSourceCell := ADecisionGrid.MouseCoord(P.X, P.Y);

    lSmallIntArray := TSmallIntArray.Create(0, 0);
    try
      P.X := lSourceCell.X - ADecisionGrid.DecisionSource.nOpenRowDims - 1;
      if (ADecisionGrid.DecisionSource.nColDims > 0) and
        (ADecisionGrid.DecisionSource.nOpenColDims = 0) then
        P.Y := lSourceCell.Y - 2
      else
        P.Y := lSourceCell.Y - ADecisionGrid.DecisionSource.nOpenColDims - 1;
      if (0 <= P.X) and (P.X < ADecisionGrid.DecisionSource.nDataCols) and
        (0 <= P.Y) and (P.Y < ADecisionGrid.DecisionSource.nDataRows) and
        ADecisionGrid.DecisionSource.GetValueArray(P.X, P.Y, lSmallIntArray) then
      begin
        lMsg := TStringList.Create;
        try
          for I := 0 to lSmallIntArray.Limit - 1 do
          begin
            if lSmallIntArray[I] <> -1 then
              lMsg.Add(ADecisionGrid.DecisionSource.GetDefDimsName(I) + '(' +
                lDecisionDataSet.DecisionDef.DimensionDefs[I].FieldName + ')' +
                ': ' +
                ADecisionGrid.DecisionSource.GetMemberDisplayText(I, lSmallIntArray[I]) + '(' +
                ADecisionGrid.DecisionSource.GetMemberAsString(I, lSmallIntArray[I]) + ')'
                )
            else
              lMsg.Add(ADecisionGrid.DecisionSource.GetDefDimsName(I) + ': ' +
                '[小计]()');
          end;

          lSubLevel := -1;
          I := ADecisionGrid.DecisionSource.CurrentSum;
          jsDialogs.ShowMsg(lMsg.Text,
            ADecisionGrid.DecisionSource.GetDefSummsName(I) + '(' +
            lDecisionDataSet.DecisionDef.SummaryDefs[I].FieldName + ')' +
            ': ' +
            ADecisionGrid.DecisionSource.GetDataAsString(P.Y, P.X, lSubLevel));
        finally
          lMsg.Free;
        end;
      end;
    finally
      lSmallIntArray.free;
    end;
  end;
end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-4-26 12:58:12 | 显示全部楼层
ok,下午我试试
回复 支持 反对

使用道具 举报

发表于 2010-4-26 13:13:08 | 显示全部楼层
好,楼主记得反馈。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-4-26 19:47:44 | 显示全部楼层
OK,实现了,结贴吧
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-9 06:10 , Processed in 0.042277 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表