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;
可是,menuitem 是个子子子子项,我怎么知道要多少次 getparentmenu ? 难道要一个 while 直到获得 mainmenu 或者 popupmenu?有没有更好的方法?
不管你的MenuItem是子项还是孙项抑或是曾孙项,我的方法(看我上面的帖子)都可以,不信你试试。
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; 好懂,好用,学习
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.
begin
Menu:=MenuItem.GetParentMenu;//MenuItem为你要检测的TMenuItem
if Menu is TMainMenu then
//MenuItem属于TMainMenu的子项
else if Menu is TPopupMenu then
//MenuItem属于TPopupMenu的子项
end;
begin
Menu:=MenuItem.GetParentMenu;//MenuItem为你要检测的TMenuItem
if Menu is TMainMenu then
//MenuItem属于TMainMenu的子项
else if Menu is TPopupMenu then
//MenuItem属于TPopupMenu的子项
end;
好懂,好用,学习
TMenuitem在那一页呀!!
它是不是个组件呀!!