• 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 := 0;
            FOldNo := 0;
            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;
  • 相关阅读:
    springMVC中@RequestParam和@RequestBody的作用
    java 中Excel的导入导出
    数据库字段名称与实体类属性不一致的处理措施
    linux下解压命令大全
    linux 下 cat
    mysqli
    解析php mysql 事务处理回滚操作(附实例)
    css 样式(checkbox开关、css按钮)
    cetons 怎么强制卸载 PHP
    yhdsir@function:php
  • 原文地址:https://www.cnblogs.com/jijm123/p/9684326.html
Copyright © 2020-2023  润新知