现有三个数据庫:user,power,Menu.
Menu:
MenuName | MenuCap | MenuCli |
A1              C1      X1
A11             C2      X2
A12            C3       X3
A121            C4      X4
A13             C5      X5
B1              C6      X6
B11             C7      X7
B12             C8      X8其中A11,A12,A13是A1的子菜单,A121是A12的子菜单user:
serNo | UserName |
AA    张三    
BB       李五Power:
UserNo | MenuName
AA       A121
AA       B1
BB       A11
BB       B12要动态生成用户AA的菜单如下:
A1        B1
A12_      B11
    A121  B12
任给一用户如何生成菜单?能否写段程序。我的E_mail: [email protected]

解决方案 »

  1.   

    //////////////////////////////////////////////////////////
    //   动态生成菜单的过程                                 //
    //////////////////////////////////////////////////////////
    //q_menu为TQueryprocedure Pro_CreateMenu;
    var
      MenuItem:TMenuItem;
    begin
      TMainMenu.Items.Clear;
      q_menu.close;
      q_menu.SQL.clear;
      q_menu.sql.add(' select * from xt_gncd order by xmdh ');
      q_menu.Open;
      if not q_menu.IsEmpty then
      while not q_menu.Eof do
      begin
        MenuItem:=TMenuItem.create(self);
        MenuItem.Name:='m'+trim(q_menu.fieldbyname('xmdh').asstring);
        MenuItem.Caption:=trim(q_menu.fieldbyname('xmmc').asstring);
        if q_menu.FieldByName('yjdbz').value=0 then // 为叶节点
        begin
          MenuItem.onclick:=pro_Click; //菜单的click 事件
        end;    if q_menu.FieldByName('fbdh').value=0  then // 为根节点
          form1.TMainMenu.Items.add(MenuItem)
        else
          TMenuItem(form1.FindComponent('m'+trim(q_menu.fieldbyname('fbdh').asstring))).add(MenuItem);
        q_menu.next;
      end;
      
    end;附加数据库表xt_gncd(功能菜单)的结构:
    create table xt_gncd(
    xmdh:char //项目代号
    xmmc:char //项目名称
    fbdh:char //父辈代号
    yjdbz:integer//叶接点标志XMDH XMMC         FBDH YJDBZ
    100 工资业务(&G) 0 1
    101 制定工资单 100 0
    103 打开          100 0
    200 统计核算(&T) 0 1
    201 复制          200 0
    203 粘贴          200 0
    800 系统设置(&S) 0 1
    801 操作人员设置 800 0
    803 口令修改          800 0
    805 参数设置          800 0
    807 人员信息设置 800 0
    900 帮助(&H)          0 1
    901 帮助主题          900 0
    903 关于          900 0