如题。
我要实现的是分权限登陆后,进入到mainform中,里面有mainmenu控件,将已经写好的数据信息读取到mainmenu中
先读取数据库的内容,分权限好说。
首先问下数据库如何设计?
我的假设有两种
如:  mainmenu中假设有如下几个选择项
学员管理   老师管理   选课设置   关于(1级)
学员管理 subitem有  学员基本信息  学员成绩查询(这两个二级)
                  而 成绩查询  subitem下又有  数学  语文 英语(这三个三级) //这是假设的例子
选课设置 subitem 若干
老师管理 subitem 若干     写的这些都是要从数据库中读入到mainmenu中的!!!
           请问数据库里面如很写?我想过两种就是  mid  menuname    其中 mid就是编号 可以按层次编,
但是数据库读出时候不方便。假设学员管理为1  学员基本信息就为11  学员成绩查询为12  
成绩查询下的 数学为121 语文为122 英语为123  其他依次。或者直接设置 id mfirst msecond mthird  menuname   
其中id自增 mfirst msecond mthird分别设置为层次   menuname为学院管理等的名称  感觉这样读取出去方便
一些。不过感觉有点麻烦现在解决将它读取到mainmenu中的问题
上网看了下  读取方式,我复制下来
  mainmenu1.Items.Clear;  //----------------第一种添加方法  menu := TMenuItem.Create(self);
  menu.Caption := '第一级';
  mainmenu1.Items.Add(menu);  menusub1 := TMenuItem.Create(self);
  menusub1.Caption := '第二级';
  menu.Add(menusub1);  menusub2 := TMenuItem.Create(self);
  menusub2.Caption := '第三级';
  menusub1.Add(menusub2);      files :=tmenuitem.Create(self);  //------------第二种添加方法
       edit  :=tmenuitem.create(self);
      aa    :=tmenuitem.Create(self);
      bb    :=tmenuitem.Create(self);
      cc    :=tmenuitem.Create(self);
      dd    :=tmenuitem.Create(self);
      ee    :=tmenuitem.Create(self);
      ff    :=tmenuitem.Create(self);
      gg    :=tmenuitem.Create(self);
//      MainMenu1.Items.Add(files[i]);
      files.Caption := '二的1级';
      edit.caption  := '二的2级';
      aa.Caption    := '三的1级';
      bb.Caption    := '三的2级';
      cc.Caption    := '三的3级';
      dd.Caption    := '四级1级';
      ee.Caption    := '四的2级1';
      ff.Caption    := '四的2级2';
      gg.Caption    := '四的2级3';      mainmenu1.AutoHotkeys:=mamanual;{此句代码为不让系统自动设置快捷键}      MainMenu1.Items.Add(files);
      mainmenu1.items[1].add(edit);
      mainmenu1.Items.Add(aa);
      mainmenu1.Items[2].Add(bb);
      mainmenu1.Items[2].items[0].Add(cc);
      mainmenu1.Items.Add(dd);
      mainmenu1.Items[3].Add(ee);
      mainmenu1.Items[3].Add(ff);
      mainmenu1.Items[3].Add(gg);
本人试验编译通过。但是要是设置成读取数据库中的信息就有点不好办
请有关高手出来指点做过相关的也请来说一下,最好加上源码解释。
本人分数都在赌博游戏里面玩完了,有分必加!!!谢谢各位指点!!!
(以前本人是学java的,delphi就看了三个星期,公司接了这方面的单,没办法硬着头皮上!!!)
         

解决方案 »

  1.   

    抛砖引玉----------
    感觉delphi除了web方面差点外,其他真的像无所不能!!!高手接着!!!
      

  2.   

    加一列'上级节点ID'如果要查哪一个节点是否有下级节点
    查下上级节点ID中是否有本节点ID就行
    Select * from table where 上级节点ID=本节点ID]数据集不为空 表示有下级节点 可依次加入,为空就没有下级节点每个节点都可如此判断 直到没有下级节点为止
      

  3.   

    TO sparklerl  谢谢提示~~~
    但是我还是不知道怎么操作,有上级结点判断的话,不要下级结点判断吗?
    上面举例的三级结点如何读取?
    用代码提示更好,请帮忙仔细说明下,谢谢各位
      

  4.   

    数据库设计ID(key)  PID(上级ID)        Name 
    1        0                  学员管理
    2        1                  学员基本信息(这就是学员管理的子菜单,PID指向学员管理的ID)
    .
    .
    .
    .
    .
    .
    以此类推