我想在MDI主窗体显示的时候,动态的根据我的MENU表中的内容,自动的添加菜单项。我的表为下:
表名:MENU
MNBH      MNNAME         
M01      人事管理        
M02      考勤管理         
M03      工资管理         
M0101    人事档案管理
M0102    员工奖惩管理
M0201    考勤日报管理
M0202    考勤汇总管理MNBH 这个字段我想作为1. 作为动态添加的菜单项的NAME属性,2.作为动态添加的菜单项的OnClick的过程名。下面是问题:
1.我想把MNBH字段值长度为3的SELECT 出来,然后添加到菜单的一级菜单。
2.然的把MNBH字段值长度为5的SELECT 出来,添加到MNBH字段值的前三位的一级菜单下面。
3.动态添加菜单子项时,如要添加的子项的NAME,Caption等属性,我知道怎么样赋值。但是子菜单项的OnClick怎么样指定到我已建好的过程呢?我的理想效果如下:
人事管理            考勤管理          工资管理
  人事档案管理        考勤日报管理
  员工奖惩管理        考勤汇总管理
谢谢啦。。

解决方案 »

  1.   

    最主要就是有两点不明白。
    1.添加子菜单项时,如新的子菜单项的NAME,Caption 属性, 知道怎么设,但是不知道他的OnClick事件怎样指定到一个我已经写好的过程。
    2.一级菜单,我知道怎样添加,但是二级子菜单就不知道怎么添加了。
      

  2.   

    你的问题 实际上是 动态菜单的问题  google上搜索一下 太多了请参考:http://book.77169.org/ask20/how124447.htm
      

  3.   

    我主要就是不知道怎么将新添加的子菜单的菜单响应事件也动态的创建哪位大侠能指点一二啊比如说,我动态添加的子菜单项的NAME属性为M0101,
    那么我要动态的根据动态添加的菜单项的NAME属性M0101来确定它自己的OnClick事件。请问,我需要在程序里先写好所有的事件过程吗?然后再一对一的结OnClick事件赋值。还是可以动态的添加的建立菜单项的OnClick事件
    请大家给个例子啊
      

  4.   

    private
      procedure MClick(Sender: TObject);//定义私有过程procedure Tform1.MClick(Sender: TObject);
    VAR
      HBM:STRING;
    begin
      HBM := (Sender AS TMenuItem).name;
      if hbm = 'M01' then 
        showmessage('M01')//做你想做的事情
      else if hbm = 'M02' then 
        showmessage('M02')//做你想做的事情
      else if hbm = 'M0101' then 
        showmessage('M0101')//做你想做的事情
      else 
        showmessage('^_^');//做你想做的事情
    end;var
      Mi:TMenuItem;
      MC:STRING;
    begin
      ADOTEMP.First;
      WHILE NOT ADOTEMP.Eof DO
      BEGIN
        Mi:=TMenuItem.Create(Self);
        MC := ADOTEMP.FIELDBYNAME('MNBH').AsString;
        Mi.Name := MC;
        MC := ADOTEMP.FIELDBYNAME('MNNAME').AsString;
        Mi.Caption:=MC;
        Mi.OnClick:=Hbbm;
        Menu1.Items[0].Add(MI);
        ADOTEMP.Next;
      END;
      

  5.   

    谢谢haisha 你帮我解决了实际的问题也谢谢大家。。