这样动态创建菜单是否可以?是否存在效率问题?我把item1:=TMenuItem.Create(FavoriteMenu);放到for外面运行时提示错误信息,并且只能创建一条,放到里面可以实现想要的效果,但第循环一次都要创建一遍菜单,这样可行吗?
  for i:=0 to strList.Count-1 do
  begin
    item1:=TMenuItem.Create(Menu1);
    item1.Caption:=strFavList(strlist[i],False);
    strFavPath:=strFavList(strlist[i],True);
    Menu1.Items.Add(item1);
  end;

解决方案 »

  1.   

    item1:=TMenuItem.Create(Menu1);
    //这只是创建一个菜单项,当然要放在循环里。但第循环一次都要创建一遍菜单,这样可行吗?
    --------------------------------------------
    为什么只循环一次就创建一遍菜单??那用循环有什么意义??
    一次就创建好只能做静态的
      

  2.   

    有问题,循环之前没有clear,菜单会越创越多
      

  3.   

    var
      MenuItem :Array[0..3] of TMenuItem
      i :Integer;
    begin
      MainMenu :=TMainMenu.Create(Self);
      for i :=0 to 3 do
        begin
          MenuItem[i] :=TMenuItem.Create(Self);
          MenuItem[i].Name :=NemuItem+IntToStr(i);
          MenuItem[i].Caption :=MenuItem[i].Name ;
          MainMenu.Item.Add(MenuItem[i]);
        end;end;
      

  4.   

    回 bluesky23(乐天_正在开发右半脑^_^) 
    哦,只是创建一个菜单项啊,明白了,只要不影响执行效率就行了
      

  5.   

    回 JJNW(剑锋)
    strlist变量我是经过处理的,所以不必担心,谢谢提醒啊!