如题
//==========================
//表结构如下:
      ID号      菜单名称       父菜单号 1 系统管理(&Q) 0
2 注册登陆 1
3 退出登陆 1
4 - 1
5 更换皮肤 1
6 蓝色梦想 5
7 金色收获 5
8 绿色希望 5
9 - 1
10 软件注册 1
11 用户管理 1
12 - 1
13 退出 1
14 基础信息(&R) 0
15 商品品种录入 14
16 - 14
17 供应商录入 14
18 客户录入 14
19 - 14
20 系统参数录入 14
21 - 14
22 员工管理 14
23 员工档案 22
24 考勤管理 22
25 计划管理(&S) 0
26 计划录入 25
27 计划查询 25
28 - 25
29 计划汇总 25
30 采购单形成 25
31 入库管理(&T) 0
32 入库录入 31
33 入库查询 31
34 - 31
35 退库录入 31
36 退库查询 31
37 库存管理(&U) 0
38 商品盘点 37
39 库存查询 37
40 库存调整 37
41 - 37
42 预警查询 37
43 销售管理(&V) 0
44 销售录入 43
45 销售查询 43
46 - 43
47 交班 43
48 出库管理(&W) 0
49 出库录入 48
50 出库查询 48
51 - 48
52 财务管理(&X) 0
53 凭证录入 52
54 凭证查询 52
55 - 52
56 月末结账 52
57 - 52
58 帐务查询 52
59 数据传送(&Y) 0
60 订单上传 59
61 销售上传 59
62 - 59
63 信息下载 59
64 帮助(&Z) 0
65 销售系统帮助 64
66 远见主页 64
67 - 64
68 关于 64

解决方案 »

  1.   

    很简单1、在你的窗口上放一个 TMainMenu 名字为 MainMenu1
    2、假如你的菜单表名称为 菜单表
    3、假如你的主连接名称为  ADOConnection1下面是简单的代码procedure TForm1.Button1Click(Sender: TObject);
    var
      MenuItem: TADOQuery;
      I, S: Integer;
    begin
      MenuItem:=TADOQuery.Create(Self);
      try
        MenuItem.Connection:=ADOConnection1;
        MenuItem.SQL.Add('SELECT * FROM 菜单表 WHERE 父菜单号=0 ORDER BY ID号');
        MenuItem.Open;
        for I:=0 to MenuItem.RecordCount-1 do
        begin
          MainMenu1.Items.Add(TMenuItem.Create(Self));
          MainMenu1.Items.Items[MainMenu1.Items.Count-1].Caption:=MenuItem.FieldByName('菜单名称').AsString;
          with TADOQuery.Create(Self) do
          try
            Connection:=ADOConnection1;
            SQL.Add('SELECT * FROM 菜单表 WHERE 父菜单号='+MenuItem.FieldByName('ID号').AsString+' ORDER BY ID号');
            Open;
            for S:=0 to RecordCount-1 do
            begin
              MainMenu1.Items.Items[I].Add(TMenuItem.Create(Self));
              MainMenu1.Items.Items[I].Items[MainMenu1.Items.Items[I].Count-1].Caption:=FieldByName('菜单名称').AsString;
              Next;
            end;
          finally
            Close;
            Free;
          end;
          MenuItem.Next;
        end;
      finally
        MenuItem.Close;
        MenuItem.Free;
      end;
    end;你可以自行进行再优化,譬如
    1、TMainMenu 可以开始的时候动态创建一个
    2、创建子菜单的TADOQuery可以一次性创建,完成后再释放