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, 依赖属性的设置与获取, 依赖属性的变化回调 作者: ...
随机推荐
- typedef和define一些问题
1. 四个用途 用途一: 定义一种类型的别名,而不只是简单的宏替换.可以用作同时声明指针型的多个对象.比如: char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针 ...
- stardict词库
http://download.huzheng.org/zh_CN/ sudo tar -jxvf * -C /usr/share/stardict/dic
- WPF DataGrid使用简介
1)自动生成列 <DataGrid AutoGenerateColumns="True" Name="datagrid" CanUserAddRows=& ...
- SaltStack入门篇(一)之SaltStack部署
一.SaltStack概述 Salt,,一种全新的基础设施管理方式,部署轻松,在几分钟内可运行起来,扩展性好,很容易管理上万台服务器,速度够快,服务器之间秒级通讯. salt底层采用动态的连接总线, ...
- tp框架-------验证码
验证码我们一般很常见,在注册或登录时,都可以用的到,下面我们就来看看它的代码和用法 加验证码是为了防止表单攻击的一种方式,为了我们的程序更加的安全 在tp框架中它自带了一个验证码的类,我们先来看一下 ...
- 利用 Intel Realsense做SLAM开发(一)
最近手里拿到一台Realsense D435,就是这个: https://click.intel.com/intelr-realsensetm-depth-camera-d435.html 所以准备拿 ...
- i3wm随笔 1
快捷键 mod+0 退出 mod+v 垂直分割 mod+h 水平风格
- 天下武功,无快不破,Python开发必备的6个库
01 Python 必备之 PyPy PyPy 主要用于何处? 如果你需要更快的 Python 应用程序,最简单的实现的方法就是通过 PyPy ,Python 运行时与实时(JIT)编译器.与使用普通 ...
- Quartz学习--三 Hello Jdbc Quartz! 和 demo 结尾
四. Hello JDBC Quartz! JDBC方式: 就是说通过数据库的jdbc链接来进行quartz的一个配置 Quartz支持了很好的支持 demo用例 使用mysql作为例子进行演示 相比 ...
- PHP性能优化 -理论篇
什么情况下,遇到了PHP性能问题? 1 PHP语法使用的不恰当 2 使用PHP语言做不了它不擅长做的事 3 用php语言连接的服务不给力 4 PHP自身的短板 5 我也不 ...