to ch81(missile) 我用 “showmessage(MainMenu1.Items[0].Items[1].Name);" 想显示“cut"的名字,结果报错: list index out of bounds(2); why!!!!
to ch81(missile) 我在button_onclisk中用 for I:=0 to MainMenu1.Items.Count-1 do MainMenu1.Items[I].Enabled:=False; 看不到任何结果,why??? 请指点!!
morphia(吗啡): 我用 “showmessage(MainMenu1.Items[0].Items[1].Name);" 想显示“cut"的名字,结果报错: list index out of bounds(2); why!!!!
你的Items[0]有没有子菜单的??
smile_and_smile(smile):我试过两段代码是没错的,如果有错的话是你的菜单建的有问题 你访问的那一级菜单是不存在的。 for I:=0 to MainMenu1.Items.Count-1 do MainMenu1.Items[I].Enabled:=False;//这样是访问最上面那一排菜单项, 执行过后,因为这些都是下面菜单的父菜单项。所以全部菜单变灰。而且无法访问 下一级菜单。 showmessage(MainMenu1.Items[0].Items[1].Name); 所有的菜单项下标都是从0开始,你个提示是说你的item[0].item[1]是空的。 已经超出了它的序列。 所以你菜单项要建好。如: File Edit Open Cut Exit 这样items[0].items[1].caption为exit。 caption是标题。
不好意思,很久没关注了 如果你要使file的所有子菜单不可用,只要判断菜单的parent是否为file就可以了showmessage(cut.Parent.Name); // 显示出来的是file 假设你的file是第一项 for i := 0 to mainmenu1.Items[0].Count - 1 do if mainmenu1.Items[0].Items[i].Parent.name = file.Name then mainmenu1.Items[0].Items[i].Enabled := false;
你知道用啥方法实现“根据不同的权限实现对不同菜单项的选择“最好??
谢谢!
如何控制某一菜单"file"全不可用,“tool2"不可用;
指点!!
TMyForm = class(TForm);
TabcForm = class(TMyForm);动态增加菜单:
Item := TMenuItem.Create(MainMenu);
Item.Caption := FMenu.Items[i].Form.Caption;
Item.Tag := Integer(TabcForm);
Item.OnClick := OnChildMenu;在OnClick事件中:
with Sender as TMenuItem do TMyForm(TMenuItem(Sender).Tag).Show;
MainMenu.Items[i].Name取得
mainmenu.items[index]返回的是一个tmenuitem对象。第一层菜单
因为每个菜单项都可能有子菜单。所以tmenuitem的items[index]又是一个
tmenuitem对象。所以这样可以一直按照层次访问下去。
而且如果父菜单项的visible如果是false,则子菜单也全为false。不可见。
每个菜单项有许多属性,方法事件。
tmenuitem.caption就是菜单项的标题。
我用
“showmessage(MainMenu1.Items[0].Items[1].Name);"
想显示“cut"的名字,结果报错:
list index out of bounds(2);
why!!!!
我在button_onclisk中用
for I:=0 to MainMenu1.Items.Count-1 do
MainMenu1.Items[I].Enabled:=False;
看不到任何结果,why???
请指点!!
我用
“showmessage(MainMenu1.Items[0].Items[1].Name);"
想显示“cut"的名字,结果报错:
list index out of bounds(2);
why!!!!
你访问的那一级菜单是不存在的。
for I:=0 to MainMenu1.Items.Count-1 do
MainMenu1.Items[I].Enabled:=False;//这样是访问最上面那一排菜单项,
执行过后,因为这些都是下面菜单的父菜单项。所以全部菜单变灰。而且无法访问
下一级菜单。
showmessage(MainMenu1.Items[0].Items[1].Name);
所有的菜单项下标都是从0开始,你个提示是说你的item[0].item[1]是空的。
已经超出了它的序列。
所以你菜单项要建好。如:
File Edit
Open Cut
Exit
这样items[0].items[1].caption为exit。
caption是标题。
如果你要使file的所有子菜单不可用,只要判断菜单的parent是否为file就可以了showmessage(cut.Parent.Name); // 显示出来的是file
假设你的file是第一项
for i := 0 to mainmenu1.Items[0].Count - 1 do
if mainmenu1.Items[0].Items[i].Parent.name = file.Name then
mainmenu1.Items[0].Items[i].Enabled := false;
不知为啥,你的方法使用无法成功??
不知为啥,你的方法使用无法成功??