起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 899|回复: 1

数据网格(DataGrid)分组后,截获鼠标点击的是否是分组行的方法

[复制链接]
发表于 2004-12-29 10:40:40 | 显示全部楼层 |阅读模式
接管 DataGrid  的 OnClick 事件,然后判断 FocusedNode.Count  是否大于 0 就可以了,如果大于就是分组行。


参考代码如下:

procedure TSJWG.DataGridClick(Sender: TObject);
begin
  if DataGrid.FocusedNode.Count > 0 then
  begin
    jsDialogs.ShowMsg('是分组行。', '');
  end;
end;
回复

使用道具 举报

 楼主| 发表于 2004-12-29 11:47:04 | 显示全部楼层

截获点击的是是否是分组汇总行的方法

接管DataGrid 的 MouseDown 事件,然后调用 DataGrid 的 GetHitInfo 方法来获取点击信息。

详细情况和参考代码如下:

procedure TSJWG.DataGridMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  lPoint: TPoint;
  lHitInfo: TTreeListHitInfo;
begin
  lPoint.X := X;
  lPoint.Y := Y;

  lHitInfo := DataGrid.GetHitInfo(lPoint);
  if lHitInfo.hitType = TTreeListHitTest.htSummaryNodeFooter then
  begin
    jsDialogs.ShowMsg('是分组汇总行。', '');
  end;
end;

GetHitInfo 方法原型如下:
function GetHitInfo(Pos: TPoint): TTreeListHitInfo; virtual;

TTreeListHitInfo 是一个结构体类型,原型如下:
TreeListHitInfo = record
    X, Y: Integer;                 // Client
    Band: Integer;                 // VisibleIndex
    Column: Integer;               // AbsoluteIndex
    Node: TTreeListNode;
    Row: Integer;
    FooterRow: Integer;
    hitType: TTreeListHitTest;
end;


TTreeListHitTest   是一个枚举类型,原型如下:
TTreeListHitTest = (htNowhere, htColumn, htColumnEdge, htButton,
    htIcon, htStateIcon, htIndent, htLabel, htRight, htOutside,
    htGroupPanel, htBandButton, htBand, htBandEdge, htHeaderButton,
    htIndicator, htNewRowItem, htSummaryNodeFooter, htSummaryFooter,
    htBandPanelEdge, htHeaderPanelEdge, htRowEdge, htPreview,
    htStatusPanel);
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-3 22:56 , Processed in 0.047127 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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