收录日期:2018/09/20 05:23:04 时间:2016/05/18 03:13:48 标签:VCL组件开发及应用
我在TreeView控件中增加了好几个根节点,然后在每个根节点下都放了子节点,我想实现当我点在任何一个根节点下的子节点上,这时能触发一个事件,并且要显示出改子节点所属的根节点?
怎么来实现???????????????????????????????????????
TreeView的OnChange事件,
procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
  while Node.Parent <> nil do Node := Node.Parent;
  ShowMessage(Node.Text);
end;
up
为什么不在OnClick上呢?
单击时,先响应OnChange(),然后响应OnClick()
其实都可以吧

不过最好先判断一下
if TreeView1.Selected = nil then Exit;

否则下面用到时可能会出错。
不要用OnClick因为,OnClick不管你是不是改变当前选中的节点它都会触发的而OnChang是在切换到另一个节点时才会触发的
onchange
up
帮你UP
var i:integer ;
   tempNode:TTreeNode ;
begin
 TempNode:=Treeview1.Selected ;
   for i:=0  to TreeView1.Selected.Level -1 do
   begin
     TempNode:=TempNode.Parent ;
   end ;
   showmessage(tempnode.Text) ;
end ;
应该没有错。如果UP有分,那我还要加分,哈哈哈。
如果你想不管在任何时候都要显示出此子结点的根结点,那就用ONCLICK事件了
procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
   if node.parent<>nil then
   begin
     showmessage(node.Parent.Text);
   end;
end;
up
var
  MYnode :Ttreenode;
  str,str1 :string;
begin
  if  treeview.Selected <>nil then
    begin
       str:=treeView.Selected.Text;
       MYnode:=treeview.Selected.Parent;
       if assigned(MYnode) then
       str1:=Mynode.Text;
       showmessage(str+str1);
    end;
onchange()事件里,上面已经有人说了