var 
treenode1,treenode2:TTreeNode;
With TreeView1.Items Do
          Begin
            //增加根接点;
            TreeNode1:=Add(nil, '状态');
            //全部展开所有结点
            TreeView1.FullExpand;
            //刷新TreeView
            TreeView1.Refresh;
            //根结点图标
            TreeNode1.ImageIndex:=2;
            TreeNode1.SelectedIndex:=2;
            //二级接点
            for h:=0 to 20 do begin
                    StrName:=intTostr(h);
                    TreeNode2:=AddChild(TreeNode1,strName);
                    TreeNode2.ImageIndex:=0;
                    TreeNode2.SelectedIndex:=0;                    //全部展开所有结点
                    TreeView1.FullExpand;
                    //刷新TreeView
                    TreeView1.Refresh;
             End
我想在这个TreeNode2上点击鼠标右键,然后执行一过程。怎么实现?

解决方案 »

  1.   

    在你的treeview的单击的时候,判断这个单击到的Node的Caption是什么
      

  2.   

    帮助文件里的
    procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);var 
      AnItem: TTreeNode;
      AttachMode: TNodeAttachMode;
      HT: THitTests;
    begin
      if TreeView1.Selected = nilthen Exit;
      HT := TreeView1.GetHitTestInfoAt(X, Y); 
      AnItem := TreeView1.GetNodeAt(X, Y);
      if (HT - [htOnItem, htOnIcon, htNowhere, htOnIndent] <> HT) then 
      begin
        if (htOnItem in HT) or (htOnIcon in HT) then AttachMode := naAddChild
        else if htNowhere in HT then AttachMode := naAdd    else if htOnIndent in HT then AttachMode := naInsert;
        TreeView1.Selected.MoveTo(AnItem, AttachMode); 
      end;
    end;
      

  3.   

    procedure TForm1.TreeView1Click(Sender: TObject);
    var
      tnSelected: TTreeNode;
      tvTemp: TTreeView;
    begin
      tvTemp := Sender as TTreeView;
      tnSelected := tvTemp.Selected; // 这个就是被单击的节点
      ShowMessage(tnSelected.Text);
    end;
      

  4.   

    按照blazingfire(烈焰) ( )的方法,在TreeViewClick事件里面编程,把Node的文本内容作为参数来识别不同的Node进行处理
    var
        SelNode:TTreeNode;
    begin
        SelNode := TreeView.Selected;
        if SelNode <> nil then
        begin
          MyProcess(SelNode.Text);
        end;
    end;