procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var node:TTreeNode; begin node:=TreeView1.GetNodeAt(X,Y); if node<>nil then begin node.MoveTo(TreeView1.Items[0],naInsert); edit1.Text:=node.Text; end; end;
procedure TForm25.TreeView1Change(Sender: TObject; Node: TTreeNode); begin if not Node.Selected then exit; Node.Expand(false); TreeView1.TopItem := Node; end;
Shift: TShiftState; X, Y: Integer);
var
node:TTreeNode;
begin
node:=TreeView1.GetNodeAt(X,Y);
if node<>nil then
begin
node.MoveTo(TreeView1.Items[0],naInsert);
edit1.Text:=node.Text;
end;
end;
举例树:
-----a
--------a1
--------a2
--------a3...
-----b
-----c
-----d若点击展开b时,模拟拉动滚动条显示:
-----b
--------b1
--------b2
--------b3
-----c
-----d
此时b看上去就在top = 0的位置,谢谢!
begin
if not Node.Selected then exit;
Node.Expand(false);
TreeView1.TopItem := Node;
end;
非常感谢你的帮助,我测试了一下,发现在展开的时候还是不能做到使点击的节点位置模拟被拉到最上端。
pplive的节目列表就是这样的,点击一下节点展开,就将该节点置于最上端。是不是我没应用好你的代码?还恳请帮助!