我有两个TreeView,我想在两个TreeView间拖动Item,拖动后,一个增加相应的ITem,一个减少相应的Item

解决方案 »

  1.   

    定义全局变量
    t1,t2:boolean;
        s:string;procedure TForm1.TreeView2MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      t1:=false;
      t2:=true;
      s:=form1.TreeView2.Selected.Text;
    end;procedure TForm1.TreeView2MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      t2:=false;
      t1:=false;
    end;procedure TForm1.TreeView1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    var
      i,j:integer;
    begin
      if t2=true then
      begin
        form1.TreeView1.Items.Add(form1.TreeView1.Items.Item[1],s);
        t2:=false;
        i:=form1.TreeView2.Items.Count;
        for j:=0 to i-1 do
        begin
          if form1.TreeView2.Items.Item[j].Text=s then
            form1.TreeView2.Items.Item[j].Delete;
        end;
      end;
    end;
      

  2.   

    楼上的方法不可取请看下面
    设置TreeView的DragMode = dmAutoMaticprocedure TFmMain.TreeLeftDragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    begin
      Accept := False ;
      //if (source is TTreeNode) or (Source is TListItem) then
      if (source is TTreeView) or (source is TListview) then
        Accept := true ;
    end;procedure TFmMain.TreeLeftDragDrop(Sender, Source: TObject; X, Y: Integer);
    var
      tSrcNode ,tDesNode: TTreeNode ;
      tSrcID ,tDesID : Integer ;
      sSql : String ;
      lSrcItem : TListItem ;
    begin
      tSrcID := 0 ;tDesID := 0 ;
      tDesNode := TTreeview(Sender).GetNodeAt(X,Y);
      if Source is TTreeview then
      begin
        tSrcNode := TTreeview(Source).Selected ;
        tSrcNode.Moveto(tDesNode,naAddChild);
      end
    end;