加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Delphi实现DBGrid Shift+鼠标左键单击 多选

发布时间:2020-12-15 09:53:30 所属栏目:大数据 来源:网络整理
导读:unit Unit1; interface uses Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,Dialogs,DB,ADODB,Grids,DBGrids,StdCtrls; type TForm1 = class (TForm)DBGrid1: TDBGrid;ADOConnection1: TADOConnection;DataSource1: TDataSource;Butt
unit Unit1;

interface

uses
Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,Dialogs,DB,ADODB,Grids,DBGrids,StdCtrls;

type
TForm1 = class(TForm)
DBGrid1: TDBGrid;
ADOConnection1: TADOConnection;
DataSource1: TDataSource;
Button1: TButton;
ADOTable1: TADOTable;
procedure DBGrid1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X,Y: Integer);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
blSelect: Boolean;
BookMark: TBookMark;
CurrNo,OldNo: integer;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.DBGrid1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X,Y: Integer);
begin //实现 Shift+鼠标左键单击 多选
if Button = mbLeft then
begin
if not blSelect then
begin
BookMark := ADOTable1.GetBookMark;
OldNo := ADOTable1.RecNo;
blSelect := True;
Exit;
end
else
begin
if ssShift in Shift then
begin
CurrNo := ADOTable1.RecNo;
ADOTable1.DisableControls;
ADOTable1.GotoBookmark(BookMark);
DBGrid1.SelectedRows.CurrentRowSelected := True;
if CurrNo > OldNo then
begin
while CurrNo > ADOTable1.RecNo do
begin
DBGrid1.SelectedRows.CurrentRowSelected := True;
ADOTable1.Next;
end;
end
else
begin
while CurrNo < ADOTable1.RecNo do
begin
DBGrid1.SelectedRows.CurrentRowSelected := True;
ADOTable1.Prior;
end;
end;
ADOTable1.EnableControls;
ADOTable1.FreeBookmark(BookMark);
blSelect := False;
CurrNo := 0;
OldNo := 0;
end
else
begin
BookMark := ADOTable1.GetBookMark;
OldNo := ADOTable1.RecNo;
blSelect := True;
Exit;
end;
end;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
ADOConnection1.Connected := true;
ADOTable1.Close;
ADOTable1.TableName := Table_Name; //表名
ADOTable1.Open;
DBGrid1.Options := DBGrid1.Options + [dgMultiSelect]; //开启多选
end;

end.

//另外,Shift+小键盘UP/DOWN 也可以实现多选

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读