我要得到如下功能?某一个mainmenu.item.items[i].item[j].items[k]其中某一处我要得到字符串I+J+K,这样可以用来进行功能定位与外部属性载入.
如:mainmenu.item.items[0].item[0].items[2]处可得到'002'字符串.
通用性菜单,事先不知,动态载入象treeview就具有level与parent请哪位大虾帮忙,要交毕业设计了.还没有完成.

解决方案 »

  1.   

    function ScanMenuItem(mMenuItem: TMenuItem): string;
    begin
      Result := '';
      while Assigned(mMenuItem) do
      begin
        if Assigned(mMenuItem.Parent) then
          Result := Result + IntToStr(mMenuItem.MenuIndex)
        else Result := Result + '0';
        mMenuItem := mMenuItem.Parent;
      end;
    end;procedure TForm1.MenuItemClick(Sender: TObject);
    begin
      Caption := ScanMenuItem(TMenuItem(Sender));
    end;
      

  2.   

    我用你的方法解决了:如下function TmenuDesign.SaveItemsToList(value:TmenuItem):boolean;
    var I:integer;
    begin
     with value do
       begin
          for i:=0 to Count-1 do
           begin
              showmessage(getlevel(value.Items[i]));
           if items[i].Count>0 then
                   SaveItemsToList(items[i]);  //递归查找有没有子菜单
           end;
       end;
    end;function TmenuDesign.getlevel(value:TmenuItem):string;
    var i:integer;
        s:string;
    begin
      if Assigned(value.Parent) then
          begin
             s:=getlevel(value.Parent)+inttostr(value.MenuIndex);
         end else
           if value.MenuIndex<>-1 then
                 s:=inttostr(value.MenuIndex);
    result:=s;
    end;