class recursion ... { treeNode childNode,menuitemNode; treeNode fields,tables,LastTree,items; treenodeIterator it, itFld,itlast,itmenu,menuFld; real layer,_count; ktl_formName ktl_formName; label label_gb,label_us,label_gb1,label_us1; public static void main(args _args)...{ recursion1 recursion=new recursion1(); recursion.init(); } public void init()...{ Str _name; xInfo xInfo = new xInfo(); treeNode t = xInfo.rootNode().AOTfindChild("Menus"); it = t.AOTiterator(); childnode=it.next(); layer=1; //delete_from ktl_formname; while(childnode) ...{ _name= findProperty(childnode.AOTgetProperties(),'label'); // print childnode.treeNodeName(), "***"; // print num2str(layer,1,0,0,0); // print _name;pause; itfld=childnode.AOTiterator(); itlast = t.AOTfindChild(childnode.treeNodeName()).AOTiterator(); // this.recursion2(layer,childnode,itlast,childnode.treeNodeName(),childnode.AOTchildNodeCount()); this.recursion(_name,layer,childnode,itlast,childnode.treeNodeName(),childnode.AOTchildNodeCount()); layer++; childnode=it.next(); } } public void recursion(Str _label,real _layer,treeNode _ChildNode,treeNodeIterator _itfld,Str nodeName,int countNode)...{ int mark; int i; str formtype; str formname; str formlabel; str menu_label ; xInfo Info2; info2 = new xInfo(); childnode=_childnode; i=_layer*10; //print int2str(_layer)+nodename+'---'; //主菜单 ktl_FormName.clear(); ktl_formname.ID= num2str(layer,1,0,0,0); ktl_formname.ID_str=num2str(_layer,1,0,0,0)+'*'; ktl_FormName.Menu_class='***'; label_gb=new label('en-gb'); ktl_FormName.Form_cn=label_gb.extractString(_label); label_us=new label('en-us'); ktl_FormName.Form_us=label_us.extractString(_label); //print ktl_FormName.Form_cn,'--',ktl_FormName.Form_us; pause; ktl_FormName.insert(); _count=countNode; fields=_itfld.next(); while(fields)...{ --_count; i++; mark=fields.AOTchildNodeCount(); if(mark)...{ this.recursion(findProperty(fields.AOTgetProperties(),"label"),i,childNode,fields.AOTiterator(),fields.treeNodeName(),fields.AOTchildNodeCount()); } else ...{ // print int2str(i)+fields.treeNodeName(); //Form 显示名称 formtype=findProperty(fields.AOTgetProperties(),"menuitemtype"); //Form 类型 // print formtype; formname=findProperty(fields.AOTgetProperties(),"menuitemName"); //Form 名称 // print formname; //pause; this.findForm1(formtype,formname,i,fields.treeNodeName()); if(_count==0) i=(i-(i mod 10))/10; } fields=_itfld.next(); }}void findForm1(Str _type,Str _name,real _layer,Str NodeName)...{ Str menu_class; Str menu_object; str menu_label; Info xInfo1; treeNode t1; ; xInfo1 = new xInfo(); ttsbegin; if(!_type || !_name)...{ ktl_FormName.clear(); ktl_FormName.Form_cn=NodeName; ktl_formname.ID= num2str(layer,1,0,0,0); ktl_formname.ID_str=num2str(_layer,1,0,0,0); ktl_FormName.MenuItemName=_name; ktl_FormName.MenuItemType=_type; ktl_FormName.Menu_class=menu_class; ktl_FormName.Menu_object=menu_object; ktl_FormName.insert(); return; } else ...{ t1 = xInfo1.rootNode().AOTfindChild("Menu Items"); itMenu = t1.AOTiterator(); menuitemNode=itmenu.next(); // print menuitemnode.treeNodeName(); menufld=t1.AOTfindChild(_type).AOTiterator(); items=menufld.next(); while(items)...{ if(items.treeNodeName()==_name) ...{ menu_class= findProperty(items.AOTgetProperties(),"Class"); menu_object= findProperty(items.AOTgetProperties(),"Object"); ktl_FormName.clear(); //ktl_FormName.Form_cn=NodeName; ktl_formname.ID= num2str(layer,1,0,0,0); ktl_formname.ID_str=num2str(_layer,1,0,0,0); ktl_FormName.MenuItemName=_name; ktl_FormName.MenuItemType=_type; ktl_FormName.Menu_class=menu_class; ktl_FormName.Menu_object=menu_object; menu_label=findProperty(items.AOTgetProperties(),"label") ; //print formlabel; label_gb1=new label('en-gb'); ktl_FormName.Form_cn=label_gb1.extractString(menu_label); label_us1=new label('en-us'); ktl_FormName.Form_us=label_us1.extractString(menu_label); ktl_FormName.insert(); // print menu_class; // print menu_object; pause; return; } items=menufld.next(); } } ttscommit;}}