我的程序中用Treeview建了一棵树,树上的有很多结点,我现在想要问的是,当我的鼠标移到任一结点上时或在结点上按下右键时,我要得到这个结点的值,但是这个结点并不一定是选中的状态,请问我应该怎么做

解决方案 »

  1.   

    //参考如下代码~~
    procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    var
      vTreeNode: TTreeNode;
    begin
      if Button <> mbRight then Exit;
      vTreeNode := TreeView1.GetNodeAt(X, Y);
      if not Assigned(vTreeNode) then Exit;
      Caption := vTreeNode.Text; //输出测试
    end;
      

  2.   

    //TreeView的RightClickSelect设置为True,并且加入如下代码//处理右键
    procedure TForm1.TreeView1ContextPopup(Sender: TObject; MousePos: TPoint;
      var Handled: Boolean);
    begin
      TreeView1.Selected.Selected := True; //如果要右键起来之后该节点处于选中状态就要这一行代码
      ShowMessage(TreeView1.Selected.Text);
    end;//处理鼠标移动
    procedure TForm1.TreeView1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    var
      vTreeNode: TTreeNode;
    begin
      vTreeNode := TreeView1.GetNodeAt(X, Y);
      if not Assigned(vTreeNode) then Exit;
      Label1.Caption := vTreeNode.Text; 
    end;