树有好多的节点大约10000个左右,
任意点击某一节点时,模拟拖滚动条直至节点处于最顶端位置。
selectedNode.top := 0;  //在一个panel中。
请指教!

解决方案 »

  1.   

    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;
      

  2.   

    hys_427:非常感谢你!但我没有表达清楚,不好意思!是展开某一节点时,滚动条自动滚刀该节点,这时就可以清晰看到该节点及其以下的节点。
    举例树:
    -----a
    --------a1
    --------a2
    --------a3...
    -----b
    -----c
    -----d若点击展开b时,模拟拉动滚动条显示:
    -----b
    --------b1
    --------b2
    --------b3
    -----c
    -----d
    此时b看上去就在top = 0的位置,谢谢!
      

  3.   

    procedure TForm25.TreeView1Change(Sender: TObject; Node: TTreeNode);
    begin
      if not Node.Selected  then exit;
      Node.Expand(false);
      TreeView1.TopItem := Node;
    end;
      

  4.   

    hotzhu:你好!
         非常感谢你的帮助,我测试了一下,发现在展开的时候还是不能做到使点击的节点位置模拟被拉到最上端。
      pplive的节目列表就是这样的,点击一下节点展开,就将该节点置于最上端。是不是我没应用好你的代码?还恳请帮助!
      

  5.   

    是的,是我没有仔细,谢谢你hotzhu及回复的朋友们!