use"lang.vl" use "win.vl" use "dev:vm[xml.vm]" use "treeview.vm" use "dev:vm[xaserverarg.vm]" use "dev:vm[xaserver.vm]" use "dev:vm[xdwgrid.vm]" use "dev:vm[xdwtable.vm]" use "dev:vm[xutil.vm]" use "file.vl" use "list.vl" unit vbusiness.vpage [ QuickCode_Tree is extend list; about QuickCode_Tree [ field: method: [ xdwgrid__ dw_list; treeview__ tv_1; string m_config; string m_agent; string m_id; string m_dbmap; string treexquery; string c_type; msxml::IXMLDOMDocument m_configDoc; string kpstr; string strtpl; string m_QueryTxt; int alert(string str) { TApp::alert(this,str); //win__::MessageBox(this.GetHWND(),str,"Ìáʾ:",0); return 0; } int SetAgent() { string xfNodeAgentArea = "agentarea"; xnode__ anode = new xnode__; anode.setNativePointer(GetAgentNode(xfNodeAgentArea)); var xframeElement = win__::GetElement(); var agent = xframeElement.selectSingleNode("agent/"+xfNodeAgentArea+"[1]"); if(agent) { string s = agent.xml+""; SetAgentNodeContent (anode,s); } return 1; } int OnRetrieve() { dw_list.AcceptText(); xml__ x=new xml__; x.setNativePointer(xml__::CreateInstance()); xaserverarg__ arg=new xaserverarg__; arg.setNativePointer(arg.CreateInstance()); arg.AddArg("id",m_id); arg.AddArg("sType",c_type); arg.AddArg("QueryTxt", m_QueryTxt ); //trace(arg.GetString()); /*if (TDataSet::exec(m_config, "query1", arg.GetString(),x) != 1) { trace(x.GetXmlDoc().text); return -1; }*/ if (url::get("QuickCode/entity/listaddtree",arg.GetString(),x) != 1) { trace(x.GetXmlDoc().text); return -1; } //trace(x.GetXml()); if(x.GetXml()=="") { xml__ xx=new xml__; xx.setNativePointer(xml__::CreateInstance()); xx.LoadXml(""); dw_list.Retrieve(xx); dw_list.Redraw(); } else { dw_list.Retrieve(x); dw_list.Redraw(); } return 1; } int OnTreeSelChanged(ref TNotifyEvent evt,int p) { ref NMTREEVIEW nmtv = evt.pnmh; int hItem = nmtv.itemNew.hItem; int wid = tv_1.GetId(); int hitem=treeview__::GetSelectedItem(wid); //c_type=dw_type.GetItemLabel(hitem); //Èç¹ûÊǸú½Úµã int roothitem=treeview__::GetRootItem(wid); if(hitem == roothitem){ c_type=""; } else { c_type = treeview__::GetItemLabel(wid,hitem); } OnRetrieve(); return 1; } int adduomfolder() { xaserverarg__ arg = new xaserverarg__; arg.setNativePointer(arg.CreateInstance()); arg.AddArg("note","ÐÂÔö"); arg.AddArg("m_id",m_id); //win__::OpenWindow("dev:xpage[AddUomGroup.vx]",arg); openUrl("¹«¹²ÉèÖÃ.vface/xpage/quickcode/AddGroup", arg); string ok = arg.GetArgString("return"); if(ok == "ok"){ string GroupName = arg.GetArgString("GroupName"); xml__ xx=new xml__; xx.setNativePointer(xml__::CreateInstance()); xaserverarg__ args = new xaserverarg__; args.setNativePointer(args.CreateInstance()); args.AddArg("GroupName",GroupName); args.AddArg("OldGroupName",""); args.AddArg("m_id",m_id); /*if(TFile::exec(m_config,"updateuomtype",args,xx)!=1) { trace("error:"+xx.GetXml()); alert("±£´æ³ö´í!"); return 0; }*/ if (url::get("QuickCode/pref/quickcode_tree.updateGroup",args.GetString(),xx) != 1) { trace("error:"+xx.GetXml()); alert("±£´æ³ö´í!"); return 0; } else { string vv=xx.GetXmlDoc().documentElement.text; xml__ x=new xml__; x.setNativePointer(xml__::CreateInstance()); x.LoadXml(""); int root = treeview__::GetRootItem(tv_1.GetId()); if(vv=="OK") { treeview__::InsertChildItem(tv_1.GetId(), root, GroupName,x.GetXmlDoc().documentElement, 15); } } } return 1; } int modifyuomfolder() { int wid = tv_1.GetId(); int h = treeview__::GetSelectedItem(wid); if (h<1) { alert("ÇëÑ¡ÔñÐèÒªÐ޸ĵÄ×éÃû"); return 0; } int roothitem=treeview__::GetRootItem(wid); if(h==roothitem) { alert("²»ÄÜÐ޸ĸù½ÚµãÃû³Æ£¡"); } else { msxml::IXMLDOMElement e = treeview__::GetItemData(wid,h); trace(e.xml); //string OldGroupName= e.SelectSingleNode("@GroupName").text; string OldGroupName= treeview__::GetItemLabel(wid,h); xaserverarg__ arg = new xaserverarg__; arg.setNativePointer(arg.CreateInstance()); arg.AddArg("note","ÐÞ¸Ä"); arg.AddArg("m_id",m_id); arg.AddArg("GroupName",OldGroupName); win__::OpenWindow("dev:xpage[AddUomGroup.vx]",arg); string ok = arg.GetArgString("return"); if(ok == "ok"){ string NewGroupName = arg.GetArgString("GroupName"); xml__ xx=new xml__; xx.setNativePointer(xml__::CreateInstance()); xaserverarg__ args = new xaserverarg__; args.setNativePointer(args.CreateInstance()); args.AddArg("GroupName",NewGroupName); args.AddArg("OldGroupName",OldGroupName); args.AddArg("m_id",m_id); /*if(TFile::exec(m_config,"updateuomtype",args,xx)!=1) { trace("error:"+xx.GetXml()); alert("±£´æ³ö´í!"); return 0; }*/ if (url::get("QuickCode/pref/quickcode_tree.updateGroup",args.GetString(),xx)!=1) { trace("error:"+xx.GetXml()); alert("±£´æ³ö´í!"); return 0; } else { trace(xx.GetXml()); string vv=xx.GetXmlDoc().documentElement.text; if(vv=="OK") { treeview__::SetItemLabel(tv_1.GetId(), h,NewGroupName); } } } } return 1; } int deluomfolder() { int wid = tv_1.GetId(); int hitem=treeview__::GetSelectedItem(wid); if (hitem<1) { alert("ÇëÑ¡ÔñÐèҪɾ³ýµÄ×éÃû"); return 0; } else { int s=dw_list.GetRowCount(); if (s>0) { alert("¸Ã·Ö×éÏÂÃæ´æÔÚÊý¾Ý£¬²»ÄÜɾ³ý£¡"); return 0; } int roothitem=treeview__::GetRootItem(wid); if(hitem==roothitem) { alert("²»ÄÜɾ³ý¸ù½Úµã£¡"); } else { //ȱÉÙÅжÏɾ³ýµÄÌõ¼þ string GroupName =treeview__::GetItemLabel(wid,hitem); if(win__::MessageBox(GetHWND(),"È·¶¨É¾³ý×éÃû£º"+GroupName+" Âð£¿","Ìáʾ",1)==1) { xml__ xx=new xml__; xx.setNativePointer(xml__::CreateInstance()); xaserverarg__ arg = new xaserverarg__; arg.setNativePointer(arg.CreateInstance()); arg.AddArg("GroupName",GroupName); arg.AddArg("m_id",m_id); trace(GroupName); trace(m_id); /*if (xaserver__::ExecXAction(GetServerUrl(),"[delete.type.FND_UOM.xa]",arg.GetString()) == 1) { treeview__::DeleteItem(wid,hitem); //OnTreeSelChanged(); }*/ if (url::get("QuickCode/pref/quickcode_tree.deleteGroup",arg.GetString(),xx)== 1) { treeview__::DeleteItem(wid,hitem); } else alert("ɾ³ýʧ°Ü£¡"); } } } return 1; } xdwgrid__ getDW() { return dw_list; } int GridSearch() { xml__ x = new xml__; x.setNativePointer(xml__ ::CreateInstance()); xaserver__::LoadUrl("","dev:vface[¹«¹²ÉèÖÃ.vface]","",x); //trace(x.GetXml()); //trace(strtpl); string aa=strtpl; var doc = x.GetXmlDoc(); var n = doc.selectSingleNode("//resource[@url='"+aa+"']/@src"); //trace(n.text); xaserverarg__ arg=new xaserverarg__; arg.setNativePointer(arg.CreateInstance()); arg.AddArg("sheet",n.text); arg.AddArg("search",list::m_QueryTxt); openUrl("view.dlg.vface/xpage/grid/column/search", arg); string ok = arg.GetArgString("return"); if(ok == "ok"){ string txt = arg.GetArgString("search"); if(txt != ""){ m_QueryTxt = txt; //trace(txt); OnRetrieve(); } } return 0; } int OnCmdDispatch(string comdid) { int hCursor = xutil__::SetCursorWait(); xdwgrid__ dw=getDW(); if(comdid == "save"){ dw_list.AcceptText(); xml__ x=new xml__; x.setNativePointer(xml__::CreateInstance()); xaserverarg__ arg=new xaserverarg__; arg.setNativePointer(arg.CreateInstance()); dw_list.DwUpdateAllToEx(x.GetXmlDoc()); msxml::IXMLDOMElement e= x.GetXmlDoc().documentElement; e.SetAttribute("id", m_id); //arg.AddArg("id",m_id); //trace(m_id); //trace(m_dbmap); if(m_id=="¿ªÆ±ÒøÐÐ") { xml__ kp = new xml__; kp.setNativePointer(xml__::CreateInstance()); kp.LoadXml(""); msxml::IXMLDOMElement ele= kp.GetXmlDoc().documentElement; var list = e.SelectNodes("item[@update.modify='1' or @update.delete='1' ]"); int j; int k = list.length; for (j=0; jdw.GetRowCount()) return 0; dw.InsertRow(row); dw.SetItemString(row,"GroupName",c_type); } else if(comdid == "delet"){ dw_list.AcceptText(); int row2 = dw.GetRow(); if(row2<1 || row2>dw.GetRowCount()) return 0; dw.DeleteRow(row2); } else if (comdid=="adduomfolder") adduomfolder(); else if (comdid=="modifyuomfolder") modifyuomfolder(); else if (comdid=="deluomfolder") deluomfolder(); else if (comdid=="search") GridSearch(); xutil__::RestoreCursor(hCursor); return 0; } int OnXCommand(ref TXCommandEvent evt,int p) { return OnCmdDispatch(""+evt.pStrID); } int OnSetFocus(ref TNotifyEvent evt,int p){ SetAgent(); tv_1 = new treeview__; tv_1.setNativePointer(this.GetControl("tv_1")); int wid = tv_1.GetId(); int root = treeview__::GetRootItem(wid); treeview__::ExpandItem(wid,root); return 1; } int OnDoubleClicked(ref TNotifyEvent evt,int p) { ref DWNMHDR hdr = evt.pnmh; int row = hdr.row; if(row<1 || row > dw_list.GetRowCount() ) return 0; xaserverarg__ arg = new xaserverarg__; arg.setNativePointer(arg.CreateInstance()); //string str = hdr.data; string colname=hdr.colname; string str = dw_list.GetItemString(row, colname); arg.AddArg("value",str); openUrl("/sale/view/view.dlg/xpage/memo/edit", arg); string comdid = arg.GetArgString("comdid"); if(comdid=="xmOK") { string value = arg.GetArgString("value"); dw_list.SetItemString(row,colname,value); dw_list.Redraw(); } return 1; } int ItemOutput() { string d = xaserver__::GetCurrentDate(); d = d.left(10) +""; dw_list.SaveAs(d); return 1; } int OnSelectAllRow() { int rows = this.dw_list.GetRowCount(); if(rows < 1) return -1; this.dw_list.SelectRow(1, rows, true); this.dw_list.Redraw(); return 1; } int OnRowCopy() { int rows = this.dw_list.GetRowCount(); if(rows < 1) return -1; int cols = this.dw_list.GetColumnCount(); string str = ""; int row = this.dw_list.GetNextSelectRow(1); int i; while(row > 0) { string tmp1 = ""; for(i=1; i 0) { string tmp; if(this.dw_list.GetItemDisplayString(row, col)) tmp = this.dw_list.GetItemDisplayString(row,col); else tmp = this.dw_list.GetItemString(row, col); str += tmp + "\r\n"; row = this.dw_list.GetNextSelectRow(row + 1); } this.dw_list.SetDataToClip(str); return 1; } int OnRClick(ref TNotifyEvent evt,int p) { ref DWNMHDR hdr = evt.pnmh; int row = hdr.row; int m = win__::CreatePopupMenu(); int MF_STRING = 0x00000000; int MF_DISABLED = 0x00000002; int TPM_RIGHTBUTTON = 0x0002; int TPM_RETURNCMD = 0x0100; int MF_CHECKED = 0x8; int MF_SEPARATOR = 0x0800; win__::AppendMenu(m,MF_STRING, 1, "¸´ÖÆÐÐ"); win__::AppendMenu(m,MF_STRING, 101, "¸´ÖÆÁÐ"); win__::AppendMenu(m,MF_SEPARATOR, -1, ""); win__::AppendMenu(m,MF_STRING, 2, "ȫѡ"); win__::AppendMenu(m,MF_SEPARATOR, -1, ""); win__::AppendMenu(m,MF_STRING, 4, "µ¼³öµ½Excel"); win__::AppendMenu(m,MF_SEPARATOR, -1, ""); win__::AppendMenu(m,MF_STRING, 6, "ÏÔʾÁÐÉèÖÃ"); xrect xr; xpoint pt; win__::GetCursorPos(pt); int ret=win__::TrackPopupMenu(m, TPM_RIGHTBUTTON | TPM_RETURNCMD, pt.x, pt.y, 0, this.GetHWND(), xr); //trace(ret); int hCursor = xutil__::SetCursorWait(); if(ret == 1) {OnRowCopy();} else if(ret == 101) { string colname=hdr.colname; if(colname != "") OnColCopy(colname); } else if(ret == 2) {OnSelectAllRow();} else if(ret == 4) {ItemOutput();} else if(ret == 6) {} xutil__::RestoreCursor(hCursor); return 1; } int OnAttachEvent() { //»ñÈ¡½¹µãʼþ£¬ÓÃÓÚÖØÖù¤¾ßÌõ AttachEvent("WM_SETFOCUS",OnSetFocus); //°ó¶¨¹¤¾ßÌõµã»÷ʼþ AttachEvent("WM_XCOMMAND",OnXCommand); //»ñµÃÊ÷µÄÑ¡Ôñʼþ AttachEvent("tv_1", "TVN_SELCHANGED",OnTreeSelChanged); AttachEvent("dw_list","DWV_DOUBLECLICKED",OnDoubleClicked);//ÐÐË«»÷ AttachEvent("dw_list","DWV_RCLICKED",OnRClick);//Êó±êÓÒ¼ü } string jxParam(string p, string n) { if(p != "") { p +="&"; int i = 1; while (p.find("=",0)>0) { string name = p.mid(0, p.find("=",0)); string value = p.mid(p.find("=",0) + 1, p.find("&",0) - p.find("=",0) - 1); if(name==n) return ""+value; i += 1; p = p.mid(p.find("&",0) + 1, p.length()); } } return ""; } int getURLParam() { if(GetParam()) { xpage__ xp=new xpage__; xp.setNativePointer(this.GetXPage()); string aurl = xp.GetWkUrl(); xaserverarg__ arg; if(aurl && aurl.find("native=true",0)>0) { int p = this.GetParam(); arg = new xaserverarg__; arg.setNativePointer(p); } else { arg = GetParam(); } string config = arg.GetArgString("config"); xml__ x = new xml__; x.setNativePointer(xml__::CreateInstance()); if(config == "") { string configXml = arg.GetArgString("configxml"); x.LoadXml(configXml); } else { getUrl(config, "", x); } m_configDoc = x.GetXmlDoc(); } return 1; } int loaded() { getURLParam(); msxml::IXMLDOMDocument ee=m_configDoc; string id=m_id; var n = ee.selectSingleNode("//list/dwview[@type='dwgrid'][@id='"+id+"']"); if(n) { msxml::IXMLDOMElement e = n; //trace(e.xml); string vface = m_configDoc.selectSingleNode("//vface[1]").text; string dwname = "";//e.selectsingleNode("@name").text; string tpl = "";//e.selectsingleNode("@url").text; string dbmap = ""; string strtreexquery=""; if(e.selectSingleNode("@name")) dwname = e.selectSingleNode("@name").text; if(e.selectSingleNode("@url")) tpl = e.selectSingleNode("@url").text; if(e.selectSingleNode("@dbmap")) dbmap = e.selectSingleNode("@dbmap").text; if(e.selectSingleNode("@treexquery")) strtreexquery = e.selectSingleNode("@treexquery").text; m_dbmap = dbmap; treexquery = strtreexquery; //trace(vface +"/"+ tpl); //trace(selectmode); dw_list = new xdwgrid__; dw_list.setNativePointer(GetControl(dwname)); dw_list.openUrl(vface +"/"+ tpl); strtpl=tpl; trace(tpl); } } int onload() { m_config = "QuickCode.config"; m_agent = ""; dw_list = new xdwtable__; dw_list.setNativePointer(GetControl("dw_list")); if(this.GetParam()) { xaserverarg__ arg = this.GetParam(); //trace(arg.GetString()); string id = arg.GetArgString("id"); if(id == "") return 0; m_id = id; loaded(); /*string tpl = arg.GetArgString("tpl"); if(tpl == "") tpl = "QuickCode.tpl/QuickCode"; dw_list.SetDataObject(GetServerUrl(),"dev:sheet["+tpl+"]"); //dw_list.SetColHeaderHeight(0); //dw_list.SetRowSelectorWidth(0); string dbmap = arg.GetArgString("dbmap"); if(dbmap == "") dbmap = "QuickCode.dbmap"; m_dbmap = dbmap; string txquery=arg.GetArgString("treexquery"); treexquery=txquery; string title = arg.GetArgString("title"); if(title != "") win__::SetWindowText(this.GetHWND(),title);*/ OnRetrieve(); } SetAgent(); string aa=treexquery; string xfNodeAgentArea2 = "treeagent"; xnode__ tnode = new xnode__; tnode.setNativePointer(GetAgentNode(xfNodeAgentArea2)); string stree=""; stree +=""; stree +=""; SetAgentNodeContent (tnode,stree); tv_1 = new treeview__; tv_1.setNativePointer(this.GetControl("tv_1")); int wid = tv_1.GetId(); int root = treeview__::GetRootItem(wid); treeview__::ExpandItem(wid,root); OnAttachEvent(); return 1; } ] ] ]