两个cxgrid,想要实现一个grid中的行拖到另一个grid,可以么?
最好上代码
谢谢啊!

解决方案 »

  1.   

    一个折中的办法,添加一个按钮,在其中实现删除一个Grid的记录,并在另一个Grid中添加记录
     呵呵
      

  2.   

    http://www.zaoxue.com/article/tech-50387.htm
    看看这篇文章,我想你就知道怎么做了
      

  3.   

    http://www.zaoxue.com/article/tech-50387.htm 
    这篇文章就是介绍怎样实现控件之间拖动的,此可以作为假象,你在其中再写删除合插入语句就可以了哦
      

  4.   

    给一段DBGrid拖放到treeview的代码.虽然不是cxgrid,但差不多的
    {鼠标左键按下,开始执行拖曳}
    procedure TForm1.DBGrid1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      if Button = mbLeft then begin
        SGC := (Sender as TDBGrid).MouseCoord(X,Y);
        if (SGC.X > 0) and (SGC.Y > 0) then
          (Sender as TDBGrid).BeginDrag(False);
        self.Caption := inttostr(SGC.X)+','+ inttostr(SGC.Y);
      end;
    end;{拖曳经过控件时检验对象是否合法}
    procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    begin
      Accept := (Source is TDBGrid) and (TreeView1.GetNodeAt(X,Y)<>nil);
    end;{接收放下的对象,并进行处理}
    procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
    var
      pNode:TTreeNode;
    begin
      pNode := TTreeView(Sender).GetNodeAt(X,Y);
      with (Source as TDBGrid).DataSource.DataSet do
        TTreeView(Sender).Items.AddChild(pNode, Fields[SGC.X-1].AsString);
      pNode.Expand(false);
    end;
      

  5.   

    试了一下楼上的代码,但cxgrid还是有些不同的啊
    SGC := (Sender as TDBGrid).MouseCoord(X,Y);
    这边就不一样,我这边的Sender跟踪后是"()",类型为TcxGridSite然后是处理哪里,是到另一个cxgrid,还是不知道怎么写?求高人给详细代码!
      

  6.   

    我想,cxGrid上MouseUp,MouseDown应该是可以判断的吧?
    那么就给两个cxGrid都设置一个Flag,来判断各自的MouseUp还是MouseDown吧。
    第一个cxGrid只有Down,第二个只有UP,不就是拖曳事件了吗?
    这个想法好不好?
      

  7.   

    http://www.devexpress.com/Support/Center/KB/p/A461.aspx学会使用工具,更要学会使用帮助。