1。在treeview的结点上双击,如果该结点有子结点,则会自动收缩或展开,如何去掉这种效果!!!
2。treeview的拖动问题!
======================
procedure TForm1.TreeView2MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
if ( Button = mbLeft ) and
( htOnItem in Treeview2.GetHitTestInfoAt( X,Y ) ) then
begin
  Treeview2.BeginDrag(False,10);
end;
end;procedure TForm1.TreeView2DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
var
  Node : TTreeNode;
begin
  if Source = Treeview2 then
  begin
    Node := Treeview2.GetNodeAt( X, Y ); {取当前结点}
    if Node <> nil then {当前结点不为空才能实现拖拽,accept:=true}
    Accept := true;
  end;
end;
procedure TForm1.TreeView2DragDrop(Sender, Source: TObject; X, Y: Integer);
var
  TempNode : TTreeNode;
  AttachMode : TNodeAttachMode;
begin
  if Treeview2.Selected = nil then Exit;
  AttachMode := naAddChild; {设置结点移动模式,设移动结点为子结点}
  { 注意在这里存在一个bug,当移动结点时,如果目标结点没有子结点,}
  { 则加入的新的子结点会失败,所以先在当前目标结点的下面 }
  { 加入一个临时子结点,移动完毕后,再将临时结点删除 }
  Treeview2.Items.BeginUpdate;
  try
    TempNode := Treeview2.Items.AddChild( Treeview2.DropTarget,'Temp' );
    try{ 移动选中的结点到目标结点 }
      Treeview2.Selected.MoveTo( Treeview2.DropTarget, AttachMode );
    finally
      TempNode.Free; { 不要忘了释放临时结点 }
    end;
  finally
    Treeview2.Items.EndUpdate;
  end;
end;
//===================
问题描述:当我的treeview没和imagelist连接,treeview结点前没小图标的时候正常,
可如果有小图标的时候 Treeview2.BeginDrag(False,10)不正常,没有按我的在移动10个象素后
进入拖动状态!谢谢帮忙!
*)

解决方案 »

  1.   

    var run_boolean:boolean;
    procedure TForm1.TreeView2MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      if htOnButton in TreeView2.GetHitTestInfoAt(x, y) then
      run_boolean:=true ;
      if (TreeView2.GetNodeAt(x, y).Expanded)then
        TreeView2.GetNodeAt(x, y).Collapse(true)
      else
        TreeView2.GetNodeAt(x, y).Expand(true) ;
    end;procedure TForm1.TreeView2Expanding(Sender: TObject; Node: TTreeNode;
      var AllowExpansion: Boolean);
    begin
      if run_boolean then
        AllowExpansion:= true
      else
        AllowExpansion:= false ;
      run_boolean:= false ;
    end;procedure TForm1.TreeView2Collapsing(Sender: TObject; Node: TTreeNode;
      var AllowCollapse: Boolean);
    begin
      if run_boolean then
        AllowCollapse:= true
      else
        AllowCollapse:= false ;
      run_boolean:= false ;
    end;