DELPHI 解决DBGrid SHIFT键多选问题
在实际项目中,偶然遇到需要按下SHIFT键,在DBGrid中进行多选的情况,测试了几种方法,最终确定了一个比较好的解决方法,总结如下:
procedure TTestFrame.TestDBGridMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin //实现 Shift+鼠标左键单击 多选
if Button = mbLeft then
begin
if not FblSelect then
begin
FBookMark := TDBGrid(Sender).DataSource.DataSet.GetBookMark;
FOldNo := TDBGrid(Sender).DataSource.DataSet.RecNo;
FblSelect := True;
Exit;
end
else
begin
if ssShift in Shift then
begin
FCurrNo := TDBGrid(Sender).DataSource.DataSet.RecNo;
TDBGrid(Sender).DataSource.DataSet.DisableControls;
TDBGrid(Sender).DataSource.DataSet.GotoBookmark(FBookMark);
TDBGrid(Sender).SelectedRows.CurrentRowSelected := True;
if FCurrNo > FOldNo then
begin
while FCurrNo > TDBGrid(Sender).DataSource.DataSet.RecNo do
begin
TDBGrid(Sender).SelectedRows.CurrentRowSelected := True;
TDBGrid(Sender).DataSource.DataSet.Next;
end;
end
else
begin
while FCurrNo < TDBGrid(Sender).DataSource.DataSet.RecNo do
begin
TDBGrid(Sender).SelectedRows.CurrentRowSelected := True;
TDBGrid(Sender).DataSource.DataSet.Prior;
end;
end;
TDBGrid(Sender).DataSource.DataSet.EnableControls;
TDBGrid(Sender).DataSource.DataSet.FreeBookmark(FBookMark);
FblSelect := False;
FCurrNo := ;
FOldNo := ;
TDBGrid(Sender).Invalidate;
end
else
begin
FBookMark := TDBGrid(Sender).DataSource.DataSet.GetBookMark;
FOldNo := TDBGrid(Sender).DataSource.DataSet.RecNo;
FblSelect := True;
Exit;
end;
end;
end;
end;
DELPHI 解决DBGrid SHIFT键多选问题的更多相关文章
- Delphi实现DBGrid Shift+鼠标左键单击 多选
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...
- D3.js v4版本 按住shift键框选节点demo
http://download.csdn.net/download/qq_25042329/10139649
- shift键复选dataGrid的记录时多余的文本总被选择了。
document.onkeydown = function(event) { if (event.shiftKey) { document.onselectstart = function(event ...
- Delphi实现DBGrid全选和反选功能
Delphi实现Dbgrid全选和反选.清除全选的功能,不管是在Delphi下,还是在WEB开发中,这种功能都是很实用的,是进行数据批量操作的基础.本模块就是实现了为Delphi的DBGrid数据列表 ...
- 按着shift键对dbgrid进行多条记录选择的问题(50分)
可以用sendmessage,想dbgrid 发键盘信息,按下shift键,同时按下button1procedure TForm1.Button1Click(Sender: TObject);vari ...
- Day10 - JS 实现 Checkbox 中按住 Shift 的多选功能
Day10 - JS 实现 Checkbox 中按住 Shift 的多选功能 作者:liyuechun 简介:JavaScript30 是 Wes Bos 推出的一个 30 天挑战.项目免费提供了 3 ...
- shift键有什么用?怎么用?shift键的妙用
一.当你用QQ和别人聊天时,是不是有时信息发送的特别慢呀,不要紧,只要你发信息时按shift 键信息就会很快的发送出去的! 二.当你面对一大堆窗口,却要一个一个把它们关掉时.是不是很烦啊.只要你按sh ...
- 怎么实现ZBrush中Alt键和Shift键的灵活运用
ZBrush是一个数字雕刻和绘画软件,它以强大的功能和直观的工作流程彻底改变了整个三维雕刻行业.在一个简洁的界面中,ZBrush为当代数字艺术家提供了世界上最先进的工具.利用快捷键能使操作更快捷高效, ...
- 如何实现ZBrush中的Alt和Shift键的快速运用
ZBrush是一个数字雕刻和绘画软件,它以强大的功能和直观的工作流程彻底改变了整个三维雕刻行业.在一个简洁的界面中,ZBrush®为当代数字艺术家提供了世界上最先进的工具.利用快捷键能使操作更快捷高效 ...
随机推荐
- 分布式爬虫之elasticsearch基础1
一:搜索引擎elasticsearch介绍 Elasticsearch 是一个全文搜索引擎,可以快速地储存.搜索和分析海量数据. 二:应用场景 海量数据分析引擎 站内搜索引擎 数据仓库 三:安装 我们 ...
- PAT A1120 Friend Numbers (20 分)——set
Two integers are called "friend numbers" if they share the same sum of their digits, and t ...
- PAT A1019 General Palindromic Number (20 分)——回文,进制转换
A number that will be the same when it is written forwards or backwards is known as a Palindromic Nu ...
- Bellman_ford模板
参考博客: https://blog.csdn.net/u011893609/article/details/81232124 https://blog.csdn.net/bestsort/artic ...
- 17-(基础入门篇)GPRS(Air202)串口
https://www.cnblogs.com/yangfengwu/p/9968716.html 现在看一下官方给的demo 其实只要有两个就好说了 module(...,package.seeal ...
- 案例学python——案例三:豆瓣电影信息入库
闲扯皮 昨晚给高中的妹妹微信讲题,函数题,小姑娘都十二点了还迷迷糊糊.今天凌晨三点多,被连续的警报声给惊醒了,以为上海拉了防空警报,难不成地震,空袭?难道是楼下那个车主车子被堵了,长按喇叭?开窗看看, ...
- Linux 小记 — Ubuntu 自动化配置
前言 工欲善其事,必先利其器.经过多次的重复配置 ubuntu 开发坏境,我终于决定花点时间总结一下,并将其写成一个自动化配置脚本.服务器实例:ubuntu 16.04,技术栈:shell,pytho ...
- 理解Liang-Barsky裁剪算法的算法原理
0.补充知识向量点积:结果等于0, 两向量垂直; 结果大于0, 两向量夹角小于90度; 结果小于0, 两向量夹角大于90度.直线的参数方程:(x1, y1)和(x2, y2)两点确定的直线, 其参数方 ...
- 【个人总结】软件工程M1/M2总结
个人博客连接: http://www.cnblogs.com/lwq12061168/p/4094252.html http://www.cnblogs.com/lwq12061168/p/40284 ...
- Linux内核读书笔记第三周 调试
内核调试的难点在于它不能像用户态程序调试那样打断点,随时暂停查看各个变量的状态. 也不能像用户态程序那样崩溃后迅速的重启,恢复初始状态. 用户态程序和内核交互,用户态程序的各种状态,错误等可以由内核来 ...