我的菜单是:不同用户登陆时,菜单动态创建
我现在的问题是,当我使用“用户1”登陆到主窗体后,然后点击“切换用户”菜单项,
当切换到“用户2”时,我想把“用户1”的菜单删掉,改成显示“用户2”的菜单,要怎么做,谢谢!

解决方案 »

  1.   

    1.
    Menu1.Items.Clear;
    2. MenuItem1 := FindCompontent('Your MenuItem Name') As TMenuItem;
       MenuItem1.Clear;
      

  2.   

    try   
       MenuItem1 := TMenuItem(FindCompontent('Your MenuItem Name')) ;
       MenuItem1.Clear
    except
       
    end;
      

  3.   

    MenuItem1.Delete(Index);//删除MenuItem1的子项索引为Index的菜单
    MenuItem1.Free; //删除MenuItem1本身
      

  4.   

    用FreeAndNil,与释放其他动态创建的组件没有差别。
      

  5.   

    To CSSCCH(CSSC_CH): 
    我就是把所有的菜单都放在数据表中,总共设计了如下6个表
    1、MainMenu(主菜单表)
    2、UserGroup(用户组表)
    3、Userinfo(用户表)
    4、UserFun(用户功能表)
    5、GroupFun(组功能表)
    6、Fun(功能表).
    部分代码如下    ZCD_Q := TADOQuery.Create(nil);
        ZCD_Q.Connection := Frmdm.ADOConnection1;
        ZCD_Q.SQL.Add('select funname from mainmenu');  //从主菜单中选择功能名
        ZCD_Q.Open;
        while not  ZCD_Q.Eof do
        begin
           menu:=TMenuItem.Create(self);
           menu.Caption:=ZCD_Q.FieldValues['funname']; 
           Frmmain.MainMenu1.Items.Add(menu);
           ZCD_Q.Next;
        end;    //以下把登陆用户所具有的功能号,填入菜单中,作为菜单子项
           for i:=1 to YHGNB_Q.RecordCount do           
           begin
              GNB_T.Locate('funid',YHGNB_Q.FieldValues['funid'],[]);       
              s:=strtoint(GNB_T.FieldValues['parentid']);
              menu:=TMenuItem.Create(self);
              menu.Caption:=GNB_T.FieldValues['funname'];
              FrmMain.MainMenu1.Items[s].Add(menu);
              menu.OnClick:=ShowIt;    //当点击时,显示相应的窗口
              YHGNB_Q.Next;
           end;
      

  6.   

    请问一下:
    FindCompontent 要引用那个单元啊