use "xcontrol.vframe.vbusiness.vd" use "xbase.vframe.vbusiness.vd" use "base.view.vd" unit trade [ class DocSelectDlg: public xframe { //xdwgrid dw_list; xlistview lv_view; xnode m_agentNode; //Agent Condition int columnCount ; int SetAgent() { string xfNodeAgentArea = "agentarea"; xnode anode = GetAgentNode(xfNodeAgentArea); if(m_agentNode) { SetAgentNodeContent (anode,m_agentNode); } else { msxml::IXMLDOMElement xframeElement = GetElement(); msxml::IXMLDOMElement agent = xframeElement.selectSingleNode("agent/"+xfNodeAgentArea+"[1]/*"); if(agent) { string s = agent.xml; m_agentNode = SetAgentNodeContent (anode,s); } } return 1; } //½¹µã¼¤»î´¦Àíº¯Êý int OnSetFocus(ref TEvent evt,int param) { //ÖØÖù¤¾ßÌõ //SetAgent(); return 1; } int OnListViewDoubleClicked(ref TEvent evt,int param) { //ÖØÖù¤¾ßÌõ //SetAgent(); OnDocumentOpen(); CloseWindow(); return 1; } int OnDocumentOpen() { //return 1; int LVNI_ALL = 0x0000; int LVNI_FOCUSED = 0x0001; int LVNI_SELECTED = 0x0002; int LVNI_CUT = 0x0004; int LVNI_DROPHILITED = 0x0008; int nItem =xlistview::GetNextItem(lv_view.GetId(), -1, LVNI_FOCUSED); if(nItem < 0) return 1; int LVIF_PARAM = 0x0004; lvitem lvItem; lvItem.iItem = nItem; lvItem.iSubItem = 0; lvItem.mask = LVIF_PARAM ; xlistview::GetItem(lv_view.GetId(), lvItem); msxml::IXMLDOMElement ele = trust(lvItem.lParam as msxml::IXMLDOMElement); string src = ele.getAttribute("url"); string name=ele.getAttribute("caption"); string file =""; if(src.find("/file/")>0) file = src.mid(src.find("/file/") + 6,9999); if(file =="") return 1; string str = file.left(2); string ext = ""; if(name.find(".")>=0) ext = name.mid(name.find("."),name.length()); string sfile = file; xaserverarg arg = GetParam(); if(arg) { arg.AddArg("result","ok"); if((arg.GetArgString("process")=="path" ||arg.GetArgString("process")=="data")) { string id = ele.getAttribute("ID"); arg.AddArg("ID", id); arg.AddArg("path", src); arg.AddArg("filename", name); arg.AddArg("src","/business/attachment/"+str+"/"+ file+".jpg"); if(arg.GetArgString("process")=="path" ) return 1; } } /* const string d = m_Html.GetData(p.object); if(d == "") return -1; string file = d.mid(0, d.find("|##@@|",0)); string name = d.mid(d.find("|##@@|",0)+6, d.length()); */ xaserver::CreateDirectory("C:/Temp"); if(arg) { if(arg.GetArgString("process")=="data") { xml x = new xml; x.setNativePointer(xml ::CreateInstance()); xaserver::LoadUrl(GetServerUrl(),"/business/attachment/"+str+"/"+ file+".jpg","",x); arg.AddArg("data",x.GetXml()); return 1; } } int openRet = xaserver::DownLoadFile(GetServerUrl(),"/business/attachment/"+str+"/"+ file+".jpg","","C:/Temp/"+sfile+ext); //alert("/business/attachment/"+str+"/"+ file+".jpg"); if(openRet < 0) { alert("Îļþ´ò¿ªÊ§°Ü1£¡"); return -1; } //openRet = win32::ShellExecute(0,"open","C:/Temp/"+name,"","",5); openRet = win32::ShellExecute(0,"open","C:/Temp/"+sfile+ext,"","",5); if(openRet < 32) { alert("Îļþ´ò¿ªÊ§°Ü2£¡"); return -1; } return 1; } //ÃüÁî·¢²¼º¯Êý int OnCmdDispatch(string comdid) { return 0; } //ÃüÁî´¦Àíʼþ int OnXCommand(ref TXCommandEvent evt,int param) { return OnCmdDispatch(evt.pStrID); } int OnAttachEvent() { //°ó¶¨¹¤¾ßÌõµã»÷ʼþ AttachEvent("WM_XCOMMAND",OnXCommand); //»ñÈ¡½¹µãʼþ£¬ÓÃÓÚÖØÖù¤¾ßÌõ AttachEvent("WM_SETFOCUS",OnSetFocus); } /* int OnRetrieve() { xml x = new xml; x.setNativePointer(xml::CreateInstance()); xaserverarg arg = new xaserverarg; arg.setNativePointer(arg.CreateInstance()); arg.AddArg("xxx","xxx"); if (getUrl("",arg.GetString(),x)!=1) { trace(x.GetXmlDoc().text); return -1; }else { //dw_list.Retrieve(x); //dw_list.Redraw(); } return 1; } */ int SetListViewHeaderColumn(string Url) { const int LVCFMT_LEFT = 0; for(int i=0;i<3;i++) lv_view.DeleteColumn(lv_view.GetId(),1); //if(Url=="") //{ lv_view.InsertColumn(lv_view.GetId(),0,"´´½¨ÈËÔ±",LVCFMT_LEFT,80,0); lv_view.InsertColumn(lv_view.GetId(),0,"´´½¨ÈÕÆÚ",LVCFMT_LEFT,80,0); lv_view.InsertColumn(lv_view.GetId(),0,"Ãû³Æ",0,120,0); columnCount = 3; //} return 1; } int Retrieve(string src) { xml x = ViewObject::RetrieveData("/sale/data/TDocument3/folder/list", "src",src); if(x) { msxml::IXMLDOMElement ele = x.GetXmlDoc().documentElement; msxml::IXMLDOMNodeList nlist=ele.SelectNodes("*"); int s=nlist.length; if (s>0) { for (int i=0; i