From 9b3b2eb20b09e13da837a28f16e552ba70a090c4 Mon Sep 17 00:00:00 2001 From: LiFan <2308045698@qq.com> Date: 星期四, 24 四月 2025 14:48:21 +0800 Subject: [PATCH] update --- jrj/project/printview/Template.Print.ViewEx.cpp | 559 ++++++++++++++++++++++++++----------------------------- 1 files changed, 266 insertions(+), 293 deletions(-) diff --git a/jrj/project/printview/Template.Print.ViewEx.cpp b/jrj/project/printview/Template.Print.ViewEx.cpp index 04de185..3f1ec4a 100644 --- a/jrj/project/printview/Template.Print.ViewEx.cpp +++ b/jrj/project/printview/Template.Print.ViewEx.cpp @@ -1,13 +1,31 @@ + +#include <guiddef.h> +#include <exdisp.h> // Defines of stuff like IWebBrowser2. This is an include file with Visual C 6 and above +#include <mshtml.h> // Defines of stuff like IHTMLDocument2. This is an include file with Visual C 6 and above +#include <mshtmhst.h> // Defines of stuff like IDocHostUIHandler. This is an include file with Visual C 6 and above +#include <Shlwapi.h> +#include <Windows.h> +#include <comutil.h> + +#undef _XWIN + #include <wobject/xstring.hpp> #include <xcontrol/xtreeview.hpp> #include <xcontrol/xdwgrid.hpp> #include <xcontrol/xlayersheet.hpp> +#include <xcontrol/xhtml.hpp> +#include <wobject/xutil.hpp> #include "vbusiness/vframe/maint.vframe.vbusiness.hpp" #include "viewobject/view.base.hpp" +#include <xcontrol/xcell.hpp> +#include <xcontrol/xexcel.hpp> +#include <xcontrol/xhtml.hpp> +#include <win32/xfile.hpp> using xml = KXMLDOMDocument; +#if 0 namespace _excel for ole "Excel.Application,{00020813-0000-0000-C000-000000000046}"; namespace _mshtml for ole "MSHtml,{3050F1C5-98B5-11CF-BB82-00AA00BDCE0B}"; @@ -22,46 +40,15 @@ void SaveToFile(xstring filename) alias "?SaveToFile@CExcelApplication@@QAEXQA_W@Z"; void Quit() alias "?Quit@CExcelApplication@@QAEXXZ"; }; - -struct MYOPENFILENAMEW -{ - unsigned int lStructSize; - unsigned int hwndOwner; - unsigned int hInstance; - xstring lpstrFilter; - - xstring lpstrCustomFilter; - unsigned int nMaxCustFilter; - unsigned int nFilterIndex; - xstring lpstrFile; - - unsigned int nMaxFile; - xstring lpstrFileTitle; - unsigned int nMaxFileTitle; - xstring lpstrInitialDir; - - xstring lpstrTitle; - unsigned int Flags; - unsigned short nFileOffset; - unsigned short nFileExtension; - xstring lpstrDefExt; - - unsigned int lCustData; - unsigned int lpfnHook; - xstring lpTemplateName; - - //_WIN32_WINNT >= 0x0500 - unsigned int pvReserved; - unsigned int dwReserved; - unsigned int FlagsEx; - // (_WIN32_WINNT >= 0x0500) -}; +#endif -class __declspec(dllexport) TemplatePrintViewEx : public xframe +DeclWinObject_(TemplatePrintViewEx, xframe) { + CreateWinObject_(TemplatePrintViewEx, xframe) public: - xole ole_print; + xhtml ole_print; xcell cell; + xstring m_SupplierName; xstring m_EntityName; xstring m_EntityID; xstring m_EntityNo; @@ -70,7 +57,6 @@ bool updated; xstring htmlStr; - cexcel excel; bool editing; xstring billName ; @@ -82,49 +68,24 @@ //bool showgrid; bool PaperPrint; +#if 0 + cexcel excel; static stdcall int GetModuleFileName(int hModule ,xstring lpFileName ,int nSize ) native from "kernel32.dll" alias "GetModuleFileNameW"; static stdcall int PathRemoveFileSpec(xstring lpFileName ) native from "shlwapi.dll" alias "PathRemoveFileSpecW"; static stdcall int DeleteFile(xstring lpFileName) native from "kernel32.dll" alias "DeleteFileW"; static stdcall bool GetSaveFileName(ref MYOPENFILENAMEW)native from "comdlg32.dll" alias "GetSaveFileNameW"; +#endif -public: - TemplatePrintViewEx(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} -public: - static TemplatePrintViewEx* CreateInstance(void* implPtr, void* hWnd) + + xstring GetMySaveFileName(xstring initFileName, xstring filter, xstring ext) { - TemplatePrintViewEx* pWin = new TemplatePrintViewEx(implPtr, (HWND)hWnd); - return pWin; - } - xstring GetModulePath() - { - xstring str =L""; - str = str.space(255); - GetModuleFileName(0,str,250); - PathRemoveFileSpec(str); - return str; - } - xstring GetModuleTmpPath() - { - xstring str =L""; - str = str.space(255); - GetModuleFileName(0,str,250); - PathRemoveFileSpec(str); - xstring tmp = str + L"\\Temp"; - xaserver::CreateDirectory(tmp); - return tmp; - } - - xstring GetSaveFileName(xstring initFileName, xstring filter, xstring ext) - { - char[] szFileName = new char[255] ; - char[] szPath = new char[255]; - szFileName[0] = 0; - szPath[0] = 0; + wchar_t szFileName[255] = { 0 }; + wchar_t szPath[255] = { 0 }; if(initFileName !=L"") { int len = initFileName.length(); - char[] tmp = initFileName; + const wchar_t* tmp = initFileName; for(int i=0; i<len+1;i++) { //szFileName[i] = tmp[i]; @@ -133,10 +94,11 @@ } int nFilterIndex = 1; - ref MYOPENFILENAMEW ofn = new MYOPENFILENAMEW; - - ofn.lStructSize = 88;//sizeof(ofn); - ofn.hwndOwner = 0; + OPENFILENAMEW ofn = { 0 }; + //::ZeroMemory(&ofn,sizeof(OPENFILENAMEW)) + //ofn.lStructSize = 88;//sizeof(ofn); + ofn.lStructSize = sizeof(ofn); + ofn.hwndOwner = GetHWND(); ofn.hInstance = 0; ofn.lpstrFilter = filter; //"JPEG 文件(*.jpg)\0*.jpg;*.jpeg;*.png;*.gif;*.bmp\0全部文件(*.*)\0*.*\0"; @@ -157,14 +119,13 @@ ofn.lpTemplateName = 0; //debugbreak(); - if(GetSaveFileName(ofn)) + if(xfile::GetSaveFileNameW(ofn)) { - delete ofn; return szPath; } else { - return ""; + return L""; } } @@ -177,22 +138,21 @@ if(m_EntityName==L"SaleOrder") pre=L"PI"; if(m_EntityName==L"GDN3")pre=L"INV"; } - xstring file1 = GetSaveFileName(pre+m_EntityNo+L".xlsx", - "Excel1文件(*.xlsx)\0*.xlsx;*.xls\0Excel97文件(*.xls)\0*.xls\0PDF文件(*.pdf)\0*.pdf\0", - "xlsx"); + if (m_EntityName == L"VATNotify")m_EntityNo = m_EntityNo + m_SupplierName; + xstring file1 = GetMySaveFileName(pre+m_EntityNo+L".xlsx", + L"Excel1文件(*.xlsx)\0*.xlsx;*.xls\0Excel97文件(*.xls)\0*.xls\0PDF文件(*.pdf)\0*.pdf\0", + L"xlsx"); if(file1 ==L"") return 1; - if(win32::PathFileExists(file1)) + if(PathFileExists(file1)) { - int res = win32::MessageBox(this.GetHWND(), L"文件已经存在,是否覆盖?",L"提示",4); + int res = MessageBox(GetHWND(), L"文件已经存在,是否覆盖?",L"提示",4); if(res != 6) return 1; } trace(L"\r\n link excel"); - excel = new cexcel; - int hexcel = cexcel::CreateInstance(); - excel.setNativePointer(hexcel); - if(hexcel == 0) + xexcel excel; + if(!excel.GetNativePtr()) { alert(L"不能连接Excel"); return 1; @@ -200,64 +160,62 @@ xstring gid = publiccode::GetGuid(); xstring filename= pre+m_EntityNo+L"_.htm"; - xutil::SaveToFile(GetModuleTmpPath() + L"\\"+ filename, htmlStr,L"",L"",L""); + xutil::SaveToFile(xutil::GetModuleTmpPath() + L"\\"+ filename, htmlStr,NULL,NULL); trace(L"\r\n excel to open"); - excel .OpenDocument(GetModuleTmpPath() + L"\\"+ filename); + excel .OpenDocument(xutil::GetModuleTmpPath() + L"\\"+ filename); trace(L"\r\n trans shape"); //excel .put_Visible(true); excel.TransShape(); trace(L"\r\n save to tmp excel file"); if(file1.find(L".xls")) { - if(win32::PathFileExists(GetModuleTmpPath() + L"\\"+ pre+m_EntityNo+L"_.xls")) - DeleteFile(GetModuleTmpPath() + L"\\"+ pre+m_EntityNo+L"_.xls"); - excel.SaveToFile(GetModuleTmpPath() + L"\\"+ pre+m_EntityNo+L"_.xls"); + if(PathFileExists(xutil::GetModuleTmpPath() + L"\\"+ pre+m_EntityNo+L"_.xls")) + DeleteFile(xutil::GetModuleTmpPath() + L"\\"+ pre+m_EntityNo+L"_.xls"); + excel.SaveToFile(xutil::GetModuleTmpPath() + L"\\"+ pre+m_EntityNo+L"_.xls"); //alert(GetModuleTmpPath() + L"\\"+ pre+m_EntityNo+L"_.xls"); } else { - if(win32::PathFileExists(GetModuleTmpPath() + L"\\"+ pre+m_EntityNo+L"_.xlsx")) - DeleteFile(GetModuleTmpPath() + L"\\"+ pre+m_EntityNo+L"_.xlsx"); - excel.SaveToFile(GetModuleTmpPath() + L"\\"+ pre+m_EntityNo+L"_.xlsx"); + if(PathFileExists(xutil::GetModuleTmpPath() + L"\\"+ pre+m_EntityNo+L"_.xlsx")) + DeleteFile(xutil::GetModuleTmpPath() + L"\\"+ pre+m_EntityNo+L"_.xlsx"); + excel.SaveToFile(xutil::GetModuleTmpPath() + L"\\"+ pre+m_EntityNo+L"_.xlsx"); } trace(L"\r\n save to excel file"); - if(win32::PathFileExists(file1)) //GetModuleTmpPath() + L"\\"+ pre+m_EntityNo+L"_.xlsx")) + if(PathFileExists(file1)) //GetModuleTmpPath() + L"\\"+ pre+m_EntityNo+L"_.xlsx")) DeleteFile(file1); excel.SaveToFile(file1); excel.Quit(); - excel.Release(excel.ptr_native_); + //excel.Release(excel.ptr_native_); return 1; } int OntoExcel() //转为Excel { - excel = new cexcel; - excel.setNativePointer(cexcel::CreateInstance()); - + xexcel excel; xstring gid = publiccode::GetGuid(); xstring pre = m_EntityName; if(m_EntityName==L"SaleOrder") pre=L"PI"; if(m_EntityName==L"GDN3")pre=L"INV"; xstring filename= pre+m_EntityNo+L".htm"; xstring filenameex= pre+m_EntityNo+L".xlsx"; - xutil::SaveToFile(GetModuleTmpPath() + L"\\"+ filename, htmlStr,L"",L"",L""); - excel .OpenDocument(GetModuleTmpPath() + L"\\"+ filename); + xutil::SaveToFile(xutil::GetModuleTmpPath() + L"\\"+ filename, htmlStr,NULL,NULL); + excel .OpenDocument(xutil::GetModuleTmpPath() + L"\\"+ filename); //excel.put_Visible(true); excel.TransShape(); - if(win32::PathFileExists(GetModuleTmpPath() + L"\\"+ filenameex)) - DeleteFile(GetModuleTmpPath() + L"\\"+ filenameex); - excel.SaveToFile(GetModuleTmpPath() + L"\\"+ filenameex); + if(PathFileExists(xutil::GetModuleTmpPath() + L"\\"+ filenameex)) + DeleteFile(xutil::GetModuleTmpPath() + L"\\"+ filenameex); + excel.SaveToFile(xutil::GetModuleTmpPath() + L"\\"+ filenameex); excel.put_Visible(true); - excel.Release(excel.ptr_native_); + //excel.Release(excel.ptr_native_); return 1; } xstring getfilePath() { - xstring path=GetModulePath()+L"\\resource\\image"; + xstring path= xutil::GetModulePath()+L"\\resource\\image"; xstring filename=L"contract.jpg"; filename=L"sign.png"; filename=L"jrj_maersk.png"; @@ -281,7 +239,7 @@ xstring right=L""; xstring tag=L""; - len = L"[$element:".length(); + len = ((xstring)L"[$element:").length(); while(true) { pos = str.find(L"[$element:"); @@ -305,7 +263,7 @@ str = pre + str; pre = L""; - len = L"[/$element:".length(); + len = ((xstring)L"[/$element:").length(); while(true) { pos = str.find(L"[/$element:"); @@ -336,16 +294,16 @@ str = replaceInnerElement(str); return str; } - +#if 0 xstring DownLoadSKUNoPic(xstring SKUNo,xstring CustomerID=L"",xstring CustomerItemNo=L"") { if(SKUNo.length()>20) return DownLoadPaperPic(SKUNo); - xml x = new xml; - x.setNativePointer(xml::CreateInstance()); - xaserverarg arg = new xaserverarg; - arg.setNativePointer(arg.CreateInstance()); + xml x; + + xaserverarg arg; + arg.AddArg(L"SKUNo",SKUNo); xstring src =L"/sale/data/ProductLibrary3/pref/picture/imagelistSKUNo"; @@ -356,49 +314,47 @@ src =L"/sale/data/ProductLibrary3/pref/picture/customer/imagelistSKUNo"; } //trace(L"SKUNo=L"+SKUNo);//要有展示图片查询条件内必定要skuno - if(url::get(src,arg.GetString(),x)!=1) + if(xurl::get(src,arg.GetString(),x)!=1) { trace(L"error for download skuno pic!"); - return ""; + return L""; } xstring spath = L""; - xstring path =GetModuleTmpPath(); + xstring path = xutil::GetModuleTmpPath(); xstring ext = L"jpg"; - if(x.GetXmlDoc().selectSingleNode(L"//FileExt[1]")) + if(x.selectSingleNode(L"//FileExt[1]")) { - ext = x.GetXmlDoc().selectSingleNode(L"//FileExt[1]").text; + ext = x.selectSingleNode(L"//FileExt[1]").text(); }else if(CustomerID !=L"") { src =L"/sale/data/ProductLibrary3/pref/picture/imagelistSKUNo"; - if(url::get(src,arg.GetString(),x)!=1) + if(xurl::get(src,arg.GetString(),x)!=1) { trace(L"error for download skuno pic!"); - return ""; + return L""; } - if(x.GetXmlDoc().selectSingleNode(L"//FileExt[1]")) - ext = x.GetXmlDoc().selectSingleNode(L"//FileExt[1]").text; + if(x.selectSingleNode(L"//FileExt[1]")) + ext = x.selectSingleNode(L"//FileExt[1]").text(); } xstring filename = SKUNo + L"." + ext; - if(x.GetXmlDoc().selectSingleNode(L"//PicPath[1]")) - spath = x.GetXmlDoc().selectSingleNode(L"//PicPath[1]").text; + if(x.selectSingleNode(L"//PicPath[1]")) + spath = x.selectSingleNode(L"//PicPath[1]").text(); if(spath != L"") { xaserver::DownLoadFile(GetServerUrl(),spath,L"",path+L"/"+filename); } - return "file://"+ path+L"/"+filename; + return (xstring)L"file://"+ path+L"/"+filename; } - +#endif xstring DownLoadSKUNoPic(xstring SKUNo,xstring CustomerID=L"",xstring CustomerItemNo=L"") { if(SKUNo.length()>20) return DownLoadPaperPic(SKUNo); - xml x = new xml; - x.setNativePointer(xml::CreateInstance()); - xaserverarg arg = new xaserverarg; - arg.setNativePointer(arg.CreateInstance()); + xml x; + xaserverarg arg; arg.AddArg(L"SKUNo",SKUNo); xstring src =L"/sale/data/ProductLibrary3/pref/picture/imagelistSKUNo"; @@ -409,99 +365,96 @@ src =L"/sale/data/ProductLibrary3/pref/picture/customer/imagelistSKUNo"; } //trace(L"SKUNo=L"+SKUNo);//要有展示图片查询条件内必定要skuno - if(url::get(src,arg.GetString(),x)!=1) + if(xurl::get(src,arg.GetString(),x)!=1) { trace(L"error for download skuno pic!"); - return ""; + return L""; } xstring spath = L""; - xstring path =GetModuleTmpPath(); + xstring path = xutil::GetModuleTmpPath(); xstring ext = L"jpg"; - if(x.GetXmlDoc().selectSingleNode(L"//FileExt[1]")) + if(x.selectSingleNode(L"//FileExt[1]")) { - ext = x.GetXmlDoc().selectSingleNode(L"//FileExt[1]").text; + ext = x.selectSingleNode(L"//FileExt[1]").text(); }else if(CustomerID !=L"") { src =L"/sale/data/ProductLibrary3/pref/picture/imagelistSKUNo"; - if(url::get(src,arg.GetString(),x)!=1) + if(xurl::get(src,arg.GetString(),x)!=1) { trace(L"error for download skuno pic!"); - return ""; + return L""; } - if(x.GetXmlDoc().selectSingleNode(L"//FileExt[1]")) - ext = x.GetXmlDoc().selectSingleNode(L"//FileExt[1]").text; + if(x.selectSingleNode(L"//FileExt[1]")) + ext = x.selectSingleNode(L"//FileExt[1]").text(); } xstring filename = SKUNo + L"." + ext; - if(x.GetXmlDoc().selectSingleNode(L"//PicPath[1]")) - spath = x.GetXmlDoc().selectSingleNode(L"//PicPath[1]").text; + if(x.selectSingleNode(L"//PicPath[1]")) + spath = x.selectSingleNode(L"//PicPath[1]").text(); if(spath != L"") { xaserver::DownLoadFile(GetServerUrl(),spath,L"",path+L"/"+filename); } - return "file://"+ path+L"/"+filename; + return L"file://"+ path+L"/"+filename; } xstring GetImageUrl(xstring id) { - xml xp=new xml; - xp.setNativePointer(xml::CreateInstance()); - xaserverarg arg_pic=new xaserverarg; - arg_pic.setNativePointer(arg_pic.CreateInstance()); + xml xp; + xaserverarg arg_pic; arg_pic.AddArg(L"id",id); xstring res = L"/sale/data/productlibrary3/image/url"; - if(url::get(res,arg_pic.GetString(),xp)!=1) + if(xurl::get(res,arg_pic.GetString(),xp)!=1) { - xp.GetXml(); + xp.xml(); return 1; }else { - xstring path = xp.GetXmlDoc().text; + xstring path = xp.text(); if(path !=L"") return path; } - return "/business/products/chanpin/"+id.left(2)+L"/"+ id+L".jpg"; + return L"/business/products/chanpin/"+id.left(2)+L"/"+ id+L".jpg"; } xstring DownLoadPaperPic(xstring guid) { - - xstring path =GetModuleTmpPath(); + xstring path = xutil::GetModuleTmpPath(); xstring ext = L"jpg"; xstring filename = guid + L"." + ext; xstring spath = GetImageUrl(guid); //alert(spath); xaserver::DownLoadFile(GetServerUrl(),spath,L"",path+L"/"+filename); - return "file://"+ path+L"/"+filename; + return (xstring)L"file://"+ path+L"/"+filename; } xstring DownLoadPaperPic1(xstring guid) { - xstring path =GetModuleTmpPath(); + xstring path = xutil::GetModuleTmpPath(); xstring ext = L"jpg"; xstring filename = guid + L"." + ext; xstring str = guid.mid(0,2); xstring spath = L"/business/products/chanpin/"+str+L"/"+guid+L".jpg"; xaserver::DownLoadFile(GetServerUrl(),spath,L"",path+L"/"+filename); - return "file://"+ path+L"/"+filename; + return (xstring)L"file://"+ path+L"/"+filename; } xstring DownLoadUrlPic(xstring src) { xstring guid = publiccode::GetGuid(); - xstring path =GetModuleTmpPath(); + xstring path = xutil::GetModuleTmpPath(); xstring ext = L"jpg"; xstring filename = guid + L"." + ext; xstring spath = src; xaserver::DownLoadFile(GetServerUrl(),spath,L"",path+L"/"+filename); - return "file://"+ path+L"/"+filename; + return (xstring)L"file://"+ path+L"/"+filename; } int OnHtml(xaserverarg arg) { - int hCursor = xutil::SetCursorWait(); + HCURSOR hCursor = xutil::SetCursorWait(); xstring sEntityName = arg.GetArgString(L"EntityName"); xstring sEntityID = arg.GetArgString(L"EntityID"); @@ -512,14 +465,13 @@ dataUrl = L"/sale/data/"+sEntityName+ L"/"+ dataUrl; if(!m_dataset) { - xml x0 = new xml; - x0.setNativePointer(xml::CreateInstance()); - if (url::get(dataUrl,arg.GetString(),x0) != 1) + xml x0 ; + if (xurl::get(dataUrl,arg.GetString(),x0) != 1) { alert(L"数据集出错了!"); return 0; } - trace(x0.GetXml()); + trace(x0.xml()); m_dataset = x0; } @@ -528,23 +480,22 @@ arg.AddArg(L"sPath",sPath); m_spath = sPath; - xml xsl = new xml; - xsl.setNativePointer(xml::CreateInstance()); - if (url::get(L"/sale/data/SysPrintTemplate/getxsl",arg.GetString(),xsl) != 1) + xml xsl; + if (xurl::get(L"/sale/data/SysPrintTemplate/getxsl", arg.GetString(), xsl) != 1) { alert(L"数据模板错误!"); return 0; } - xstring xslStr = xsl.GetXml(); + xstring xslStr = xsl.xml(); xslStr = adjustXsl(xslStr,sPath); - xsl.LoadXml(xslStr); + xsl.loadXML(xslStr); //trace(m_dataset.GetXml()); trace(L"\r\n--------\r\n"+xslStr); - m_strHtml = m_dataset.GetXmlDoc().transformNode(xsl.GetXmlDoc()); + m_strHtml = m_dataset.transformNode(xsl); xstring aspace = m_strHtml.replace(L"[空]",L" ",0); aspace = aspace.replace(L"[line]",L"<br/>",0); xstring scontent = aspace.replace(L"<?xml version=\"1.0\"?>",L"",0); @@ -555,20 +506,20 @@ int pos = tail.find(L"src=\"item-picture:"); while(pos > 0) { - int spos = pos+L"src=\"item-picture:".length(); + int spos = pos+((xstring)L"src=\"item-picture:").length(); int pos1 = tail.find(L"\"",spos+1); xstring skuno = tail.mid(spos,pos1 - spos ).trim(); xstring CustomerID=L""; xstring CustomerItemNo=L""; - if(skuno.find(L",L")>0) + if(skuno.find(L",")>0) { - CustomerID = skuno.left(skuno.find(L",L")).trim(); - skuno = skuno.mid(skuno.find(L",L")+1,256).trim(); + CustomerID = skuno.left(skuno.find(L",")).trim(); + skuno = skuno.mid(skuno.find(L",")+1,256).trim(); } - if(skuno.find(L",L")>0) + if(skuno.find(L",")>0) { - CustomerItemNo = skuno.left(skuno.find(L",L")).trim(); - skuno = skuno.mid(skuno.find(L",L")+1,256).trim(); + CustomerItemNo = skuno.left(skuno.find(L",")).trim(); + skuno = skuno.mid(skuno.find(L",")+1,256).trim(); } xstring src = DownLoadSKUNoPic(skuno,CustomerID,CustomerItemNo); head += tail.left(pos) + L"src=\"" + src; @@ -582,7 +533,7 @@ int position = tail.find(L"src=\"paper-picture:"); while(position > 0) { - int sposition = position+L"src=\"paper-picture:".length(); + int sposition = position+ ((xstring)L"src=\"paper-picture:").length(); int position1 = tail.find(L"\"",sposition+1); xstring guid = tail.mid(sposition,position1 - sposition ).trim(); xstring src2 = DownLoadPaperPic(guid); @@ -597,10 +548,10 @@ position = tail.find(L"src=\"src-picture:"); while(position > 0) { - sposition = position+L"src=\"src-picture:".length(); - position1 = tail.find(L"\"",sposition+1); - guid = tail.mid(sposition,position1 - sposition ).trim(); - src2 = DownLoadUrlPic(guid); + int sposition = position+((xstring)L"src=\"src-picture:").length(); + int position1 = tail.find(L"\"",sposition+1); + xstring guid = tail.mid(sposition,position1 - sposition ).trim(); + xstring src2 = DownLoadUrlPic(guid); head += tail.left(position) + L"src=\"" + src2; tail = tail.mid(position1,999999999); position = tail.find(L"src=\"src-picture:"); @@ -611,8 +562,7 @@ htmlStr = scontent; ole_print.LoadHtml(scontent); - xml x1 = new xml; - x1.setNativePointer(xml ::CreateInstance()); + xml x1; //xstring xcontent = m_strHtml.replace(L" ",L"[空]",0); xstring xcontent = m_strHtml.replace(L"[空]",L" ",0); int pos0 = xcontent.find(L"<xml"); @@ -622,15 +572,15 @@ xstring str = xcontent.left(pos0)+ xcontent.mid(pos2+6,9999999); xcontent = str; } - x1.LoadXml(xcontent); - if(x1.GetXmlDoc()) + x1.loadXML(xcontent); + if(x1) { /*if(!showgrid) { SendCtrlCmd(cell,L"xmFormatShowGrid"); showgrid = true; }*/ - cell.LoadTemplate(x1.GetXmlDoc()); + cell.LoadTemplate(x1); cell.Redraw(); } @@ -641,40 +591,61 @@ int updateHtml() { - _mshtml::IHTMLDocument3 doc = ole_print.GetHtmlDocument(); - _mshtml::IHTMLElementCollection rows = doc.getElementsByTagName(L"tr"); - _mshtml::IHTMLElementCollection rows2 = doc.getElementsByTagName(L"td"); - int len = rows.length; - int len2 = rows2.length; + return 1; + IHTMLDocument3* doc = (IHTMLDocument3 * )ole_print.GetHtmlDocument(); + IHTMLElementCollection* rows = NULL; + IHTMLElementCollection* rows2 = NULL; + doc->getElementsByTagName((BSTR)L"tr",&rows); + doc->getElementsByTagName((BSTR)L"td",&rows2); + long len; + rows->get_length(&len); + long len2; + rows2->get_length(&len2); for(int i=0; i < len - 1;i++) { - _mshtml::IHTMLElement e = rows.item(i,i); - e.style.setAttribute(L"height",e.offsetHeight,0); - e.Release(); + _variant_t var; + IHTMLElement* e=0; + IHTMLStyle* pstyle=0; + long offsetHeight=0; + rows->item((_variant_t)i, (_variant_t)i,(IDispatch**) & e); + e->get_style(&pstyle); + e->get_offsetHeight(&offsetHeight); + pstyle->setAttribute((BSTR)L"height",(_variant_t)offsetHeight, 0); + e->Release(); + pstyle->Release(); } - for( i=0; i < len2 - 1;i++) + for( int i=0; i < len2 - 1;i++) { - _mshtml::IHTMLElement e2 = rows2.item(i,i); - e2.style.setAttribute(L"width",e.offsetWidth,0); - e2.Release(); + IHTMLElement* e = 0; + IHTMLStyle* pstyle = 0; + long offsetWidth=0; + rows->item((_variant_t)i, (_variant_t)i, (IDispatch**)&e); + e->get_style(&pstyle); + e->get_offsetHeight(&offsetWidth); + pstyle->setAttribute((BSTR)L"width", (_variant_t)offsetWidth, 0); + e->Release(); + pstyle->Release(); } - rows.Release(); - doc.release(); - htmlStr = doc.documentElement.outerHtml; + rows->Release(); + doc->Release(); + + //IHTMLElement* e = 0; + //doc->get_documentElement(&e); + //BSTR bstrHtml=0; + //e->get_outerHTML(&bstrHtml); + return 1; } int OnOpenDocument() { - if(GetParam()) + if(GetWinParam()) { - xaserverarg arg = new xaserverarg; - arg.setNativePointer(GetParam()); - int p = arg.ptr_native_; + xaserverarg arg=GetArg(); arg.AddArg(L"action",L"open"); arg.AddArg(L"DocumentID",L""); arg.AddArg(L"ok",L""); - openUrl(L"/sale/view/view.dlg/xpage/Template/PrintDialog", p); + openUrl(L"/sale/view/view.dlg/xpage/Template/PrintDialog", &arg); xstring ret = arg.GetArgString(L"return"); xstring action = arg.GetArgString(L"action"); if (ret ==L"ok") @@ -682,24 +653,24 @@ if(action ==L"open") { m_DocumentID = arg.GetArgString(L"DocumentID"); - xml x = new xml; - x.setNativePointer(xml::CreateInstance()); + xml x; + xstring prestr = m_DocumentID.mid(0,2); - prestr = prestr.upper(); + prestr = prestr.toUpper(); xaserver::LoadUrl(GetServerUrl(),L"/business/data/bill/"+prestr+L"/"+ m_DocumentID+L".jpg",L"",x); - if(x.GetXml()!=L"") + if((xstring)x.xml()!=L"") { - if(x.GetXmlDoc()) + if(x) { /*if(!showgrid) { SendCtrlCmd(cell,L"xmFormatShowGrid"); showgrid = true; }*/ - cell.LoadTemplate(x.GetXmlDoc()); + cell.LoadTemplate(x); cell.Redraw(); } - ole_print.LoadHtml(x.GetXml()); + ole_print.LoadHtml(x.xml()); }else { ole_print.LoadHtml(L"<html><body>未找到对应的文档</body></html>"); @@ -709,13 +680,14 @@ else { xstring templateName = arg.GetArgString(L"template-name"); - win32::SetWindowText(GetHWND(),templateName); + SetWindowText(GetHWND(),templateName); billName = templateName; billPre = arg.GetArgString(L"template-pre"); billID = arg.GetArgString(L"template-guid"); m_EntityID = arg.GetArgString(L"EntityID"); m_EntityNo = arg.GetArgString(L"EntityNo"); m_EntityName = arg.GetArgString(L"EntityName"); + m_SupplierName = arg.GetArgString(L"SupplierName"); m_DocumentID = L""; OnHtml(arg); @@ -728,13 +700,11 @@ int OnPrintDialog() { - if(GetParam()) + if(GetWinParam()) { - xaserverarg arg = new xaserverarg; - arg.setNativePointer(GetParam()); - int p = arg.ptr_native_; + xaserverarg arg=GetArg(); arg.AddArg(L"ok",L""); - openUrl(L"/sale/view/view.dlg/xpage/Template/PrintDialog", p); + openUrl(L"/sale/view/view.dlg/xpage/Template/PrintDialog", &arg); xstring ret = arg.GetArgString(L"return"); xstring action = arg.GetArgString(L"action"); if (ret ==L"ok") @@ -743,58 +713,59 @@ if(action ==L"open") { m_DocumentID = arg.GetArgString(L"DocumentID"); - xml x = new xml; - x.setNativePointer(xml::CreateInstance()); + xml x; + xstring prestr = m_DocumentID.mid(0,2); - prestr = prestr.upper(); + prestr = prestr.toUpper(); xaserver::LoadUrl(GetServerUrl(),L"/business/data/bill/"+prestr+L"/"+ m_DocumentID+L".jpg",L"",x); - if(x.GetXml()!=L"") + if((xstring)x.xml()!=L"") { xstring content = L""; - if(x.GetXmlDoc().documentElement.tagName==L"Bill") + if((xstring)x.documentElement().tagName() == L"Bill") { - content = x.GetXmlDoc().documentElement.text; + content = x.documentElement().text(); content = content.replace(L"[空]",L" ",0); - ole_print.LoadHtml(content); + ole_print.LoadHtml((LPTSTR)content.c_str()); }else { - if(x.GetXmlDoc()) + if(x) { /*if(!showgrid) { SendCtrlCmd(cell,L"xmFormatShowGrid"); showgrid = true; }*/ - xml x1 = new xml; - x1.setNativePointer(xml::CreateInstance()); - xstring content1 = x.GetXml(); + xml x1 ; + + xstring content1 = x.xml(); content1 = content1.replace(L"[空]",L" ",0); //trace(content1); - x1.LoadXml(content1); - cell.LoadTemplate(x1.GetXmlDoc()); + x1.loadXML(content1); + cell.LoadTemplate(x1); cell.Redraw(); } - content = x.GetXml(); + content = x.xml(); content = content.replace(L"[空]",L" ",0); ole_print.LoadHtml(content); } }else { - ole_print.LoadHtml(L"<html><body>未找到对应的文档</body></html>"); + ole_print.LoadHtml((LPTSTR)L"<html><body>未找到对应的文档</body></html>"); //cell.LoadHtml(L"<html><body>未找到对应的文档</body></html>"); } } else { xstring templateName = arg.GetArgString(L"template-name"); - win32::SetWindowText(GetHWND(),templateName); + SetWindowText(GetHWND(),templateName); billName = templateName; billPre = arg.GetArgString(L"template-pre"); billID = arg.GetArgString(L"template-guid"); m_EntityID = arg.GetArgString(L"EntityID"); m_EntityNo = arg.GetArgString(L"EntityNo"); m_EntityName = arg.GetArgString(L"EntityName"); + m_SupplierName = arg.GetArgString(L"SupplierName"); m_DocumentID = L""; OnHtml(arg); } @@ -817,22 +788,22 @@ xstring tools=L"<hbox class=''>"; if(agent) { - nlist = agent.SelectNodes(L".//xtoolbutton"); - nlen = nlist.length; + nlist = agent.selectNodes(L".//xtoolbutton"); + nlen = nlist.length(); for(index=0;index<nlen;index++) { ele = nlist.item(index); - xstring name = ele.selectSingleNode(L"@name").text; - xstring label = ele.selectSingleNode(L"@caption").text; + xstring name = ele.selectSingleNode(L"@name").text(); + xstring label = ele.selectSingleNode(L"@caption").text(); xstring image; xstring src = L""; if(ele.selectSingleNode(L"@image")) - image = ele.selectSingleNode(L"@image").text; + image = ele.selectSingleNode(L"@image").text(); else image = L"0 22"; if(ele.selectSingleNode(L"@src")) - src = ele.selectSingleNode(L"@src").text; + src = ele.selectSingleNode(L"@src").text(); int strLen = label.length(); int width = 60 + (strLen - 2) * 10; @@ -850,7 +821,7 @@ } //焦点激活处理函数 - int OnSetFocus(ref TNotifyEvent evt,int p) + int OnSetFocus(TEvent * evt,int p) { //重置工具条 SetAgent(); @@ -887,17 +858,18 @@ } int PrintPaper() //打印 { - //ole_print.GetHtmlDocument(); +#ifdef shouldFinish //ole_print.GetHtmlDocument(); //return 1; - _mshtml::IHTMLDocument3 doc = ole_print.GetHtmlDocument(); - _mshtml::IHTMLElementCollection rows = doc.getElementsByTagName(L"tr"); + IHTMLDocument3* doc = (IHTMLDocument3 * )ole_print.GetHtmlDocument(); + IHTMLElementCollection* rows = doc->getElementsByTagName(L"tr"); - int len = rows.length; + long len; + rows->get_length(&len); for(int i=0; i < len - 1;i++) { //oleobject v = rows.item(i,i); - _mshtml::IHTMLElement e = rows.item(i,i); - _mshtml::IHTMLElement2 e1 = e; + IHTMLElement* e = rows->item(i,i); + IHTMLElement2* e1 = e; //e.setAttribute(L"height",e1.clientHeight,0); e.setAttribute(L"height",300,0); e.Release(); @@ -905,6 +877,7 @@ } rows.Release(); doc.Release(); +#endif /* if(PaperPrint == false) { @@ -955,18 +928,17 @@ xstring guid = publiccode::GetGuid(); xstring prestr = guid.mid(0,2); - prestr = prestr.upper(); + prestr = prestr.toUpper(); content = content.replace(L"gb2312",L"utf-16",0); content = content.replace(L" ",L"[空]",0); content = content.replace(L"&",L"",0); - xml x0 = new xml; - x0.setNativePointer(xml::CreateInstance()); - x0.LoadXml(L"<Bill/>"); - x0.GetXmlDoc().documentElement.text = content; - content = x0.GetXml(); + xml x0 ; + x0.loadXML(L"<Bill/>"); + x0.documentElement().settext(content); + content = x0.xml(); int ret= xaserver::UploadData(L"bill"+prestr, guid+L".jpg", content); if(ret < 0) trace(L"error upload"); @@ -979,20 +951,20 @@ ls_xml += L"<BillName>"+ billName + L"</BillName>"; ls_xml += L"</DocumentList>"; - xml x = new xml; - x.setNativePointer(xml::CreateInstance()); - x.LoadXml(ls_xml); - xaserverarg arg = new xaserverarg; - arg.setNativePointer(xaserverarg::CreateInstance()); - arg.AddArg(L"content",x.GetXml()); + xml x; - if(url::get(L"/sale/data/DocumentList3/bill/update", arg.GetString(),x)!=1) + x.loadXML(ls_xml); + xaserverarg arg; + + arg.AddArg(L"content", x.xml()); + + if(xurl::get(L"/sale/data/DocumentList3/bill/update", arg.GetString(),x)!=1) { - xstring error = x.GetXmlDoc().text; + xstring error = x.text(); alert(L"err:"+error); return 1; } - xstring str = x.GetXmlDoc().documentElement.getAttribute(L"text"); + xstring str = x.documentElement().getAttribute(L"text"); if(str == L"true") { alert(L"保存成功!"); @@ -1007,16 +979,15 @@ int SendCtrlCmd(xcontrol xc, xstring cmd) { - win32::SendMessage(xc.GetId(),0x401,cmd,0); + SendMessage(xc.GetHWND(), 0x401, (WPARAM)cmd.c_str(), 0); return 1; } int OnRefreshData() { - xaserverarg arg = new xaserverarg; - arg.setNativePointer(GetParam()); + xaserverarg arg; xstring templateName = arg.GetArgString(L"template-name"); - win32::SetWindowText(GetHWND(),templateName); + SetWindowText(GetHWND(),templateName); OnHtml(arg); billName = templateName; billPre = arg.GetArgString(L"template-pre"); @@ -1024,6 +995,7 @@ m_EntityID = arg.GetArgString(L"EntityID"); m_EntityNo = arg.GetArgString(L"EntityNo"); m_EntityName = arg.GetArgString(L"EntityName"); + m_SupplierName = arg.GetArgString(L"SupplierName"); m_DocumentID = L""; return 1; } @@ -1032,7 +1004,7 @@ { if(comdid==L"xmSort") { - OpenWindow(L"dev:xpage[DataSort.dialog.vx]",cast(m_dataset as int)); + //OpenWindow(L"dev:xpage[DataSort.dialog.vx]",cast(m_dataset as int)); return 1; } if(comdid==L"print:PrintImmediate") @@ -1068,13 +1040,12 @@ { if(updated) { - int res = win32::MessageBox(this.GetHWND(), L"单据已制作,是否保存?",L"提示",4); + int res = MessageBox(GetHWND(), L"单据已制作,是否保存?",L"提示",4); if(res == 6)OnCmdDispatch(L"print:AddToDocumentList"); } - if(GetParam()) + if(GetWinParam()) { - xaserverarg arg1 = new xaserverarg; - arg1.setNativePointer(GetParam()); + xaserverarg arg1 = GetArg(); arg1.AddArg(L"action",L"new"); OnPrintDialog(); arg1.AddArg(L"action",L""); @@ -1125,38 +1096,38 @@ ole_print.ExecWB(27,0); return 1; alert(L"xxx"); - xml x1 = new xml; - x1.setNativePointer(xml::CreateInstance()); + xml x1 ; + xaserver::ExecXQuery(GetServerUrl(), L"[xsl.getdevobj.xq]",L"<args/>",x1); } if(comdid == L"xxx") { - xml x = new xml; - x.setNativePointer(xml::CreateInstance()); - xaserverarg arg = new xaserverarg; - arg.setNativePointer(arg.CreateInstance()); + xml x; + + xaserverarg arg; + arg.AddArg(L"strHtml",m_strHtml); - if (url::get(L"/sale/data/SysPrintTemplate/WebBrowser",arg.GetString(),x) != 1) + if (xurl::get(L"/sale/data/SysPrintTemplate/WebBrowser",arg.GetString(),x) != 1) { alert(L"数据集出错了!"); return 0; } - xstring strHtml = x.GetXml(); + xstring strHtml = x.xml(); ole_print.LoadHtml(strHtml); } return 0; } - int OnXCommand(ref TXCommandEvent evt,int p) + int OnXCommand(TEvent* evt,int p) { - return OnCmdDispatch(evt.pStrID); + return OnCmdDispatch(evt->xcommand.pStrID); } int OnAttachEvent() { - AttachEvent(L"WM_XCOMMAND",OnXCommand); - AttachEvent(L"WM_SETFOCUS",OnSetFocus); + AttachEvent(L"WM_XCOMMAND",(FEvent)& TemplatePrintViewEx::OnXCommand); + AttachEvent(L"WM_SETFOCUS", (FEvent)&TemplatePrintViewEx::OnSetFocus); //AttachEvent(L"WM_CLOSE",OnCloseOwnerWindow); return 0; @@ -1171,11 +1142,11 @@ { if(!updated) return 1; - int MB_YESNOCANCEL = 3; - int IDYES = 6; - int IDNO = 7; - int IDCANCEL = 2; - int re = win32::MessageBox(this.GetHWND(), L"单据已制作,是否保存?",L"提示:",MB_YESNOCANCEL); + //int MB_YESNOCANCEL = 3; + //int IDYES = 6; + //int IDNO = 7; + //int IDCANCEL = 2; + int re = MessageBox(GetHWND(), L"单据已制作,是否保存?",L"提示:",MB_YESNOCANCEL); if(re==IDCANCEL) return -1; if(re==IDNO) return 1; OnCmdDispatch(L"print:AddToDocumentList"); @@ -1206,10 +1177,10 @@ int onloaded() { updated = false; - if(GetParam()) + SetArg(); + if(GetWinParam()) { - xaserverarg arg = new xaserverarg; - arg.setNativePointer(GetParam()); + xaserverarg arg= GetArg(); xstring templateName = arg.GetArgString(L"template-name"); if(templateName ==L"") { @@ -1218,7 +1189,7 @@ else { - win32::SetWindowText(GetHWND(),templateName); + SetWindowText(GetHWND(),templateName); OnHtml(arg); billName = templateName; billPre = arg.GetArgString(L"template-pre"); @@ -1226,11 +1197,13 @@ m_EntityID = arg.GetArgString(L"EntityID"); m_EntityNo = arg.GetArgString(L"EntityNo"); m_EntityName = arg.GetArgString(L"EntityName"); + m_SupplierName = arg.GetArgString(L"SupplierName"); m_DocumentID = L""; } }else OnPrintDialog(); return 1; } +}; -}; \ No newline at end of file +#define _XWIN \ No newline at end of file -- Gitblit v1.9.3