|  |  | 
 |  |  | #include <xcontrol/xcell.hpp> | 
 |  |  | #include <xcontrol/xflowchart.hpp> | 
 |  |  | #include <xcontrol/ximageview.hpp> | 
 |  |  | #include <xcontrol/xcombobox.hpp> | 
 |  |  |  | 
 |  |  | #include <vbusiness/vutil/publiccode.vutil.vbusiness.hpp> | 
 |  |  | #include "viewobject/view.base.hpp" | 
 |  |  |  | 
 |  |  |  | 
 |  |  | using xml = KXMLDOMDocument; | 
 |  |  | class __declspec(dllexport) ViewTotalWin : public xwin | 
 |  |  | { | 
 |  |  | public: | 
 |  |  |    ViewTotalWin(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd) {} | 
 |  |  | public: | 
 |  |  |    static ViewTotalWin* CreateInstance(void* implPtr, void* hWnd) | 
 |  |  |    { | 
 |  |  |       return new ViewTotalWin(implPtr, (HWND)hWnd); | 
 |  |  |    } | 
 |  |  |  | 
 |  |  | public: | 
 |  |  |    xdwgrid   dw_list; | 
 |  |  |    xoffice    dw_office; | 
 |  |  |    xcell      dw_cell; | 
 |  |  |    xnode   m_agentNode;   //Agent Condition | 
 |  |  |    KXMLDOMElement rptEle; | 
 |  |  |    string m_category; | 
 |  |  |    string argStr; | 
 |  |  |    string searchStr; | 
 |  |  |    string fieldRoleStr; | 
 |  |  |    int      hWndImageView; | 
 |  |  |    int      hWndRetrieveTip; | 
 |  |  |    xstring m_category; | 
 |  |  |    xstring argStr; | 
 |  |  |    xstring searchStr; | 
 |  |  |    xstring fieldRoleStr; | 
 |  |  |    HWND      hWndImageView; | 
 |  |  |    HWND      hWndRetrieveTip; | 
 |  |  |    bool    dataretrieveing; | 
 |  |  |  | 
 |  |  |    int SetAgent() | 
 |  |  |    { | 
 |  |  |       string xfNodeAgentArea = L"agentarea"; | 
 |  |  |       xstring xfNodeAgentArea = L"agentarea"; | 
 |  |  |       xnode anode = GetAgentNode(xfNodeAgentArea); | 
 |  |  |       if (m_agentNode) | 
 |  |  |       { | 
 |  |  | 
 |  |  |          KXMLDOMElement agent = xframeElement.selectSingleNode(L"agent/" + xfNodeAgentArea + L"[1]/*"); | 
 |  |  |          if (agent) | 
 |  |  |          { | 
 |  |  |             string s = agent.xml(); | 
 |  |  |             xstring s = agent.xml(); | 
 |  |  |             m_agentNode = SetAgentNode(anode, s); | 
 |  |  |          } | 
 |  |  |       } | 
 |  |  | 
 |  |  |  | 
 |  |  |    int OnSearch() | 
 |  |  |    { | 
 |  |  |       xaserverarg arg = new xaserverarg; | 
 |  |  |       arg.setNativePointer(arg.CreateInstance()); | 
 |  |  |       xaserverarg arg ; | 
 |  |  | 		 | 
 |  |  |       arg.AddArg(L"text", searchStr); | 
 |  |  |       //trace(searchStr); | 
 |  |  |       OpenWindow(L"dev:xpage[search.dialog.vx]", cast(arg as int)); | 
 |  |  |       string str = arg.GetArgString(L"text"); | 
 |  |  |       OpenWindow(L"dev:xpage[search.dialog.vx]", arg); | 
 |  |  |       xstring str = arg.GetArgString(L"text"); | 
 |  |  |       if (str != searchStr) | 
 |  |  |       { | 
 |  |  |          searchStr = str; | 
 |  |  | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    //焦点激活处理函数 | 
 |  |  |    int OnSetFocus(ref TEvent evt, int param) | 
 |  |  |    int OnSetFocus(TEvent * evt, int param) | 
 |  |  |    { | 
 |  |  |       //重置工具条 | 
 |  |  |       SetAgent(); | 
 |  |  | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    //命令发布函数 | 
 |  |  |    int OnCmdDispatch(string comdid) | 
 |  |  |    int OnCmdDispatch(xstring comdid) | 
 |  |  |    { | 
 |  |  |       string UserNo = publiccode::GetUser().no; | 
 |  |  |       xstring UserNo = publiccode::GetUser().no; | 
 |  |  |  | 
 |  |  |       int hCursor = 0; | 
 |  |  |       if (comdid == L"xmSearch") return OnSearch(); | 
 |  |  |  | 
 |  |  |       if (comdid == L"xmOwner") return OnOwnerData(); | 
 |  |  |       //if(UserNo !=L"00603") | 
 |  |  |       //{ | 
 |  |  |       if (comdid == L"xmAnalysis") | 
 |  |  |       { | 
 |  |  |          hCursor = xutil::SetCursorWait(); | 
 |  |  |          string str = dw_list.DataAnalysis(L""); | 
 |  |  |          xaserverarg arg = new xaserverarg; | 
 |  |  |          arg.setNativePointer(arg.CreateInstance()); | 
 |  |  |          HCURSOR hCursor = xutil::SetCursorWait(); | 
 |  |  |          xstring str = dw_list.DataAnalysis(L""); | 
 |  |  |          xaserverarg arg ; | 
 |  |  | 			 | 
 |  |  |          arg.AddArg(L"html", str); | 
 |  |  |          int obj = cast(dw_list as int); | 
 |  |  |          arg.AddArg(L"obj", obj.toString()); | 
 |  |  |          OpenWindow(L"dev:xpage[data.vanalysis.vx]", cast(arg as int)); | 
 |  |  |          arg.SetParam(L"obj",(LPARAM)&dw_list); | 
 |  |  |          OpenWindow(L"dev:xpage[data.vanalysis.vx]", arg); | 
 |  |  |          xutil::RestoreCursor(hCursor); | 
 |  |  |          return 1; | 
 |  |  |       } | 
 |  |  | 
 |  |  |       } | 
 |  |  |       if (comdid == L"xmRemarks") | 
 |  |  |       { | 
 |  |  |          string name = rptEle.getAttribute(L"name"); | 
 |  |  |          xstring name = rptEle.getAttribute(L"name"); | 
 |  |  |          xml x = ViewObject::RetrieveData(L"/sale/data/TradeFinance3/GetSetUpRemarks", L"Type", name); | 
 |  |  |          KXMLDOMNodeList items = x.GetXmlDoc().selectNodes(L"data/Item"); | 
 |  |  |          KXMLDOMNodeList items = x.selectNodes(L"data/Item"); | 
 |  |  |          KXMLDOMNode t = items.item(0); | 
 |  |  |          string Content = L""; | 
 |  |  |          xstring Content = L""; | 
 |  |  |          if (t.selectSingleNode(L"Content")) | 
 |  |  |          { | 
 |  |  |             Content = t.selectSingleNode(L"Content").text; | 
 |  |  |             Content = t.selectSingleNode(L"Content").text(); | 
 |  |  |          } | 
 |  |  |  | 
 |  |  |          xaserverarg arg1 = new xaserverarg; | 
 |  |  |          arg1.setNativePointer(arg1.CreateInstance()); | 
 |  |  |          xaserverarg arg1 =GetArg(); | 
 |  |  |          arg1.AddArg(L"value", Content); | 
 |  |  |          OpenWindow(L"dev:xpage[memo.edit.new.vx]", arg1.getNativePointer()); | 
 |  |  |          OpenWindow(L"dev:xpage[memo.edit.new.vx]", arg1); | 
 |  |  |          return 1; | 
 |  |  |  | 
 |  |  |       } | 
 |  |  | 
 |  |  |       { | 
 |  |  |          if (rptEle) | 
 |  |  |          { | 
 |  |  |             string argUrl = rptEle.getAttribute(L"arg"); | 
 |  |  |             xstring argUrl = rptEle.getAttribute(L"arg"); | 
 |  |  |             if (argUrl != L"") | 
 |  |  |             { | 
 |  |  |                xaserverarg ar = new xaserverarg; | 
 |  |  |                ar.setNativePointer(ar.CreateInstance()); | 
 |  |  |                xaserverarg ar ; | 
 |  |  |                //ar.setNativePointer(ar.CreateInstance()); | 
 |  |  |                ar.AddArg(L"argurl", argUrl); | 
 |  |  |                if (argStr != L"") | 
 |  |  |                   ar.AddArg(L"arg", argStr); | 
 |  |  |                OpenWindow(L"dev:xpage[view.total.arg.vx]", cast(ar as int)); | 
 |  |  |                string arstr = ar.GetArgString(L"arg"); | 
 |  |  |                OpenWindow(L"dev:xpage[view.total.arg.vx]", ar); | 
 |  |  |                xstring arstr = ar.GetArgString(L"arg"); | 
 |  |  |                if (arstr != L"" && ar.GetArgString(L"action") == L"ok") | 
 |  |  |                { | 
 |  |  |                   argStr = arstr; | 
 |  |  |                   hCursor = xutil::SetCursorWait(); | 
 |  |  |                   HCURSOR hCursor = xutil::SetCursorWait(); | 
 |  |  |                   //trace(rptEle.getAttribute(L"data")); | 
 |  |  |                   OnRetrieve(rptEle.getAttribute(L"data"), argStr); | 
 |  |  |                   xutil::RestoreCursor(hCursor); | 
 |  |  | 
 |  |  |       { | 
 |  |  |  | 
 |  |  |          int row = dw_list.GetRow(); | 
 |  |  |          string skuid = dw_list.GetGuid(row); | 
 |  |  |          xstring skuid = dw_list.GetGuid(row); | 
 |  |  |          OnLookImage(skuid); | 
 |  |  |          return 1; | 
 |  |  |       } | 
 |  |  | 
 |  |  |       return 0; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int OnLookImage(string skuid) | 
 |  |  |    int OnLookImage(xstring skuid) | 
 |  |  |    { | 
 |  |  |       int hCursor = xutil::SetCursorWait(); | 
 |  |  |       xaserverarg arg = ViewObject::MakeArg(); | 
 |  |  |       HCURSOR hCursor = xutil::SetCursorWait(); | 
 |  |  |       xaserverarg arg; | 
 |  |  |       arg.AddArg(L"guid", skuid); | 
 |  |  |       OpenWindow(L"dev:xpage[ViewPictures.vx]", arg.getNativePointer()); | 
 |  |  |       OpenWindow(L"dev:xpage[ViewPictures.vx]", arg); | 
 |  |  |       xutil::RestoreCursor(hCursor); | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int AdjustField(xdwgrid dw) | 
 |  |  |    { | 
 |  |  |       string str = fieldRoleStr; | 
 |  |  |       xstring str = fieldRoleStr; | 
 |  |  |       for (int i = 1; i < dw.GetColumnCount(); i++) | 
 |  |  |       { | 
 |  |  |          string colname = dw.GetColumnName(i); | 
 |  |  |          if (str.find(L"!" + colname + L",L") >= 0) | 
 |  |  |          xstring colname = dw.GetColumnName(i); | 
 |  |  |          if (str.find(L"!" + colname + L",") >= 0) | 
 |  |  |          { | 
 |  |  |             dw.SetColumnState(colname, false); | 
 |  |  |             dw.SetColumnState((LPCTSTR)colname.c_str(), false); | 
 |  |  |          } | 
 |  |  |       } | 
 |  |  |       return 1; | 
 |  |  | 
 |  |  |  | 
 |  |  |    int SwitchReport(KXMLDOMElement e) | 
 |  |  |    { | 
 |  |  |       string dwname = e.getAttribute(L"template"); | 
 |  |  |       string dataurl = e.getAttribute(L"data"); | 
 |  |  |       string sheettype = e.getAttribute(L"reporttype"); | 
 |  |  |       xstring dwname = e.getAttribute(L"template"); | 
 |  |  |       xstring dataurl = e.getAttribute(L"data"); | 
 |  |  |       xstring sheettype = e.getAttribute(L"reporttype"); | 
 |  |  |       if (rptEle != e) | 
 |  |  |       { | 
 |  |  |          argStr = L""; | 
 |  |  | 
 |  |  |       if (sheettype == L"") sheettype = L"report"; | 
 |  |  |       SwitchLayer(L"dw_" + sheettype, L"report"); | 
 |  |  |       if (sheettype == L"report")dw_list.openUrl(dwname); | 
 |  |  |       if (hWndImageView) win32::DestroyWindow(hWndImageView); | 
 |  |  |       if (hWndImageView) DestroyWindow(hWndImageView); | 
 |  |  |  | 
 |  |  |       AdjustField(dw_list); | 
 |  |  |  | 
 |  |  | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int OnCombboChanged(ref TCommandEvent evt, int lParam) | 
 |  |  |    int OnCombboChanged(TEvent* evt, int lParam) | 
 |  |  |    { | 
 |  |  |       int h = xcombobox::GetCurSel(evt.hCtrl); | 
 |  |  |       int h = xcombobox::GetCurSel(evt->command.hCtrl); | 
 |  |  |       if (h > -1) | 
 |  |  |       { | 
 |  |  |          int hCursor = xutil::SetCursorWait(); | 
 |  |  |          KXMLDOMElement e = xcombobox::GetItemData(evt.hCtrl, h); | 
 |  |  |          HCURSOR hCursor = xutil::SetCursorWait(); | 
 |  |  |          KXMLDOMElement e = xcombobox::GetItemData(evt->command.hCtrl, h); | 
 |  |  |          SwitchReport(e); | 
 |  |  |          win32::PostMessage(GetHWND(), 0x401, L"xmQuery", 0); | 
 |  |  |          PostMessage(GetHWND(), 0x401, (WPARAM)L"xmQuery", 0); | 
 |  |  |          //OnCmdDispatch(L"xmQuery"); | 
 |  |  |          xutil::RestoreCursor(hCursor); | 
 |  |  |       } | 
 |  |  | 
 |  |  |  | 
 |  |  |    int OnTransData() | 
 |  |  |    { | 
 |  |  |       int ret = win32::MessageBox(GetHWND(), L"是否更新数据?\n更新过程预计需要四十分钟,如果中间弹出等待时间过长的提示,请点击中间重试按钮,或等待到一定时间再点击", L"提示", 0x4 /*yesno*/); | 
 |  |  |       int ret = MessageBox(GetHWND(), L"是否更新数据?\n更新过程预计需要四十分钟,如果中间弹出等待时间过长的提示,请点击中间重试按钮,或等待到一定时间再点击", L"提示", 0x4 /*yesno*/); | 
 |  |  |       if (ret != 6 /*IDYES */) return 1; | 
 |  |  |  | 
 |  |  |       xml x = new.xml(); | 
 |  |  |       x.setNativePointer(xml::CreateInstance()); | 
 |  |  |       int hCursor = xutil::SetCursorWait(); | 
 |  |  |       if (url::get(L"/sale/data/Total3/total/transdata", L"", x) != 1) | 
 |  |  |       xml x ; | 
 |  |  |       HCURSOR hCursor = xutil::SetCursorWait(); | 
 |  |  |       if (xurl::get(L"/sale/data/Total3/total/transdata", L"", x) != 1) | 
 |  |  |       { | 
 |  |  |          xutil::RestoreCursor(hCursor); | 
 |  |  |          return 1; | 
 |  |  | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    //命令处理事件 | 
 |  |  |    int OnXCommand(ref TXCommandEvent evt, int param) | 
 |  |  |    int OnOwnerData() | 
 |  |  |    { | 
 |  |  |       return OnCmdDispatch(evt.pStrID); | 
 |  |  |       int ret = MessageBox(GetHWND(), L"是否更新归属数据?\n更新过程预计需要些时间,如果中间弹出等待时间过长的提示,请点击中间重试按钮,或等待到一定时间再点击", L"提示", 0x4 /*yesno*/); | 
 |  |  |       if (ret != 6 /*IDYES */) return 1; | 
 |  |  |  | 
 |  |  |       xml x; | 
 |  |  |       HCURSOR hCursor = xutil::SetCursorWait(); | 
 |  |  |       if (xurl::get(L"/sale/data/CustomerV3/owner/reload", L"", x) != 1) | 
 |  |  |       { | 
 |  |  |          xutil::RestoreCursor(hCursor); | 
 |  |  |          return 1; | 
 |  |  |       } | 
 |  |  |       else | 
 |  |  |       { | 
 |  |  |          xutil::RestoreCursor(hCursor); | 
 |  |  |          alert(x.text()); | 
 |  |  |          return 1; | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |    //命令处理事件 | 
 |  |  |    int OnXCommand(TEvent* evt, int param) | 
 |  |  |    { | 
 |  |  |       return OnCmdDispatch(evt->xcommand.pStrID); | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int SendImageMessage(int row) | 
 |  |  |    { | 
 |  |  |       if (dw_list.GetItemString(row, L"GDNLineID") != L"") | 
 |  |  |          win32::SendMessage(hWndImageView, 0x401, L"xmRetrieve:GDNLineID:" + dw_list.GetItemString(row, L"GDNLineID"), 0); | 
 |  |  |          SendMessage(hWndImageView, 0x401, (WPARAM)(L"xmRetrieve:GDNLineID:" + dw_list.GetItemString(row, L"GDNLineID")).c_str(),0); | 
 |  |  |       else if (dw_list.GetItemString(row, L"ItemID") != L"") | 
 |  |  |          win32::SendMessage(hWndImageView, 0x401, L"xmRetrieve:SKUID:" + dw_list.GetItemString(row, L"ItemID"), 0); | 
 |  |  |          SendMessage(hWndImageView, 0x401, (WPARAM)(L"xmRetrieve:SKUID:" + dw_list.GetItemString(row, L"ItemID")).c_str(), 0); | 
 |  |  |       else if (dw_list.GetItemString(row, L"SKUID") != L"") | 
 |  |  |          win32::SendMessage(hWndImageView, 0x401, L"xmRetrieve:SKUID:" + dw_list.GetItemString(row, L"SKUID"), 0); | 
 |  |  |          SendMessage(hWndImageView, 0x401, (WPARAM)(L"xmRetrieve:SKUID:" + dw_list.GetItemString(row, L"SKUID")).c_str(), 0); | 
 |  |  |       else if (dw_list.GetItemString(row, L"GoodsNo") != L"") | 
 |  |  |          win32::SendMessage(hWndImageView, 0x401, L"xmRetrieve:GoodsNo:" + dw_list.GetItemString(row, L"GoodsNo"), 0); | 
 |  |  |          SendMessage(hWndImageView, 0x401, (WPARAM)(L"xmRetrieve:GoodsNo:" + dw_list.GetItemString(row, L"GoodsNo")).c_str(), 0); | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int OnDWClick(ref TNotifyEvent evt, int p) | 
 |  |  |    int OnDWClick(TEvent* evt, int p) | 
 |  |  |    { | 
 |  |  |       ref DWNMHDR  hdr = trust(evt.pnmh as ref DWNMHDR); | 
 |  |  |       string value = hdr.data; | 
 |  |  |       string colname = hdr.colname; | 
 |  |  |       DWNMHDR&  hdr = *(DWNMHDR*)evt->notify.pnmh; | 
 |  |  |       xstring value = hdr.data; | 
 |  |  |       xstring colname = hdr.colname; | 
 |  |  |       int row = hdr.row; | 
 |  |  |  | 
 |  |  |       if (row < 1) return 1; | 
 |  |  |  | 
 |  |  |       if (rptEle) | 
 |  |  |       { | 
 |  |  |          string str = rptEle.getAttribute(L"forward"); | 
 |  |  |          xstring str = rptEle.getAttribute(L"forward"); | 
 |  |  |          if (str == L"false") return 1; | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       /* | 
 |  |  |       string s = publiccode::GetUser().id; | 
 |  |  |       xstring s = publiccode::GetUser().id; | 
 |  |  |       xml supplier_x = ViewObject::RetrieveData(L"/sale/data/SupplierV3/entity/FindBySaleType",L"id", s); | 
 |  |  |       if(supplier_x.GetXmlDoc().text == L"样品间" || supplier_x.GetXmlDoc().text == L"主管"){ | 
 |  |  |       if(supplier_x.text == L"样品间" || supplier_x.text == L"主管"){ | 
 |  |  |          return 1; | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       xaserverarg arg; | 
 |  |  |       if(colname==L"SONo") | 
 |  |  |       { | 
 |  |  |          string SONo = dw_list.GetItemString(row,colname); | 
 |  |  |          xstring SONo = dw_list.GetItemString(row,colname); | 
 |  |  |          arg=new xaserverarg; | 
 |  |  |          arg.setNativePointer(arg.CreateInstance()); | 
 |  |  | 			 | 
 |  |  |          arg.AddArg(L"EntityNo",SONo); | 
 |  |  |          arg.AddArg(L"ReadOnly",L"true"); | 
 |  |  |          OpenWindow(L"dev:xpage[base.maint.so.vx]",arg.getNativePointer()); | 
 |  |  |       } | 
 |  |  |       if(colname==L"InvoiceNo") | 
 |  |  |       { | 
 |  |  |          string InvoiceNo= dw_list.GetItemString(row,colname); | 
 |  |  |          xstring InvoiceNo= dw_list.GetItemString(row,colname); | 
 |  |  |          arg=new xaserverarg; | 
 |  |  |          arg.setNativePointer(arg.CreateInstance()); | 
 |  |  | 			 | 
 |  |  |          arg.AddArg(L"EntityNo",InvoiceNo); | 
 |  |  |          arg.AddArg(L"ReadOnly",L"true"); | 
 |  |  |          OpenWindow(L"dev:xpage[maint.GDN3.vx]",arg.getNativePointer()); | 
 |  |  |       } | 
 |  |  |       if(colname==L"InvoiceNoEx") | 
 |  |  |       { | 
 |  |  |          string InvoiceNoEx= dw_list.GetItemString(row,colname); | 
 |  |  |          xstring InvoiceNoEx= dw_list.GetItemString(row,colname); | 
 |  |  |          arg=new xaserverarg; | 
 |  |  |          arg.setNativePointer(arg.CreateInstance()); | 
 |  |  | 			 | 
 |  |  |          arg.AddArg(L"EntityNo",InvoiceNoEx); | 
 |  |  |          arg.AddArg(L"invoiceno",InvoiceNoEx); | 
 |  |  |          arg.AddArg(L"ReadOnly",L"true"); | 
 |  |  | 
 |  |  |       } | 
 |  |  |       */ | 
 |  |  |  | 
 |  |  |       if (hWndImageView != 0 && win32::IsWindow(hWndImageView)) | 
 |  |  |       if (hWndImageView != 0 && IsWindow(hWndImageView)) | 
 |  |  |       { | 
 |  |  |          SendImageMessage(row); | 
 |  |  |       } | 
 |  |  |       else if (colname == L"HasImage") | 
 |  |  |       { | 
 |  |  |          xwin pwin = OpenWindow(L"dev:xpage[testImage.vx]", 0); | 
 |  |  |          hWndImageView = pwin.GetHWND(); | 
 |  |  |          xwin* pwin = OpenWindow(L"dev:xpage[testImage.vx]", 0); | 
 |  |  |          hWndImageView = pwin->GetHWND(); | 
 |  |  |          SendImageMessage(row); | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int OnRowChanged(ref TNotifyEvent evt, int p) | 
 |  |  |    int OnRowChanged(TEvent* evt, int p) | 
 |  |  |    { | 
 |  |  |  | 
 |  |  |       ref DWNMHDR  hdr = trust(evt.pnmh as ref DWNMHDR); | 
 |  |  |       DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; | 
 |  |  |       int row = hdr.row; | 
 |  |  |       if (row < 1) return 1; | 
 |  |  |  | 
 |  |  |       if (hWndImageView != 0 && win32::IsWindow(hWndImageView)) | 
 |  |  |       if (hWndImageView != 0 && IsWindow(hWndImageView)) | 
 |  |  |       { | 
 |  |  |          SendImageMessage(row); | 
 |  |  |       } | 
 |  |  | 
 |  |  |    int ShowRetrieveingTip() | 
 |  |  |    { | 
 |  |  |       dataretrieveing = true; | 
 |  |  |       xwin pwin = OpenWindow(L"dev:xpage[TestRetrieveing.vx]", 0); | 
 |  |  |       hWndRetrieveTip = pwin.GetHWND(); | 
 |  |  |       xwin* pwin = OpenWindow(L"dev:xpage[TestRetrieveing.vx]", 0); | 
 |  |  |       hWndRetrieveTip = pwin->GetHWND(); | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |    int CloseRetrieveTip() | 
 |  |  |    { | 
 |  |  |       dataretrieveing = false; | 
 |  |  |       win32::SendMessage(hWndRetrieveTip, 0x401, L"RetrieveFinished", 0); | 
 |  |  |       SendMessage(hWndRetrieveTip, 0x401, (WPARAM)L"RetrieveFinished", 0); | 
 |  |  |       hWndRetrieveTip = 0; | 
 |  |  |  | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int OnRetrieveFinished(ref TNotifyEvent evt, int p) | 
 |  |  |    int OnRetrieveFinished(TEvent* evt, int p) | 
 |  |  |    { | 
 |  |  |       CloseRetrieveTip(); | 
 |  |  |       //dataretrieveing = false; | 
 |  |  | 
 |  |  |    int OnAttachEvent() | 
 |  |  |    { | 
 |  |  |       //绑定工具条点击事件 | 
 |  |  |       AttachEvent(L"WM_XCOMMAND", OnXCommand); | 
 |  |  |       AttachEvent(L"WM_XCOMMAND", (FEvent)&ViewTotalWin::OnXCommand); | 
 |  |  |       //获取焦点事件,用于重置工具条 | 
 |  |  |       AttachEvent(L"WM_SETFOCUS", OnSetFocus); | 
 |  |  |       AttachEvent(L"cb_report", L"CBN_SELCHANGE", OnCombboChanged); | 
 |  |  |       AttachEvent(L"dw_report", L"DWV_CLICKED", OnDWClick); | 
 |  |  |       AttachEvent(L"dw_report", L"DWV_ROWFOCUSCHANGED", OnRowChanged);//绑定行更改触发事件OnRowChanged | 
 |  |  |       AttachEvent(L"dw_report", (0x400 + 81).toString(), OnRetrieveFinished); | 
 |  |  |       AttachEvent(L"WM_SETFOCUS", (FEvent)&ViewTotalWin::OnSetFocus); | 
 |  |  |       AttachEvent(L"cb_report", L"CBN_SELCHANGE", (FEvent)&ViewTotalWin::OnCombboChanged); | 
 |  |  |       AttachEvent(L"dw_report", L"DWV_CLICKED", (FEvent)&ViewTotalWin::OnDWClick); | 
 |  |  |       AttachEvent(L"dw_report", L"DWV_ROWFOCUSCHANGED", (FEvent)&ViewTotalWin::OnRowChanged);//绑定行更改触发事件OnRowChanged | 
 |  |  |       AttachEvent(L"dw_report", xstring(0x400 + 81), (FEvent)&ViewTotalWin::OnRetrieveFinished); | 
 |  |  |  | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int  OnRetrieve(string dataurl, string argstr) | 
 |  |  |    int  OnRetrieve(xstring dataurl, xstring argstr) | 
 |  |  |    { | 
 |  |  |       if (!rptEle) return 0; | 
 |  |  |       if (dataretrieveing) return -1; | 
 |  |  |       dw_list.Reset(); | 
 |  |  |  | 
 |  |  |       xml x = new.xml(); | 
 |  |  |       x.setNativePointer(xml::CreateInstance()); | 
 |  |  |       xaserverarg arg = new xaserverarg; | 
 |  |  |       arg.setNativePointer(arg.CreateInstance()); | 
 |  |  |       xml x ; | 
 |  |  |       xaserverarg arg ; | 
 |  |  | 		 | 
 |  |  |       arg.AddArg(L"arg", argstr); | 
 |  |  |       trace(argstr); | 
 |  |  |       string sheettype = rptEle.getAttribute(L"reporttype"); | 
 |  |  |       xstring sheettype = rptEle.getAttribute(L"reporttype"); | 
 |  |  |       if (sheettype == L"") sheettype = L"report"; | 
 |  |  |       //ShowRetrieveingTip(); | 
 |  |  |       if (url::get(dataurl, arg.GetString(), x) != 1) | 
 |  |  |       if (xurl::get(dataurl, arg.GetString(), x) != 1) | 
 |  |  |       { | 
 |  |  |  | 
 |  |  |          trace(L"错误信息=L" + x.GetXmlDoc().text); | 
 |  |  |          trace((xstring)L"错误信息=L" + x.text()); | 
 |  |  |          dw_list.Redraw(); | 
 |  |  |          return -1; | 
 |  |  |       } | 
 |  |  | 
 |  |  |          } | 
 |  |  |          else if (sheettype == L"office") | 
 |  |  |          { | 
 |  |  |             dw_office.LoadTemplate(x); | 
 |  |  |             dw_office.LoadTemplate(x,0); | 
 |  |  |             for (int i = 0; i < dw_office.GetSheetCount(); i++) | 
 |  |  |             { | 
 |  |  |                xcell sheet = dw_office.GetSheet(i); | 
 |  |  | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    xml getReportSet(string category) | 
 |  |  |    xml getReportSet(xstring category) | 
 |  |  |    { | 
 |  |  |       xml x = new.xml(); | 
 |  |  |       x.setNativePointer(xml::CreateInstance()); | 
 |  |  |       xaserverarg arg = new xaserverarg; | 
 |  |  |       arg.setNativePointer(arg.CreateInstance()); | 
 |  |  |       xml x ; | 
 |  |  |       xaserverarg arg ; | 
 |  |  | 		 | 
 |  |  |       arg.AddArg(L"category", category); | 
 |  |  |       if (url::get(L"/sale/data/Total3/reportset", arg.GetString(), x) != 1) | 
 |  |  |       if (xurl::get(L"/sale/data/Total3/reportset", arg.GetString(), x) != 1) | 
 |  |  |       { | 
 |  |  |          return 0; | 
 |  |  |       } | 
 |  |  |       return x; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    string GetReportFieldRole() | 
 |  |  |    xstring GetReportFieldRole() | 
 |  |  |    { | 
 |  |  |       xml x = new.xml(); | 
 |  |  |       x.setNativePointer(xml::CreateInstance()); | 
 |  |  |       xaserverarg arg = new xaserverarg; | 
 |  |  |       arg.setNativePointer(arg.CreateInstance()); | 
 |  |  |       if (url::get(L"/sale/data/Total3/report/field", arg.GetString(), x) != 1) | 
 |  |  |       xml x ; | 
 |  |  |       xaserverarg arg ; | 
 |  |  | 		 | 
 |  |  |       if (xurl::get(L"/sale/data/Total3/report/field", arg.GetString(), x) != 1) | 
 |  |  |       { | 
 |  |  |          return ""; | 
 |  |  |          return L""; | 
 |  |  |       } | 
 |  |  |       string str = x.GetXmlDoc().text; | 
 |  |  |       xstring str = x.text(); | 
 |  |  |       return str; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  | 
 |  |  |       fieldRoleStr = GetReportFieldRole(); | 
 |  |  |  | 
 |  |  |       argStr = L""; | 
 |  |  |       rptEle = 0; | 
 |  |  |       xcombobox xc = GetControl(L"cb_report"); | 
 |  |  |  | 
 |  |  |       m_category = L"total/trade"; | 
 |  |  |       if (GetParam()) { | 
 |  |  |          xaserverarg arg = new xaserverarg; | 
 |  |  |          arg.setNativePointer(GetParam()); | 
 |  |  |       SetArg(); | 
 |  |  |       if (GetWinParam()) { | 
 |  |  |          xaserverarg arg = GetArg(); | 
 |  |  |          m_category = arg.GetArgString(L"category"); | 
 |  |  |       } | 
 |  |  |       xml x = getReportSet(m_category); | 
 |  |  |       if (x) | 
 |  |  |       { | 
 |  |  |          KXMLDOMNodeList nlist = x.GetXmlDoc().selectNodes(L"//reports/report"); | 
 |  |  |          int len = nlist.length; | 
 |  |  |          KXMLDOMNodeList nlist = x.selectNodes(L"//reports/report"); | 
 |  |  |          int len = nlist.length(); | 
 |  |  |          for (int i = 0; i < len; i++) | 
 |  |  |          { | 
 |  |  |             KXMLDOMElement rpt = nlist.item(i); | 
 |  |  |             string name = rpt.getAttribute(L"name"); | 
 |  |  |             xcombobox::AddItem(xc.GetId(), name, trust(rpt as int)); | 
 |  |  |             xstring name = rpt.getAttribute(L"name"); | 
 |  |  |             xc.AddItem( name, rpt.ptr()); | 
 |  |  |             if (i == 0) xc.SetText(name); | 
 |  |  |             if (i == 0) rptEle = rpt; | 
 |  |  |          } |