zoukankan      html  css  js  c++  java
  • 怎样实现在DBGrid中双击选择整行,并且可以多选?谢谢!!

    DBGrid1->Options里有个dgMultiSelect,把它设为true就能多选了

    先设置DBGrid1->options中dgRowSelect = true, dgMultiSelect = true。
    接着写按下面的写。
    void __fastcall TForm1::DBGrid1DblClick(TObject *Sender)
    {
      keybd_event(VK_CONTROL,0,0,0);   //模拟按下CTRL键
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::DBGrid1MouseUp(TObject *Sender,
          TMouseButton Button, TShiftState Shift, int X, int Y)
    {
      if(Button==mbRight) //右键取消多选;
      {
        keybd_event(VK_CONTROL,0,2,0);  //模拟放开CTRL键
      }
    }

    可以实现,不过尚不完美。
    在cell点击时选择编辑,在dblclick时为整行选定。代码如下:

    void __fastcall TForm1::DBGrid1DblClick(TObject *Sender)
    {
            TDBGridOptions options = DBGrid1->Options ;
            DBGrid1->Options = options << dgRowSelect;

    }

    void __fastcall TForm1::DBGrid1CellClick(TColumn *Column)
    {
            TDBGridOptions options = DBGrid1->Options ;
            DBGrid1->Options = options >> dgRowSelect;
            DBGrid1->Options = options << dgEditing;
    }

    这样在每行双击时为整行选取,之后点击每行的非dgTitle部分均为每行选取,点击cell时为可编辑,单格选取。

    procedure TForm1.FormDblClick(Sender: TObject);
    begin
      ShowMessage('双击');
    end;
    
    procedure TForm1.DBGrid1DblClick(Sender: TObject);
    begin
      {
      DBGrid1.DataSource.DataSet.DisableControls;
      DBGrid1.DataSource.DataSet.First;
      DBGrid1.SelectedRows.CurrentRowSelected := True;
      DBGrid1.DataSource.DataSet.EnableControls;
      }
      keybd_event(VK_Control, MapVirtualKey(VK_Control, 0), 0, 0);
      keybd_event(VK_Control, MapVirtualKey(VK_Control, 0), KEYEVENTF_KEYUP, 0); //放开Ctrl键
       //keybd_event(VK_CONTROL,0,0,0);   //模拟按下CTRL键
        // ShowMessage('双击');
      //DBGrid1.DataSource.DataSet.GetBookmark()
      //DBGrid1.Options dgmultiselect
    end;
    
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      with DBGrid1.DataSource.DataSet do
      begin
        DisableControls;
        First;
        while not Eof do
        begin
          DBGrid1.SelectedRows.CurrentRowSelected := True;
          Next;
        end;
        EnableControls;
      end;
    end;
  • 相关阅读:
    杭电 HDU 1279 验证角谷猜想
    C# SQL 整表插入
    iframe截取站点的部分内容
    Thrift安装介绍
    赵雅智_Swift(3)_swift凝视
    Android API 文档 离线秒开方法
    xml文件的根节点layout_width或者layout_height设置无效果的原因分析
    函数指针使用演示样例(參考Linux-内核代码)
    eclipse中的项目受svn管理
    野人与传教士问题
  • 原文地址:https://www.cnblogs.com/jijm123/p/8087992.html
Copyright © 2011-2022 走看看