1、DBGrid中的数据是否可以象:按“Shift”键后全选。
2、全选后,是否可以拖动?如何拖动?
注:可不可以不使用控件?如果有请说来听听。

解决方案 »

  1.   

    DBGrid 在 Option 中有个属性 MultiSelect ,设置为true ,就可以多选。全选后要想拖动,只有自己写程序控制它相关联的 DataSet 。
      

  2.   

    多选可以,但拖动?你是要将拖动的放到另一个DBGRID中吗?如果这样,恐怕不行,因为拖到另一DBGRID时对应的是一个格,如果是放到TXT文件中,还可以考虑:
    直接用CLIPBOARD.
      

  3.   

    1,好象不可以吧,象楼上所说的用Ctrl键可以,Shift键就不行
    2,拖动或许可行
      

  4.   

    具体没试过,方法如下
    首先设置DragMode属性为AutoMatic
    然后在OnStartDarg,OnEndDarg事件中写控制语句
      

  5.   

    是的,将DBGrid 的MultiSelect 属性 设置为True后可以多选, 但只能是按住Ctrl并且一条一条的进行选择。
      

  6.   

    好象比较复杂耶
    拖动前后取得选中的记录值的方法:
    DBGrid1.DataSource.DataSet.GotoBook(pointer(DBGrid1.SelectedRows.Items[i]));以下是转载的DBGrid 上用Shift键实现多选的代码:
    procedure TDBGrid.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    var
      i,Row1,Row2:integer;
    begin
      if (ssShift in Shift) and (dgMultiSelect in Options) and Datalink.Active then
        begin
          BeginUpdate;
          try
            Row1:=Row;
            Row2:=MouseCoord(X,Y).Y;
            if Row1<Row2 then
              for i:=Row1+1 to Row2 do
              begin
                Datalink.DataSet.MoveBy(1);
                SelectedRows.CurrentRowSelected := True;
              end
            else
              for i:=Row1-1 downto Row2 do
              begin
                Datalink.DataSet.MoveBy(-1);
                SelectedRows.CurrentRowSelected := True;
              end;
          finally
            EndUpdate;
          end;
        end
      else
        inherited MouseDown(Button,Shift,X,Y);
    end;
      

  7.   

    用Shift可以使用循环完成,但数据多时就很慢了。
    至于拖动, 我原意是将数据拷贝,但DBGRid框中的数据不支持拖动呀,
    我只要可以拖动就好了。 我再加分。