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个象素后
进入拖动状态!谢谢帮忙!
*)
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个象素后
进入拖动状态!谢谢帮忙!
*)
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;