它返回的是其父menu和你说的一样
n1.click(...);
var
 temp:tmenu;
begin
temp:=n1.getprarentmenu;
从temp中来判断

解决方案 »

  1.   

    错了
    getprarentmenu是TmenuItem的方法,
    temp:tmenuitem;
    而且返回的是TMenu而你需要的是TMenuItem
      

  2.   

    可我想把当前焦点移到它的双亲结点上,再递归寻找上一级双亲。问题就是当前是TMenuItem,而双亲是TMenu,类型不一样啊!
      

  3.   

    有没有类似TTreeView中所提供的那么全的方法吗?
      

  4.   

    if TMenuItem(sender).Parent is TMenuItem then
     ....
      

  5.   

    举个例子
    file       edit
      new
        new1
          new2
      open
     
    以深度搜索形式为例,我现在焦点在new1上并刚刚在它的items.add(new2),现在我想把焦点转到open上,并追加open的子结点,所以只能先返回到new一级菜单,
    再想办法找到open.就需要返回一下这还是“不深“的情况,如果”深“一点的话就要往上走好几级但是没有currMenuItem:=currMenuItem.getParent的用法啊!
    类型不对的。TO  fredfei(飞飞) 
    你的方法是不是条件永远是FALSE呢?因为我觉得.parent返回的都是TMenu,而不会是TMenuItem.
      

  6.   

    你如果知道“open”菜单项的NAME,你可以直接用
    currMenuItem:=TMenuItem(Menu1.FindComponent('菜单项的NAME'))
    你如果知道“open”菜单项的caption,你可以直接用
    currMenuItem:=TMenuItem(Menu1.Find('菜单项的caption'))TMenuItem.Parent 返回的是TMenuItem
      

  7.   

    不过你要注意,在“file”下也能找到
    TMenuItem(file).Parent 也是 TMenuItem 
      

  8.   

    to fredfei(飞飞) 
    很感谢,以前我一直在找方法没有注意到属性。 TMenuItem(file).Parent 也是 TMenuItem ,我已经试过了,完全正确。帮了我的大忙。谢谢。