加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 与Firemonkey MouseToCell等效

发布时间:2020-12-15 09:36:52 所属栏目:大数据 来源:网络整理
导读:在Delphi VCL中如果我想查看我的鼠标悬停在TStringGrid的哪个单元格(列和行),我会使用MouseToCell.对于FireMonkey应用程序,此方法不再适用于Delphi(XE2).有谁知道我怎么能确定我的鼠标结束的细胞? OnMouseMove有X Y值但这些是屏幕坐标而不是单元格坐标. 非
在Delphi VCL中如果我想查看我的鼠标悬停在TStringGrid的哪个单元格(列和行),我会使用MouseToCell.对于FireMonkey应用程序,此方法不再适用于Delphi(XE2).有谁知道我怎么能确定我的鼠标结束的细胞? OnMouseMove有X& Y值但这些是屏幕坐标而不是单元格坐标.

非常感谢.

解决方法

在TCustomGrid中实际上有一个MouseToCell方法,StringGrid下降,但它是私有的.从它的来源来看,它使用了ColumnByPoint和RowByPoint方法,幸运的是它们是公开的.

‘column’返回TColumn,如果没有列,则返回nil. ‘row’返回一个正整数,或者当没有行时返回-1.此外,第一行不关心行数,它只考虑行高并基于此返回行号,即使没有行.此外,我应该注意,网格标题上的行为是错误的.无论如何,示例示例可能如下:

procedure TForm1.StringGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,Y: Single);
var
  Col: TColumn;
  C,R: Integer;
begin
  Col := StringGrid1.ColumnByPoint(X,Y);
  if Assigned(Col) then
    C := Col.Index
  else
    C := -1;
  R := StringGrid1.RowByPoint(X,Y);

  Caption := Format('Col:%d Row:%d',[C,R]);
end;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读