起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 239|回复: 17

【结贴】[请求]如何屏蔽DataGrid 的 Ctrl 实现多选功能

[复制链接]
发表于 2008-6-16 17:00:52 | 显示全部楼层 |阅读模式
DataGrid设置为可以多选时,如何屏蔽Ctrl + 点击的多项选择功能,Shift + 点击 选择多项的功能要保留。

谢谢
回复

使用道具 举报

发表于 2008-6-16 18:31:17 | 显示全部楼层
这个不支持的,只有能选中和不能选中的
回复 支持 反对

使用道具 举报

发表于 2008-6-16 18:43:53 | 显示全部楼层
楼主可以试试在keydown事件中截获Ctrl键看看。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-17 10:55:48 | 显示全部楼层
最初由 zfang 发布
[B]楼主可以试试在keydown事件中截获Ctrl键看看。 [/B]


捕获了不好使 ,DataGrid根据Ctrl键做选定的处理在这个事件触发之前就执行了

所以在这个事件中没法处理啊
回复 支持 反对

使用道具 举报

发表于 2008-6-17 11:00:11 | 显示全部楼层
怎么会呢,我测试过,没有问题。
回复 支持 反对

使用道具 举报

发表于 2008-6-17 11:01:01 | 显示全部楼层
我是这么处理的
procedure TMainForm.DataGrid1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  if TShiftStateEnum.ssCtrl in Shift then
  begin
    DataGrid1.Options := DataGrid1.Options - [TGroupListOption.egoMultiSelect];
  end
  else
    DataGrid1.Options := DataGrid1.Options + [TGroupListOption.egoMultiSelect];
end;
回复 支持 反对

使用道具 举报

发表于 2008-6-17 11:01:33 | 显示全部楼层
你试试看,是否能满足你的要求。如果不行再想办法。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-17 11:07:03 | 显示全部楼层
最初由 zfang 发布
[B]你试试看,是否能满足你的要求。如果不行再想办法。 [/B]


好的 我试试再回复
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-17 11:17:42 | 显示全部楼层
最初由 zfang 发布
[B]你试试看,是否能满足你的要求。如果不行再想办法。 [/B]


我发现我表达能力不是太好 老也说的有点不是太清楚 --- --- ||

问题是这样子的,现在要屏蔽Ctrl + 鼠标单击 选择的功能。因此我在OnMouseDown 事件里加了捕获Ctrl键的 处理,问题是不按Ctrl的时候可以触发,但是按着Ctrl键就不能触发了。


在OnMouseUp 事件中不论按着Ctrl或者不按都可以触发这个事件,但是现在DataGrid根据Ctrl的状态做出多选的过程已经处理完毕了,因此在OnMouseUp中是不行的。
回复 支持 反对

使用道具 举报

发表于 2008-6-17 11:25:36 | 显示全部楼层
6楼的代码你试过了么?
我就加了6楼的代码,Ctrl + 鼠标单击是不能多选记录的。但按住shift+鼠标单击是可以多选的。你的需求不就是这样子的么?
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-17 20:38 , Processed in 0.043198 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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