例如我TreeView的右键菜单事件有A, B, C等
怎么在右键点击根节点的时候弹出的右键菜单禁止掉A事件呢?还有,在单击树节点外时,不会弹出右键菜单呢?

解决方案 »

  1.   

    var
      HitTest : THitTests;
    begin
      inherited;
      HitTest := TreeView.GetHitTestInfoAt(x,y);
      if htNowhere in HitTest then
      begin
        Treeview.PopupMenu := nil;
        Exit;
      end;
      if Button = MBRight then
      begin
        Treeview.PopupMenu := PopupMenu;
        if Treeview.Selected.Parent = nil then
          PopupMenuItemA.Enabled := False
        else
          PopupMenuItemA := True;
      end;
    end;
      

  2.   

    以上是MouseDown事件代码,很粗,实际应用还需要细化
    Treeview.Selected.Parent = nil 表示根节点htNowhere in HitTest 表示单击树节点外
      

  3.   

    个人以为:可以根据选中的结点的字符串来判断
    if treeView1.select.text='AAAAA' then
    begin
    end else
    begin
    end;