use "xcontrol.vframe.vbusiness.vd" use "xbase.vframe.vbusiness.vd" use "publiccode.vutil.vbusiness.vd" unit business [ class CommentaryEx : public xframe { string m_EntityID; string m_EntityType; string m_EntityConnect; string m_ConnectID; xcontrol m_Edit; htmlctrl m_Html; xcombobox m_cb; int Init() { if (m_EntityID == "") return -1; xml x = new xml; x.setNativePointer(x.CreateInstance()); xaserverarg arg = new xaserverarg; arg.setNativePointer(arg.CreateInstance()); arg.AddArg("EntityID", m_EntityID); arg.AddArg("EntityType", m_EntityType); arg.AddArg("EntityConnect", m_EntityConnect); if (url::get("/sale/data/Commentary/entity/notelist", arg.GetString(), x) == 1) { m_Html.SetContent(x.GetXml()); m_Html.Redraw(); } return 1; } int AppendItem(xml x, msxml::IXMLDOMElement r, string name, string value) { msxml::IXMLDOMElement e = x.GetXmlDoc().createElement(name); e.text = value; r.appendChild(e); return 1; } int showAtt() { xnode anode = GetAgentNode("att"); int s = xcombobox::GetCount(m_cb.GetId()); xml x = new xml; x.setNativePointer(xml::CreateInstance()); x.LoadXml(""); msxml::IXMLDOMElement ele = x.GetXmlDoc().documentElement; int i = 0; for (i = 0; i < s; i++) { string tmp = xcombobox::GetLBText(m_cb.GetId(), i); msxml::IXMLDOMElement e = x.GetXmlDoc().createElement("hbox"); e.setAttribute("height", "20"); msxml::IXMLDOMElement l = x.GetXmlDoc().createElement("xlabel"); l.setAttribute("caption", "" + tmp); msxml::IXMLDOMElement b = x.GetXmlDoc().createElement("xtoolbutton"); b.setAttribute("width", "18"); b.setAttribute("name", "att_" + i.toString()); b.setAttribute("image", "1,5"); e.appendChild(l); e.appendChild(b); ele.appendChild(e); msxml::IXMLDOMElement g = x.GetXmlDoc().createElement("xlabel"); g.setAttribute("height", "2"); g.setAttribute("style", "background-color:#000000"); ele.appendChild(g); } SetAgentNodeContent(anode, ele.xml); anode.SetWidthHeight(-1, i * 20 + 1); return 1; } int addAtt() { string guid = publiccode::GetGuid(); string str = guid.left(2); string ret = xaserver::UploadFile("attachment" + str, guid + ".jpg", this.GetHWND(), "", false); int nIndex = xcombobox::AddItem(m_cb.GetId(), ret, guid + ".jpg"); showAtt(); return 1; } int delAtt(string no) { int nIndex = no.toInt(); xcombobox::DeleteItem(m_cb.GetId(), nIndex); showAtt(); return 1; } msxml::IXMLDOMElement getAtt() { int s = xcombobox::GetCount(m_cb.GetId()); xml x = new xml; x.setNativePointer(xml::CreateInstance()); x.LoadXml(""); msxml::IXMLDOMElement ele = x.GetXmlDoc().documentElement; int i = 0; for (i = 0; i < s; i++) { string tmp = xcombobox::GetLBText(m_cb.GetId(), i); string tmp2 = xcombobox::GetItemData(m_cb.GetId(), i); msxml::IXMLDOMElement e = x.GetXmlDoc().createElement("item"); e.setAttribute("name", "" + tmp); e.setAttribute("file", "" + tmp2); ele.appendChild(e); } return ele; } //ÃüÁî·¢²¼º¯Êý int OnCmdDispatch(string comdid) { if (comdid == "xmOK") { if (m_EntityID == "") return 1; xml x = new xml; x.setNativePointer(xml::CreateInstance()); xaserverarg arg = new xaserverarg; arg.setNativePointer(arg.CreateInstance()); string value = m_Edit.GetText(); if (value == "") { alert("ÇëÌîдÅú×¢£¡"); return 1; } x.LoadXml(""); msxml::IXMLDOMElement ele = x.GetXmlDoc().documentElement; AppendItem(x, ele, "CommentaryID", publiccode::GetGuid()); AppendItem(x, ele, "EntityID", m_EntityID); AppendItem(x, ele, "EntityType", m_EntityType); AppendItem(x, ele, "Remark", value); AppendItem(x, ele, "ParentConnect", m_EntityConnect); AppendItem(x, ele, "ParentCommentaryID", m_ConnectID); AppendItem(x, ele, "CreatorID", xaserver::GetUserId()); ele.appendChild(getAtt()); arg.AddArg("content", "" + ele.xml + ""); if (getUrl("/workflow/action/Commentary/bill.update", arg.GetString(), x) == 1) { m_Edit.SetText(""); xcombobox::ResetContent(m_cb.GetId()); Init(); showAtt(); return 1; } else { alert("Ìí¼Óʧ°Ü!"); return -1; } } else if (comdid == "xmAtt") { addAtt(); } else if (comdid.left(4) == "att_") { delAtt(comdid.right(comdid.length() - 4)); } else { CloseWindow(); } return 1; } //ÃüÁî´¦Àíʼþ int OnXCommand(ref TXCommandEvent evt, int param) { return OnCmdDispatch(evt.pStrID); } int OnHtmlClick(ref TNotifyEvent evt, int pr) { ref HTMLNMHDR p = evt.pnmh; 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"); string str = file.left(2); string ext = ""; if (name.find(".") >= 0) ext = name.mid(name.find("."), name.length()); string sfile = file.left(file.length() - 4); //trace("--"+ext +" " + "/business/attachment/"+str+"/"+ file); //int openRet = xaserver::DownLoadFile(GetServerUrl(),"/business/attachment/"+str+"/"+ file,name,"C:/Temp/"+name); int openRet = xaserver::DownLoadFile(GetServerUrl(), "/business/attachment/" + str + "/" + file, "", "C:/Temp/" + sfile + ext); 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 OnAttachEvent() { //°ó¶¨¹¤¾ßÌõµã»÷ʼþ AttachEvent("WM_XCOMMAND", OnXCommand); AttachEvent("note", "HTC_OBJECTCLICKED", OnHtmlClick); } int onload() { OnAttachEvent(); m_Edit = GetControl("Txt"); m_Html = GetControl("note"); m_cb = GetControl("attlist"); m_EntityID = ""; m_EntityType = ""; m_EntityConnect = ""; m_ConnectID = ""; if (this.GetParam()) { //xaserverarg arg = new xaserverarg; //arg.setNativePointer(GetParam()); xaserverarg arg = GetParam(); m_EntityID = arg.GetArgString("EntityID"); m_EntityType = arg.GetArgString("m_EntityType"); m_EntityConnect = arg.GetArgString("m_EntityConnect"); } Init(); return 1; } }; ]