不知道你问的是什么,我是这样创建动态菜单的:
ChangeSkinPopItems:array[0..5] of TMenuItem; //换肤菜单GetChildDir(ExtractFilePath(paramstr(0))+'skin\*.*',SkinList); //取得皮肤的所有样式
  for ChangeSkinPopi:=0 to SkinList.Count-1 do
    begin
      ChangeSkinPopItems[ChangeSkinPopi]:=TMenuItem.Create(Self);
      ChangeSkinPopMenu.Items.Add(ChangeSkinPopItems[ChangeSkinPopi]);
      ChangeSkinPopItems[ChangeSkinPopi].Caption:=SkinList.Strings[ChangeSkinPopi];
      ChangeSkinPopItems[ChangeSkinPopi].OnClick:=ChangeSkinPopMenuHandler;
    end;procedure TMainM.ChangeSkinPopMenuHandler(Sender:TObject);
begin
  with Sender as TMenuItem do
    begin
      //我的过程
    end;
end;你说读一定格式的文本,那用Ini就很方便了

解决方案 »

  1.   

    难道我上面没有说清楚吗?
    比如说:
    浏览器的菜单在我所说的一定格式的文本中是这样的:
    ***************************
    [文件(&F)]
    新建(&N)
    .窗口
    ._
    .邮件
    打开(&O)
    编辑(&D)
    .......
    发送(&E)
    .电子邮件页面
    .电子邮件连接
    ...........
    关闭(&C)**************************
    .........:表示省略
      

  2.   

    我个人看法是不是可以把格式改下呢?
    [文件(&F)]
    F1=新建(&N)
    F1-1=窗口
    F1-2=_
    F1-3=邮件
    F2=打开(&O)
    F3=编辑(&D)
    .......
    F10=发送(&E)
    F10-1=电子邮件页面
    F10-2=电子邮件连接
    ...........
    F15=关闭(&C)然后用Ini操作就比较方便了哈(呵呵,可能方法比较笨咯)继续关注ing^_*
      

  3.   

    procedure TMainForm.AddMenu;//添加子菜单
    var
    newitem:tmenuitem;
    begin
         newitem:=tmenuitem.Create(self);
         newitem.Caption:='动态菜单的caption';
         //定义新生成菜单的click功能
         newitem.OnClick:=Your_Define_Prog;//将动态菜单项的Click指向你自定义程序
         Your_Menu.Add(newitem);
    end;//动态菜单的click功能
    procedure TMainForm.Your_Define_Prog;
    begin
     你的动态菜单代码;
    end;
      

  4.   

    海海的办法很好啊。
    你只要通过读你的文件,得到‘动态菜单的caption'就可以了。
      

  5.   

    所谓动态菜单是指菜单项随着程序的操作变化而变化。现在,我们用Delphi来实现这一功能,具体步骤如下:  1.首先,确定动态菜单的数据来源,即要确定动态菜单标题是来自Windows的系统注册表,还是来自一个数据库,或者是来自一个子目录,主要由程序的功能而定。这里假设主窗口名为MainForm,上面已有主菜单,其动态菜单的数据源是一个String(字符串)类型的变量,名称为SubMenuItemSource。  2.确定生成的动态菜单的功能,即定义动态菜单的OnClick()事件,例如,动态菜单标题来自一个磁盘文件名时,那么程序在响应OnClick()事件时,可能的操作是要打开选中的文件。因此,对菜单所在的主窗口模块的单元程序的数,据我们需要定义Type后添加一个自定义的事件MyClick()。   然后,需要编写如下MyClick()事件的具体内容:  procedure TMainForm.MyClick(Sender: TObject);//动态菜单OnClick事件响应
      begin 
      Show.Message(TMenuItem(Sender).Caption);//显示选中的动态菜单标题,
      end;   这里调用的ShowMessage标准例程(在Dialogs.pas中)显示TMenuItem(Sender).Caption,它就是选择的菜单项的Caption,类似用TMenuItem(Sender).Name则是选择菜单项的Name。
      3.编写程序将动态菜单标题添加到指定的菜单顶下,并将其与OnClick()事件联系起来。将以下程序段添加到MainForm的OnCreate事件过程中,可在程序启动时完成动态菜单的动态生成:
      procedure TMainForm.FormCreate(Sender: TObject);
      var 
      addSubItem:TMenuItem;
      i:Integer;
      begin 
      for i:=0 to N do //N等于要添加的动态菜单数目,需事先定义为数值型变量,并赋值 
      begin 
      addSubItem:= TMenuItem.Create(Self); 
      addSubItem.Name := ′A′+IntToStr(i); 
      addSubItem.Caption := SubMenuItemSource; // 步骤1的SubMenuItemSource应先赋值
      FileOpenItem.Add(addSubItem); //在名称为FileOpenItem的菜单项下添加子菜单
      addSubItem.OnClick:=MyClick; // 步骤2的MyClick(),自定义菜单要响应的事件 
      end
      end;