要求对列表支持“Shift”键及“Ctrl”键,“Shift”键支持成片选取,“Ctrl”键支持跳行选取。
请问在delphi中怎么实现阿!就是在DBGrid中.

解决方案 »

  1.   

    option里边有允许多选,打开不就得了?
      

  2.   

    你只要打开多选就可以了吧,,“Shift”键支持成片选取,“Ctrl”键支持跳行选取
    好象DBGIRD自己会判断的
      

  3.   

    "Shift”键支持成片选取,“Ctrl”键支持跳行选取:你们有没有试过啊!Ctrl有效可是shift不行啊!
      

  4.   

    这个属性叫dgMultiSelect 只支持Ctrl键多选
      

  5.   

    procedure TDBGridEx.WMLButtonDown( var message:TWMLButtonDown);
    var
      MMaxRecNo,MMinRecNo,i:Integer;
    begin
      if CheckDataSource then
        FLastRecNo1:=DataSource.DataSet.RecNo;
      inherited;
      if (not (dgMultiSelect in Options)) or not CheckDataSource then
        Exit;
      FLastRecNo2:=DataSource.DataSet.RecNo;
      MMaxRecNo:=Max(FLastRecNo1,FLastRecNo2);
      MMinRecNo:=Min(FLastRecNo1,FLastRecNo2);
      if not IsKeyPress(VK_SHIFT) then Exit;
      for i:=MMinRecNo to MMaxRecNo do
        begin
          with DataSource.DataSet do
            begin
              DisableControls;
              RecNo:=i;
              SelectedRows.CurrentRowSelected:=True;
              EnableControls;
            end;
       end;
      DataSource.DataSet.RecNo:=FLastRecNo2;
      DataSource.DataSet.EnableControls;
    end;