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®为当代数字艺术家提供了世界上最先进的工具.利用快捷键能使操作更快捷高效 ...
随机推荐
- TStack与IBM LinuxONE通过兼容性认证
近日,腾讯云TStack与IBM LinuxONE通过兼容性认证,通过腾讯云TStack,可实现便捷管理IBM LinuxONE服务器.这为腾讯和IBM在未来多方面的商业合作奠定了坚实基础,也为腾讯云 ...
- AI 隐马尔科夫模型
隐马尔科夫模型(Hidden Markov Model,简称HMM),
- Html5 标签四 (列表)
1.有序列表 2.无序列表 3.自定义列表 <!DOCTYPE html> <html lang="en"> <head> <meta c ...
- AliOS-Things linkkitapp解读
app-example-linkkitapp是AliOS-Things提供的设备联网并且和阿里云IOT平台数据交互的一个示例程序: 1:application_start()程序在app_entry. ...
- 【LeetCode225】 Implement Stack using Queues★
1.题目 2.思路 3.java代码 import java.util.LinkedList; import java.util.Queue; public class MyStack { priva ...
- ES6-课程介绍
ES6 可以提高开发效率,把ES3比做斧头,ES5比做锯子,那么ES6就是电锯. ES6新特性 默认参数.字符串模板.结构赋值.箭头函数.set\mat .异步操作.类和对象 .模块化
- mui 下拉刷新和上拉加载
<body> mui文档提供了两种不同模式的下拉刷新,具体情况看文档,链接:http://dev.dcloud.net.cn/mui/pulldown/ 单 webview 模式和 双 w ...
- WebApi 异步请求(HttpClient)
还是那几句话: 学无止境,精益求精 十年河东,十年河西,莫欺少年穷 学历代表你的过去,能力代表你的现在,学习代表你的将来 废话不多说,直接进入正题: 今天公司总部要求各个分公司把短信接口对接上,所谓的 ...
- [Oracle]如何在Oracle中设置Event
为了调查Oracle 的故障,可以通过设置event ,来了解详细的状况.方法如下: ■ 如果使用 SPFILE, =============To enable it: 1. Check the cu ...
- Stencil 基础
Stencil 一个轻量化,渐进式编译器,注意,不是框架. 使用 TypeScript 进行所有操作,这是一个门槛,有一定技术门槛要求. PS:个人强烈推荐所有的前端同学都学习,或至少了解这个超集语言 ...