想在程序中动态创建菜单,创建后保存起来,以后运行程序的时候利用保存的信息恢复动态创建的菜单。 不知道怎么弄,那位大侠知道麻烦指教一下。  比如说我现在想新建 ‘打开文件’和‘关闭文件’两个菜单。那代码该怎么写? 谢谢!

解决方案 »

  1.   

    创建的时候需要些什么,你保存下来,再运行的时候,重新创建一次不就行了?那些信息当中,唯一不好处理的只有一个事件函数。而事件函数,其实可以放到ActionList当中,这样子就相对简单多了。
      

  2.   

    为主菜单中“文件”菜单添加‘打开文件’procedure TForm1.Button2Click(Sender: TObject);
    var
      mitem:Tmenuitem;
    begin
      mitem:=Tmenuitem.Create(self);
      mitem.Caption:='打开文件';
      mitem.OnClick:=myclick;
      fileitem.Insert(fileitem.Count,mitem);
    end;fileitem: TMenuItem;为主菜单中文件菜单
      

  3.   

    动态添加菜单我会,关键是将菜单信息保存到ini文件和利用保存的信息再创建菜单我不会。
      

  4.   

    给一点读取ini文件创建菜单的代码
    保存到ini文件的也差不多,就是用WriteString那些方法了
    uses IniFiles;
    var
      MyIniFile: TIniFile;
      menuFile : string;
      mitem:Tmenuitem;
      actionIndex: integer;
    begin
      menuFile:= ExtractFilePath(Paramstr(0))+ 'menu.ini';
      MyIniFile := TIniFile.Create(ConfigFile);
      newitem:=Tmenuitem.Create(self);
      newitem.Caption:= MyIniFile.ReadString('Menu','caption','');
      actionIndex:= MyIniFile.ReadInteger('Menu','index','');
      newitem.OnClick:= ActionList1.Actions[actionIndex].OnExecute;;
      fileitem.Insert(newitem);
      MyIniFile.Free;
    end;
      

  5.   

    用TStream的WriteComponent/ReadComponent来保存读取会更方便