DBGRID控件里可以实现SHIFT复选吗?怎么设置?
////////////////////////////////////////////////
// 功能概述:公用的列表框选择框,是用DBGrid网格
//
// 注意事项:希望用Query查询列表
//
// 编写时间:shuszj
//
// 编写人员:2002.04.02
//
////////////////////////////////////////
unit uSelect_DBGrid;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ImgList, Grids, DBGrids, ComCtrls, StdCtrls, Mask,
ToolWin, DBTables, USELECT, XPMenu, Buttons, ExtCtrls, ADODB;
const
WM_SelectShare = WM_USER +10; //公用列表
type
TSzjDBGrid = class(TDBGrid);
TFmSelect_DBGrid = class(TFmSelect)
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure DBGrid1CellClick(Column: TColumn);
procedure DBGrid1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure SpeedButton1Click(Sender: TObject);
private
m_sOne, m_sTwo :Integer; //记下点击的当前的记录的行
m_OneBMark, m_TwoBMark :TBookmark; //记下点击的标签
{ Private declarations }
public
{ Public declarations }
procedure FPostion(Lft,Tp:integer);
end;
var
FmSelect_DBGrid: TFmSelect_DBGrid;
implementation
{$R *.dfm}
{ TFmSelect_DBGrid }
procedure TFmSelect_DBGrid.FPostion(Lft, Tp: integer);
begin
Self.Top :=Tp;
Self.Left :=Lft;
end;
procedure TFmSelect_DBGrid.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
inherited;
Action :=caFree;
FmSelect_DBGrid :=nil;
end;
procedure TFmSelect_DBGrid.FormCreate(Sender: TObject);
begin
inherited;
// SetWindowLong(Self.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW); //在任务栏屏蔽
end;
procedure TFmSelect_DBGrid.DBGrid1CellClick(Column: TColumn);
begin
inherited;
if (gSDataSet is TTable) or (gSDataSet is TQuery) then
begin
if ThirdQuery.IsEmpty then
Exit;
m_OneBMark :=ThirdQuery.GetBookmark;
end
else
if (gSDataSet is TADOTable) or (gSDataSet is TADOQuery) then
begin
if ADOThirdQuery.IsEmpty then
Exit;
m_OneBMark :=ADOThirdQuery.GetBookmark;
end;
m_sOne :=TSzjDBGrid(DBGrid1).Row;
end;
procedure TFmSelect_DBGrid.DBGrid1MouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
inherited;
if (gSDataSet is TTable) or (gSDataSet is TQuery) then
if Button =mbleft then
begin
if ssShift in Shift then
begin
m_TwoBMark :=ThirdQuery.GetBookmark;
m_sTwo :=TSzjDBGrid(DBGrid1).Row;
if (m_sOne=0) or (m_OneBMark =nil) then
Exit;
with ThirdQuery do
begin
if m_sOne < m_sTwo then
begin
GotoBookmark(m_OneBMark);
while not eof do
begin
DBGrid1.SelectedRows.CurrentRowSelected :=True;
if CompareBookmarks(m_TwoBMark,GetBookmark) =0 then
Exit;
Next;
end;
end
else
begin
GotoBookmark(m_TwoBMark);
while not eof do
begin
DBGrid1.SelectedRows.CurrentRowSelected :=True;
if CompareBookmarks(m_OneBMark,GetBookmark) =0 then
Exit;
Next;
end;
end;
end;
end
else
CheckBox1.Checked :=False;
end
else
if (gSDataSet is TADOTable) or (gSDataSet is TADOQuery) then
if Button =mbleft then
begin
if ssShift in Shift then
begin
m_TwoBMark :=ThirdQuery.GetBookmark;
m_sTwo :=TSzjDBGrid(DBGrid1).Row;
if (m_sOne=0) or (m_OneBMark =nil) then
Exit;
with ThirdQuery do
begin
if m_sOne < m_sTwo then
begin
GotoBookmark(m_OneBMark);
while not eof do
begin
DBGrid1.SelectedRows.CurrentRowSelected :=True;
if CompareBookmarks(m_TwoBMark,GetBookmark) =0 then
Exit;
Next;
end;
end
else
begin
GotoBookmark(m_TwoBMark);
while not eof do
begin
DBGrid1.SelectedRows.CurrentRowSelected :=True;
if CompareBookmarks(m_OneBMark,GetBookmark) =0 then
Exit;
Next;
end;
end;
end;
end
else
CheckBox1.Checked :=False;
end
end;
procedure TFmSelect_DBGrid.SpeedButton1Click(Sender: TObject);
begin
inherited;
if (gSDataSet is TTable) or (gSDataSet is TQuery) then
if ThirdQuery.IsEmpty then
begin
Close;
Exit;
end
else
if (gSDataSet is TADOTable) or (gSDataSet is TADOQuery) then
if ADOThirdQuery.IsEmpty then
begin
Close;
Exit;
end;
gValue:=gSDataSet.Fields[0].AsString;
SendMessage(gHandle,WM_SelectShare,0,0);
Close;
end;
end.
仔细看一下上面这个单元,里面就有写
DBGRID控件里可以实现SHIFT复选吗?怎么设置?的更多相关文章
- DEV控件中GridView中的复选框与CheckBox实现联动的全选功能
最初的界面图如图1-1(全选框ID: cb_checkall DEV控件名称:gcCon ): 要实现的功能如下图(1-2 1-3 1-4)及代码所示: 图1-2 图1-3 图1-4 O(∩_∩ ...
- Android基础控件单选按钮RadioButton和Checkbox复选按钮的使用
1.相关简介 RadioButton需要和RadioGroup结合使用,在RadioGroup设置布局方式! Checkbox是单独使用,本文为了方便放在了RadioGroup中! 2.简单使用 方法 ...
- Qt树形控件QTreeView使用1——节点的添加删除操作 复选框的设置
QtreeView是ui中最常用的控件,Qt中QTreeWidget比QTreeView更简单,但没有QTreeView那么灵活(QTreeWidget封装的和MFC的CTreeCtrl很类似,没有m ...
- winfrom获取用户控件里的控件对象
如何获取用户控件里的控件对象呢,其实思路也是很简单的, 比如有一个panel 用户控件 里面有许多的其他控件. 那么要找出一个Label控件怎么找呢,好的.现在我们就开始 首先,一个foreach循环 ...
- Delphi7连接MySql数据库-DBGrid控件显示数据
一个简单的Delphi7小程序,使用MySql数据库做简单查询,用DBGrid控件显示结果,实现过程如下: (1)在MySql中新建demouser表,插入记录用于测试. (2)在Delphi7中新建 ...
- 给Repeater控件里添加序号的5种方法
Repeater是我们经常用的一个显示数据集的数据控件,经常我们希望在数据前显示数据的序号,那么我们该怎么为Repeater控件添加序号呢?下面编辑为大家介绍几种常用的为Repeater控件添加序号的 ...
- Dbgrid控件多重选择的怪问题。BookMarkList,BookMark,使用书签,用的ADOQuery控件。100分送上,急阿!!!请高手帮忙!
Dbgrid控件多重选择的怪问题.BookMarkList,BookMark,使用书签,用的ADOQuery控件.100分送上,急阿!!!请高手帮忙! ( 积分: 100 )<br />p ...
- Delphi中的DBGrid控件
在Delphi中,DBGrid控件是一个开发数据库软件不能不使用的控件,其功能非常强大,可以配合SQL语句实现几乎所有数据报表的显示,操作也非常简单,属性.过程.事件等都非常直观,但是使用中,有时侯还 ...
- 背水一战 Windows 10 (67) - 控件(控件基类): DependencyObject - CoreDispatcher, 依赖属性的设置与获取, 依赖属性的变化回调
[源码下载] 背水一战 Windows 10 (67) - 控件(控件基类): DependencyObject - CoreDispatcher, 依赖属性的设置与获取, 依赖属性的变化回调 作者: ...
随机推荐
- Word中用VBA插入一个文件夹里的所有.jpg图片
每四张图片放在一页,第一行为四张图片的文件名 插入图片调整尺寸参考 Sub final() Dim FN As String, N%, W#, H#, PW#, PH# With ActiveDocu ...
- 20155313 实验二《Java面向对象程序设计》实验报告
20155313 实验二<Java面向对象程序设计>实验报告 一.实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. ...
- 20155319《Java程序设计》实验三(敏捷开发与XP实践)实验报告
20155319<Java程序设计>实验三(敏捷开发与XP实践)实验报告 一.实验内容及步骤 (一)使用Code菜单 在IDEA中使用工具(Code->Reformate Code) ...
- 【bzoj3991】[SDOI2015]寻宝游戏 树链的并+STL-set
题目描述 给出一棵树,初始每个点都是非必经的.多次改变某个点的必经状态,并询问从任意一个点出发,经过所有必经的点并回到该点的最小路程. 输入 第一行,两个整数N.M,其中M为宝物的变动次数. 接下来的 ...
- CF543E Listening to Music
题面 空间只有$64\text{MB}$!!! 题解 (据说正解是毒瘤分块套分块) 按照权值从大到小排序,对所有能够覆盖到它的区间的左端点打个标记 按照值域建一棵主席树就可以了 区间查询最大值,用$m ...
- 【SCOI2009】迷路
题面 题解 如果给我们的是一个邻接矩阵,那么直接给邻接矩阵\(T\)次幂即可. 这里的图有边权,那么我们就将它拆成\(9\)个点即可. 代码 #include<cstdio> #inclu ...
- 【洛谷P4178】Tree
题面 题解 感觉和\(CDQ\)分治一样套路啊 首先,构建出点分树 对于每一层分治重心,求出它到子树中任意点的距离 然后\(two-pointers\)计算满足小于等于\(K\)的点对数目,加入答案 ...
- SPOJ 694&&SPOJ705: Distinct Substrings
DISUBSTR - Distinct Substrings 链接 题意: 询问有多少不同的子串. 思路: 后缀数组或者SAM. 首先求出后缀数组,然后从对于一个后缀,它有n-sa[i]-1个前缀,其 ...
- Java中如何创建一个确保唯一的名字,文件名
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 本篇博客要讲的有,如何创建一个唯一的文件名,创建一个唯一的String字符串 为什么要创建唯一呢?再很多情况下 ...
- Appium+python的单元测试框架unittest(2)——fixtures(转)
(原文:https://www.cnblogs.com/fancy0158/p/10046333.html) unittest提供的Fixtures用以在测试执行前和执行后进行必要的准备和清理工作,可 ...