|  |  | 
 |  |  | use "xcontrol.vframe.vbusiness.vd" | 
 |  |  | use "xbase.vframe.vbusiness.vd" | 
 |  |  | use "base.view.vd" | 
 |  |  | #include <wobject/xstring.hpp> | 
 |  |  | #include <xcontrol/xtreeview.hpp> | 
 |  |  | #include <xcontrol/xdwgrid.hpp> | 
 |  |  | #include <wobject/xdouble.hpp> | 
 |  |  | #include <xcontrol/xlayersheet.hpp> | 
 |  |  | #include <xcontrol/xdatetimepick.hpp> | 
 |  |  |  | 
 |  |  | unit trade | 
 |  |  | [ | 
 |  |  |    class EnquiryExQuoteWin : public frame | 
 |  |  | #include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" | 
 |  |  | #include "viewobject/view.base.hpp" | 
 |  |  |  | 
 |  |  | using xml = KXMLDOMDocument; | 
 |  |  |    class __declspec(dllexport) EnquiryExQuoteWin : public xframe | 
 |  |  |    { | 
 |  |  |    public: | 
 |  |  |       xdwgrid   dw_list; | 
 |  |  |       xnode   m_agentNode;   //Agent Condition | 
 |  |  |  | 
 |  |  |  | 
 |  |  |    public: | 
 |  |  |       EnquiryExQuoteWin(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} | 
 |  |  |    public: | 
 |  |  |       static EnquiryExQuoteWin* CreateInstance(void* implPtr, void* hWnd) | 
 |  |  |       { | 
 |  |  |          EnquiryExQuoteWin* pWin = new EnquiryExQuoteWin(implPtr, (HWND)hWnd); | 
 |  |  |          return pWin; | 
 |  |  |       } | 
 |  |  |       int SetAgent() | 
 |  |  |       { | 
 |  |  |          string xfNodeAgentArea = "agentarea"; | 
 |  |  |          xstring xfNodeAgentArea = L"agentarea"; | 
 |  |  |          xnode anode = GetAgentNode(xfNodeAgentArea); | 
 |  |  |          if (m_agentNode) | 
 |  |  |          { | 
 |  |  |             SetAgentNodeContent(anode, m_agentNode); | 
 |  |  |             SetAgentNode(anode, m_agentNode); | 
 |  |  |          } | 
 |  |  |          else | 
 |  |  |          { | 
 |  |  |             msxml::IXMLDOMElement xframeElement = GetElement(); | 
 |  |  |             msxml::IXMLDOMElement agent = xframeElement.selectSingleNode("agent/" + xfNodeAgentArea + "[1]/*"); | 
 |  |  |             KXMLDOMElement xframeElement = GetElement(); | 
 |  |  |             KXMLDOMElement agent = xframeElement.selectSingleNode(L"agent/" + xfNodeAgentArea + L"[1]/*"); | 
 |  |  |             if (agent) | 
 |  |  |             { | 
 |  |  |                string s = agent.xml; | 
 |  |  |                m_agentNode = SetAgentNodeContent(anode, s); | 
 |  |  |                xstring s = agent.xml(); | 
 |  |  |                m_agentNode = SetAgentNode(anode, s); | 
 |  |  |             } | 
 |  |  |          } | 
 |  |  |          return 1; | 
 |  |  | 
 |  |  |       int  OnSearch() | 
 |  |  |       { | 
 |  |  |  | 
 |  |  |          xml x = new xml; | 
 |  |  |          string EnquiryNo; | 
 |  |  |          x.setNativePointer(xml::CreateInstance()); | 
 |  |  |          xaserverarg arg = GetParam(); | 
 |  |  |          xcontrol QuoteNo = GetControl("QuoteNo"); | 
 |  |  |          xml x ; | 
 |  |  |          xstring EnquiryNo; | 
 |  |  | 			 | 
 |  |  |          xaserverarg arg; | 
 |  |  |          xcontrol QuoteNo = GetControl(L"QuoteNo"); | 
 |  |  |          EnquiryNo = QuoteNo.GetText(); | 
 |  |  |  | 
 |  |  |          //alert(EnquiryNo); | 
 |  |  |  | 
 |  |  |          //string PartyID = arg.GetArgString("PartyID"); | 
 |  |  |          //x = ViewObject::RetrieveData("/sale/data/Customerv3/entity/XmShare"); | 
 |  |  |          //xstring PartyID = arg.GetArgString(L"PartyID"); | 
 |  |  |          //x = ViewObject::RetrieveData(L"/sale/data/Customerv3/entity/XmShare"); | 
 |  |  |  | 
 |  |  |          x = ViewObject::RetrieveData("/sale/data/Quote3/maint", "id", EnquiryNo); | 
 |  |  |          x = ViewObject::RetrieveData(L"/sale/data/Quote3/maint", L"id", EnquiryNo); | 
 |  |  |          if (x)dw_list.Retrieve(x); | 
 |  |  |          dw_list.SetReadOnly(true); | 
 |  |  |          dw_list.Redraw(); | 
 |  |  | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       //焦点激活处理函数 | 
 |  |  |       int OnSetFocus(ref TEvent evt, int param) | 
 |  |  |       int OnSetFocus(TEvent* evt, LPARAM param) | 
 |  |  |       { | 
 |  |  |          //重置工具条 | 
 |  |  |          SetAgent(); | 
 |  |  | 
 |  |  |  | 
 |  |  |       int OnSaveAs() | 
 |  |  |       { | 
 |  |  |          int i = dw_list.SaveAs(""); | 
 |  |  |          int i = dw_list.SaveAs(L""); | 
 |  |  |          if (i == 1) | 
 |  |  |             alert("导出成功"); | 
 |  |  |             alert(L"导出成功"); | 
 |  |  |          return 1; | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       int OnMatch() | 
 |  |  |       { | 
 |  |  |          xaserverarg arg = new xaserverarg; | 
 |  |  |          arg.setNativePointer(arg.CreateInstance()); | 
 |  |  |          xaserverarg arg; | 
 |  |  | 			 | 
 |  |  |          int row = dw_list.GetNextSelectRow(1); | 
 |  |  |          string items = ""; | 
 |  |  |          xstring items = L""; | 
 |  |  |          while (row > 0 && row <= dw_list.GetRowCount()) | 
 |  |  |          { | 
 |  |  |             msxml::IXMLDOMElement e = dw_list.GetRowElement(row); | 
 |  |  |             string id = e.selectSingleNode("@guid").text; | 
 |  |  |             KXMLDOMElement e = dw_list.GetRowElement(row); | 
 |  |  |             xstring id = e.selectSingleNode(L"@guid").text(); | 
 |  |  |  | 
 |  |  |             if (items == "") | 
 |  |  |             if (items == L"") | 
 |  |  |                items = id; | 
 |  |  |             else | 
 |  |  |                items += "," + id; | 
 |  |  |                items += L"," + id; | 
 |  |  |             row = dw_list.GetNextSelectRow(row + 1); | 
 |  |  |          } | 
 |  |  |          xml x = ViewObject::RetrieveData("/sale/data/Enquiry/Update/UpdateQuoteLine", "ItemList", items); | 
 |  |  |          xml x = ViewObject::RetrieveData(L"/sale/data/Enquiry/Update/UpdateQuoteLine", L"ItemList", items); | 
 |  |  |          OnSearch(); | 
 |  |  |          return 1; | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       int OnPriceListSupplierEx() | 
 |  |  |       { | 
 |  |  |          xaserverarg arg = new xaserverarg; | 
 |  |  |          arg.setNativePointer(arg.CreateInstance()); | 
 |  |  |          arg.AddArg("sheetname", "tab_list2"); | 
 |  |  |          arg.AddArg("EntityName", "Enquiry3"); | 
 |  |  |          arg.AddArg("EntityID", ""); | 
 |  |  |          arg.AddArg("EntityNo", ""); | 
 |  |  |          arg.AddArg("Source", "quote"); | 
 |  |  |          arg.AddArg("QuoteNo", GetControl("QuoteNo").GetText()); | 
 |  |  |          xaserverarg arg; | 
 |  |  | 			 | 
 |  |  |          arg.AddArg(L"sheetname", L"tab_list2"); | 
 |  |  |          arg.AddArg(L"EntityName", L"Enquiry3"); | 
 |  |  |          arg.AddArg(L"EntityID", L""); | 
 |  |  |          arg.AddArg(L"EntityNo", L""); | 
 |  |  |          arg.AddArg(L"Source", L"quote"); | 
 |  |  |          arg.AddArg(L"QuoteNo", xcontrol(GetControl(L"QuoteNo")).GetText()); | 
 |  |  |  | 
 |  |  |          int row = dw_list.GetNextSelectRow(1); | 
 |  |  |          string items = ""; | 
 |  |  |          xstring items = L""; | 
 |  |  |          //while(row > 0 && row <= dw_list.GetRowCount()) | 
 |  |  |          for (row = 1; row <= dw_list.GetRowCount(); row++) | 
 |  |  |          { | 
 |  |  |             msxml::IXMLDOMElement e = dw_list.GetRowElement(row); | 
 |  |  |             string id = e.selectSingleNode("@guid").text; | 
 |  |  |             KXMLDOMElement e = dw_list.GetRowElement(row); | 
 |  |  |             xstring id = e.selectSingleNode(L"@guid").text(); | 
 |  |  |  | 
 |  |  |             if (items == "") | 
 |  |  |             if (items == L"") | 
 |  |  |                items = id; | 
 |  |  |             else | 
 |  |  |                items += "," + id; | 
 |  |  |                items += L"," + id; | 
 |  |  |             //row =  dw_list.GetNextSelectRow(row + 1); | 
 |  |  |          } | 
 |  |  |          arg.AddArg("EntityIDList", items); | 
 |  |  |          int p = arg.ptr_native_; | 
 |  |  |          OpenWindow("dev:xpage[Enquiry.maint.vx]", p); | 
 |  |  |          arg.AddArg(L"EntityIDList", items); | 
 |  |  | 		 | 
 |  |  |          OpenWindow(L"dev:xpage[Enquiry.maint.vx]", arg); | 
 |  |  |          return 1; | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       //命令发布函数 | 
 |  |  |       int OnCmdDispatch(string comdid) | 
 |  |  |       int OnCmdDispatch(xstring comdid) | 
 |  |  |       { | 
 |  |  |          if (comdid == "xmClose") | 
 |  |  |          if (comdid == L"xmClose") | 
 |  |  |          { | 
 |  |  |             CloseWindow(); | 
 |  |  |             return 1; | 
 |  |  |          } | 
 |  |  |          if (comdid == "xmSearch") | 
 |  |  |          if (comdid == L"xmSearch") | 
 |  |  |          { | 
 |  |  |             OnSearch(); | 
 |  |  |             return 1; | 
 |  |  |          } | 
 |  |  |          if (comdid == "xmMatch") | 
 |  |  |          if (comdid == L"xmMatch") | 
 |  |  |          { | 
 |  |  |             OnMatch(); | 
 |  |  |             return 1; | 
 |  |  |          } | 
 |  |  |          if (comdid == "xmMaint") | 
 |  |  |          if (comdid == L"xmMaint") | 
 |  |  |          { | 
 |  |  |             //win32::HideWindow(1); | 
 |  |  |             OnPriceListSupplierEx(); | 
 |  |  |             CloseWindow(); | 
 |  |  |             return 1; | 
 |  |  |          } | 
 |  |  |          if (comdid == "xmSave") | 
 |  |  |          if (comdid == L"xmSave") | 
 |  |  |          { | 
 |  |  |             return 1; | 
 |  |  |          } | 
 |  |  |          if (comdid == "xmSaveAs") | 
 |  |  |          if (comdid == L"xmSaveAs") | 
 |  |  |          { | 
 |  |  |             return OnSaveAs(); | 
 |  |  |          } | 
 |  |  | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       //命令处理事件 | 
 |  |  |       int OnXCommand(ref TXCommandEvent evt, int param) | 
 |  |  |       int OnXCommand(TEvent* evt, LPARAM param) | 
 |  |  |       { | 
 |  |  |          return OnCmdDispatch(evt.pStrID); | 
 |  |  |          return OnCmdDispatch(evt->xcommand.pStrID); | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       int OnAttachEvent() | 
 |  |  |       { | 
 |  |  |          //绑定工具条点击事件 | 
 |  |  |          AttachEvent("WM_XCOMMAND", OnXCommand); | 
 |  |  |          AttachEvent(L"WM_XCOMMAND", (FEvent)&EnquiryExQuoteWin::OnXCommand); | 
 |  |  |          //获取焦点事件,用于重置工具条 | 
 |  |  |          AttachEvent("WM_SETFOCUS", OnSetFocus); | 
 |  |  |          AttachEvent(L"WM_SETFOCUS", (FEvent)&EnquiryExQuoteWin::OnSetFocus); | 
 |  |  |          return 1; | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       /*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) | 
 |  |  |          xml x ; | 
 |  |  | 			 | 
 |  |  |          xaserverarg arg; | 
 |  |  | 			 | 
 |  |  |          arg.AddArg(L"xxx",L"xxx"); | 
 |  |  |          if (getUrl(L"",arg.GetString(),x)!=1) | 
 |  |  |          { | 
 |  |  |             trace(x.GetXmlDoc().text); | 
 |  |  |             trace(x.text()); | 
 |  |  |             return -1; | 
 |  |  |          }else | 
 |  |  |          { | 
 |  |  | 
 |  |  |  | 
 |  |  |       int onload() | 
 |  |  |       { | 
 |  |  |          dw_list = GetControl("dw_list"); | 
 |  |  |          dw_list.openUrl("/sale/view/Quote3/template/item/pricelist"); | 
 |  |  |          dw_list.SetColumnState("ItemID", false); | 
 |  |  |          dw_list.SetColumnState("Picture", false); | 
 |  |  |          dw_list.SetColumnState("category", false); | 
 |  |  |          dw_list.SetColumnState("RealEnquiryLineID", false); | 
 |  |  |          dw_list.SetColumnState("RelEnquiryLineID", false); | 
 |  |  |          SetArg(); | 
 |  |  |          dw_list = GetControl(L"dw_list"); | 
 |  |  |          dw_list.openUrl(L"/sale/view/Quote3/template/item/pricelist"); | 
 |  |  |          dw_list.SetColumnState(L"ItemID", false); | 
 |  |  |          dw_list.SetColumnState(L"Picture", false); | 
 |  |  |          dw_list.SetColumnState(L"category", false); | 
 |  |  |          dw_list.SetColumnState(L"RealEnquiryLineID", false); | 
 |  |  |          dw_list.SetColumnState(L"RelEnquiryLineID", false); | 
 |  |  |  | 
 |  |  |          dw_list.SetSelectionMode(3); | 
 |  |  |  | 
 |  |  |          if (GetParam()) | 
 |  |  |          if (GetWinParam()) | 
 |  |  |          { | 
 |  |  |             string no = GetParam(); | 
 |  |  |             xstring no = GetWinParam(); | 
 |  |  |  | 
 |  |  |             GetControl("QuoteNo").SetText(no); | 
 |  |  |             xcontrol(GetControl(L"QuoteNo")).SetText(no); | 
 |  |  |             OnSearch(); | 
 |  |  |          } | 
 |  |  |  | 
 |  |  | 
 |  |  |          return 1; | 
 |  |  |       } | 
 |  |  |    }; | 
 |  |  | ] |