如题。请教高手。帮忙写一段代码。谢谢。

解决方案 »

  1.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls, Menus;type
      TForm1 = class(TForm)
        MainMenu1: TMainMenu;
        PopupMenu1: TPopupMenu;
        N11: TMenuItem;
        mainmenu_item1: TMenuItem;
        mainmenu_item2: TMenuItem;
        popmenu_item1: TMenuItem;
        popmenu_item2: TMenuItem;
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
    var
      ghyghost_menu_type:string;
    begin
      showmessage(tmenu(mainmenu_item1.GetParentMenu).name);
      showmessage(tmenu(popmenu_item1.GetParentMenu).name);
    end;end.
      

  2.   

    function GetParentMenu: TMenu;
      

  3.   

    var Menu:=TMenu;
    begin
      Menu:=MenuItem.GetParentMenu;//MenuItem为你要检测的TMenuItem
      if Menu is TMainMenu then
        //MenuItem属于TMainMenu的子项
      else if Menu is TPopupMenu then
        //MenuItem属于TPopupMenu的子项
    end;
      

  4.   

    可是,menuitem 是个子子子子项,我怎么知道要多少次 getparentmenu ? 难道要一个 while 直到获得 mainmenu 或者 popupmenu?有没有更好的方法?
      

  5.   

    不管你的MenuItem是子项还是孙项抑或是曾孙项,我的方法(看我上面的帖子)都可以,不信你试试。
      

  6.   

    var Menu:=TMenu;
    begin
      Menu:=MenuItem.GetParentMenu;//MenuItem为你要检测的TMenuItem
      if Menu is TMainMenu then
        //MenuItem属于TMainMenu的子项
      else if Menu is TPopupMenu then
        //MenuItem属于TPopupMenu的子项
    end;
    好懂,好用,学习
      

  7.   

    请问一下
        TMenuitem在那一页呀!!
        它是不是个组件呀!!