我用MainMenu建立了上百个菜单,从2......135 这些个是我需要有时显示和隐藏的。它们的name分别为:n2....n135。我想让它们根据不同的情况,同时显示或隐藏。以隐藏为例,现在我的想法是:n2.visiable:=false;
.................
................
n135.visiable:=false;
要是这样,我就要输入这么多次,太麻烦了。如果我要是使用循环操作的话,该如何写哪?谢谢。

解决方案 »

  1.   

    easyvar
      i:integer;
    begin
      for i := 0 to MainMenu1.Items.Count -1 do
        MainMenu1.Items[i].Visible := false;
      

  2.   

    上面那个只有第一层,用这个吧procedure TForm1.Button3Click(Sender: TObject);
    var
      i:integer;
    begin
      for i := 0 to self.ComponentCount -1 do
        if self.Components[i] is Tmenuitem then
          if Tmenuitem(self.Components[i]).GetParentMenu = mainmenu1 then
            Tmenuitem(self.Components[i]).Visible := false;
    end;
      

  3.   

    如果不只是顶层,
    可以使用Tag属性。通过Tag分组。
      

  4.   

    tag是什么哪?举个例子好吗???
      

  5.   

    mmiFileNew.Tag := 1;
    mmiFileEdit.Tag := 1;可以Object Inspector设置Tag的。
    循环时:
      for i := 0 to ComponentCount -1 do
        if Components[i] is TMenuItem then
          if TMenuItem(Components[i]).Tag = 1 then
            ...