zoukankan      html  css  js  c++  java
  • Delphi实现DBGrid Shift+鼠标左键单击 多选

    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 也可以实现多选
  • 相关阅读:
    ListBox 绑定之-SelectedItem
    tomcat部署web项目的3中方法
    NET 2.0中的字符串比较和方法
    winform WindowsMediaPlayer 属性
    C语言32个关键字解释
    进程间通讯—自定义消息
    常见符号英文表示
    在vs 中运行C程序
    wpf 不是很明白,先记下
    PenTest-log for ging解决方案
  • 原文地址:https://www.cnblogs.com/jijm123/p/10247703.html
Copyright © 2011-2022 走看看