var
  NewItem: TMenuItem;
  I : integer;
begin
  for  I := 0 to Screen.FormCount-1 do
  begin
    NewItem := TMenuItem.Create(Self);
    NewItem.Caption := Screen.Forms[I].Name;
    YourMenuItem.Add(NewItem);
  end;
end;

解决方案 »

  1.   

    TO chechy(我爱洁洁) 
    我要读取*.INI啊,NewItem.Caption := 从INI中读取啊.
      

  2.   

    uses IniFiles;var
      faceini: TIniFile;
      CoolBarPicture: String;
    begin
      faceini:=nil;
      try
        faceini:=TIniFile.Create(ExtractFileDir(Application.ExeName)+'\face.ini');
        CoolbarPicture:=faceIni.ReadString('face','CoolBar','Top.bmp');
        ManProForm.iColor:=faceIni.ReadInteger('face','Color',16777215);
     ........
      finally
        faceini.Free;
      end;
    NewItem.Caption := faceIni.ReadString('Item','Caption','CaptionName')
      

  3.   

    你不是要问怎么读取*.ini吧,,我晕先
    你的Caption肯定是要从ini中读取的,然后你的子item是要加在哪个节点下面,也是要从ini读取的
    最好是这样做*.ini     节点名   子节点名  
    例如:Name     summer419
          Name     lifenqidelphi
      

  4.   

    从ini文件的内容,你自己读就是了。
      

  5.   

    怎么读*.INI文件就不用说了吧,下面的代码生成三级菜单,放到你的FormCreate里面试一下。当然代码里面的内容可以根据读*.INI文件的结果动态产生。你甚至可以定义一个动态的TMenuItem的数组,数组的长度根据你从*.INI里读出的数据的数目来确定。(注:窗体上要放一个MainMenu控件,如果你乐意的话,这个控件也可以动态创建:
    var MainMenu1:TManiMenu;
    begin
     MainMenu1:=TMainMenu.Create(self);
     .........)
    //在MainMenu1下加入三级菜单
    var xx,yy,zz:TMenuItem;
    begin
     xx:=TMenuItem.Create(self);
     yy:=TMenuItem.Create(self);
     zz:=TMenuItem.Create(self);
     xx.Caption :='MenuItem1';
     yy.Caption :='SubItem1';
     zz.Caption :='SubSub';
     MainMenu1.Items.Add(xx);
     xx.Add(yy);
     yy.Add(zz);
    end;
      

  6.   

    读取*.INI文件的范例:
    var name:string;
    begin
    GetPrivateProfileString(
    'PersonalInfo', // []中节的名称
    'Name', // =前的键名
    '', // 如果没有找到字符串时,返回N i l
    Name, // 存放取得字符串
    100, // 取得字符的允许最大长度
    'c:\Samples\S6_6\S6_6.ini' // .INI 文件名
    ) ;
      

  7.   

    老兄,在INI文件中不能读取二级目录啊.
      

  8.   

    读取*.INI文件的范例:
    var name:string;
    begin
    GetPrivateProfileString(
    'PersonalInfo', // []中节的名称
    'Name', // =前的键名
    '', // 如果没有找到字符串时,返回N i l
    Name, // 存放取得字符串
    100, // 取得字符的允许最大长度
    'c:\Samples\S6_6\S6_6.ini' // .INI 文件名然后你将读取的字符串赋给MenuItem的Caption不就行了吗。
    ) ;
      

  9.   

    TO oracle_lover(数据库情人),这个我当然知道,问题就是我怎么叛哪个是二级目录呢,我在程序中可是动态生成目录哟.
      

  10.   

    搞糊涂了,你的意思是*.INI文件的二级目录吗?恕我才疏学浅,不太明白。也许你要遍历*.INI文件,动态获取每个节的名称和下面键的名称。
      

  11.   

    我用数据库实现过:意思相同,实际这是如何组合INI文件的问题。
    和数据库结构类似。
    [MenuCaption]
    01=File(&F)
    11=New...
    12=-
    13=Exit
    02=Edit(&E)[MenuParent]
    1=0
    11=1
    12=1
    13=1
    2=0
    [MenuExecut]
    1=''
    11=NewClicked
    [ShortCut]
    1=
    11=
    12=
    13=Alt+F4
    2=看看行吗!
      

  12.   

    能将你的*.ini文件格式贴上来吗?
    我以前做个权限管理,使用TTreeView方式实现的.类似节点数据全在数据库中,
    没一个节点设置一个标志位,从数据库中读得标志位便知道菜单的级别了.然后根据级别建就是了,建菜单,楼上说得比较清楚了.不再熬述.