+主窗体
-子窗体
  子窗体1
  子窗体2
当Treeview1单击子窗体1节点显示出子窗体1窗口后,再关闭这个窗体,点加减号或Treeview1的空白处还是弹出那个窗体,如何屏蔽,当点+-号时不弹出窗体,点空白处也是

解决方案 »

  1.   

    没太明白你的意思,这个可能是你要的procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    var
      node: TTreeNode;
    begin
      if (Button = mbLeft) and (htOnItem in Treeview1.GetHitTestInfoAt( X, Y)) then
      begin
        node := TreeView1.GetNodeAt(X, Y);
        if (node.Text = '子窗体1') then
          childform1.show;
      end;
    end;
      

  2.   

    有加减号的节点,应该不是显示窗体吧,所以可以判断此节点有没有子节点即可TreeView的MouseDown事件:var
      t:TTreeNode;
    begin
       t:=TreeView1.GetNodeAt(x,y);
       if (t<>nil) and (not t.HasChildren) then
          ...弹出窗体吧
    end;
      

  3.   

    procedure TFormMain.treeview1MouseDown(Sender: TObject;
      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    var
      node:TTreeNode;
    begin
      Node:=treeview1.GetNodeAt(x,y);
      if node<>nil then          //判断是否选中内容
         Node.Selected:=True;
    end;