xj qian
2024-06-28 50a37dbe8b73033a6295c9794c0f2f1b8db2b469
update check dlg
已添加2个文件
已修改9个文件
1832 ■■■■■ 文件已修改
jrj/ext-jrj/ext-jrj.vcxproj 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/ext-jrj/ext-jrj.vcxproj.filters 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/printview/Maint.Template.PrintEx.cpp 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/printview/Template.Print.Dialog.cpp 276 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/printview/Template.Print.ViewEx.cpp 664 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/workflow/workflow.actionlog.cpp 129 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/workflow/workflow.actionlog_vd.cpp 130 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/workflow/workflow.chkdlg.cpp 135 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/workflow/workflow.chkdlg_vd.cpp 141 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/xframe/kobject/kflowchart.hpp 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/xframe/xcontrol/xflowchart.hpp 205 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/ext-jrj/ext-jrj.vcxproj
@@ -126,7 +126,7 @@
      <SubSystem>Windows</SubSystem>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <EnableUAC>false</EnableUAC>
      <AdditionalDependencies>xarch.shape.lib;xarch.base.lib;xarch.util.lib;xarch.network.lib;xarch.xframe.lib;xarch.xcontrol.lib;xoffice.xcell.lib;xoffice.xgrid.lib;xoffice.xreport.lib;shlwapi.lib;%(AdditionalDependencies);$(CoreLibraryDependencies)</AdditionalDependencies>
      <AdditionalDependencies>xarch.shape.lib;xarch.base.lib;xarch.util.lib;xarch.network.lib;xarch.xframe.lib;xarch.xcontrol.lib;xoffice.xcell.lib;xoffice.xgrid.lib;xoffice.xreport.lib;shlwapi.lib;xoffice.xflow.lib;%(AdditionalDependencies);$(CoreLibraryDependencies)</AdditionalDependencies>
      <AdditionalLibraryDirectories>D:\xclient64</AdditionalLibraryDirectories>
    </Link>
    <PostBuildEvent>
@@ -179,6 +179,7 @@
    <ClInclude Include="..\xframe\kobject\kdwpages.hpp" />
    <ClInclude Include="..\xframe\kobject\kdwtable.hpp" />
    <ClInclude Include="..\xframe\kobject\kdwview.hpp" />
    <ClInclude Include="..\xframe\kobject\kflowchart.hpp" />
    <ClInclude Include="..\xframe\kobject\klayersheet.hpp" />
    <ClInclude Include="..\xframe\kobject\knode.hpp" />
    <ClInclude Include="..\xframe\kobject\kpage.hpp" />
@@ -223,6 +224,7 @@
    <ClInclude Include="..\xframe\xcontrol\xdwgrid.hpp" />
    <ClInclude Include="..\xframe\xcontrol\xdwpages.hpp" />
    <ClInclude Include="..\xframe\xcontrol\xdwtable.hpp" />
    <ClInclude Include="..\xframe\xcontrol\xflowchart.hpp" />
    <ClInclude Include="..\xframe\xcontrol\xlayersheet.hpp" />
    <ClInclude Include="..\xframe\xcontrol\xreport.hpp" />
    <ClInclude Include="..\xframe\xcontrol\xshtml.hpp" />
@@ -349,19 +351,19 @@
    <ClCompile Include="..\project\vindexmenu.cpp" />
    <ClCompile Include="..\project\workflow\workflow.actionlog.cpp">
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\project\workflow\workflow.actionlog_vd.cpp">
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\project\workflow\workflow.chkdlg.cpp">
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\project\workflow\workflow.chkdlg_vd.cpp">
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\xframe\src\nmemory.cpp" />
    <ClCompile Include="..\xframe\src\nstring.cpp" />
jrj/ext-jrj/ext-jrj.vcxproj.filters
@@ -282,6 +282,12 @@
    <ClInclude Include="..\xframe\xcontrol\xcell.hpp">
      <Filter>头文件</Filter>
    </ClInclude>
    <ClInclude Include="..\xframe\xcontrol\xflowchart.hpp">
      <Filter>xframe\xcontrol</Filter>
    </ClInclude>
    <ClInclude Include="..\xframe\kobject\kflowchart.hpp">
      <Filter>xframe\kobject</Filter>
    </ClInclude>
  </ItemGroup>
  <ItemGroup>
    <ClCompile Include="dllmain.cpp">
jrj/project/printview/Maint.Template.PrintEx.cpp
@@ -6,7 +6,7 @@
        int SetAgent()
        {
            string xfNodeAgentArea  = "agentarea";
            string xfNodeAgentArea  = L"agentarea";
            xnode anode = GetAgentNode(xfNodeAgentArea);
            if(m_agentNode)
            {
@@ -15,7 +15,7 @@
            else
            {
                msxml::IXMLDOMElement xframeElement =  GetElement();
                msxml::IXMLDOMElement agent = xframeElement.selectSingleNode("agent/"+xfNodeAgentArea+"[1]/*");
                msxml::IXMLDOMElement agent = xframeElement.selectSingleNode(L"agent/"+xfNodeAgentArea+L"[1]/*");
                if(agent)
                {
                    string s = agent.xml;
@@ -42,24 +42,24 @@
        //命令发布函数
        int OnCmdDispatch(string comdid)
        {
            if(comdid.left(3) == "IK_")
            if(comdid.left(3) == L"IK_")
            {
                string cmd = comdid.mid(3, comdid.length());
                SendCtrlCmd(GetControl("cell"),cmd);
                SendCtrlCmd(GetControl(L"cell"),cmd);
                return 1;
            }
            else if(comdid=="xmFileOpen")
            else if(comdid==L"xmFileOpen")
            {
                cell.OpenFile();
                cell.Redraw();
                return 1;
            }
            else if(comdid=="xmFileSave")
            else if(comdid==L"xmFileSave")
            {
                cell.SaveFile();
                return 1;
            }
            else if(comdid=="xmFileSaveAs")
            else if(comdid==L"xmFileSaveAs")
            {
                cell.SaveFileAs();
                return 1;
@@ -76,14 +76,14 @@
        int OnAttachEvent()
        {
            //绑定工具条点击事件
            AttachEvent("WM_XCOMMAND",OnXCommand);
            AttachEvent(L"WM_XCOMMAND",OnXCommand);
            //获取焦点事件,用于重置工具条
            AttachEvent("WM_SETFOCUS",OnSetFocus);
            AttachEvent(L"WM_SETFOCUS",OnSetFocus);
        }
        
        int onload()
        {
            cell = GetControl("cell");
            cell = GetControl(L"cell");
            SetAgent();            
        
            OnAttachEvent();    
@@ -91,10 +91,10 @@
            if(GetParam())
            {
                args = GetParam();
                cell.openUrl("/sale/data/SysPrintTemplate/getdevxsl",args);
                cell.openUrl(L"/sale/data/SysPrintTemplate/getdevxsl",args);
            }
            else
                args ="";
                args =L"";
            
            return 1;
        }
jrj/project/printview/Template.Print.Dialog.cpp
@@ -14,7 +14,7 @@
        int OnHtml()
        {
            string s1="<catalog>"+
            string s1=L"<catalog>"+
             "   <book id='bk101'>"+
             "     <author>Gambardella, Matthew</author>"+
             "     <title>XML Developer's Guide</title>"+
@@ -30,7 +30,7 @@
             "     <genre>Fantasy</genre>"+
             "     <price>5.95</price>"+
             "     <publish_date>2000-12-16</publish_date>"+
             "     <description>A former architect battles corporate zombies, "+
             "     <description>A former architect battles corporate zombies, L"+
             "     an evil sorceress, and her own childhood to become queen "+
             "     of the world.</description>"+
             "  </book>"+
@@ -40,7 +40,7 @@
            x.LoadXml(s1);
//trace(x.GetXml());
            //string s2="<?xml version='1.0'?>"+
            //string s2=L"<?xml version='1.0'?>"+
            string s2=
            "<xsl:stylesheet version='1.0'"+
            "                xmlns:xsl='http://www.w3.org/1999/XSL/Transform' >"+
@@ -87,7 +87,7 @@
        int OnRetrieve()
        {
            string username = publiccode::GetUser().name;
            if(username != "admin" && m_Dir != username )
            if(username != L"admin" && m_Dir != username )
            {
                bupdate = false;
            }else
@@ -98,10 +98,10 @@
            x.setNativePointer(xml::CreateInstance());
            xaserverarg arg = new xaserverarg;
            arg.setNativePointer(arg.CreateInstance());    
            arg.AddArg("Entity",m_EntityName);
            arg.AddArg("Dir",m_Dir);
            arg.AddArg(L"Entity",m_EntityName);
            arg.AddArg(L"Dir",m_Dir);
            dw_list.Reset();
            if (url::get("/sale/data/SysPrintTemplate/listDialog",arg.GetString(),x) != 1)
            if (url::get(L"/sale/data/SysPrintTemplate/listDialog",arg.GetString(),x) != 1)
            {
                trace(x.GetXmlDoc().text);
                return -1;
@@ -119,7 +119,7 @@
        
        int OnNewTempl()
        {
            OpenWindow("dev:xpage[Maint.Template.Print.vx]");
            OpenWindow(L"dev:xpage[Maint.Template.Print.vx]");
            return 1;
        }
                
@@ -128,20 +128,20 @@
            int row =  dw_list.GetRow();
            if(row<0 || row>dw_list.GetRowCount()) 
            {
                alert("请选择要维护的模板!");
                alert(L"请选择要维护的模板!");
                return 1;
            }
            else
            {
                msxml::IXMLDOMElement ele = dw_list.GetRowElement(row);    
                string sguid = ele.selectSingleNode("ID").text;
                string sTemplName = ele.selectSingleNode("TemplName").text;
                //string sFile = m_filePath + sguid+".xsl";
                string sFile = m_filePath + ele.selectSingleNode("urlPath").text;
                arg_param.AddArg("xsl",sFile);
                arg_param.AddArg("return","cancel");
                string sguid = ele.selectSingleNode(L"ID").text;
                string sTemplName = ele.selectSingleNode(L"TemplName").text;
                //string sFile = m_filePath + sguid+L".xsl";
                string sFile = m_filePath + ele.selectSingleNode(L"urlPath").text;
                arg_param.AddArg(L"xsl",sFile);
                arg_param.AddArg(L"return",L"cancel");
                
                OpenWindow("dev:xpage[Maint.Template.Print.vx]",cast(arg_param.GetString() as int));
                OpenWindow(L"dev:xpage[Maint.Template.Print.vx]",cast(arg_param.GetString() as int));
                CloseWindow();
            
            }            
@@ -154,19 +154,19 @@
        }
        int OnAddTempl()
        {
            if (m_Dir=="")
            if (m_Dir==L"")
            {
                alert("请选择模板目录!");
                alert(L"请选择模板目录!");
                return 0;
            }
            string sguid = publiccode::GetGuid();
            string sname= sguid +".xsl";
            string suri= "rpttemplate"+"\\"+m_EntityName; //rpttemplate\SO
            //suri = "supplier00";
            string ret = xaserver::UploadFile(suri, sname, this.GetHWND(),"",false);
            if (ret == "-1")
            string sname= sguid +L".xsl";
            string suri= L"rpttemplate"+L"\\"+m_EntityName; //rpttemplate\SO
            //suri = L"supplier00";
            string ret = xaserver::UploadFile(suri, sname, this.GetHWND(),L"",false);
            if (ret == L"-1")
            {
                alert("上传的文件没选择!");
                alert(L"上传的文件没选择!");
                return 1;
            }
            else
@@ -175,25 +175,25 @@
                x.setNativePointer(xml::CreateInstance());                
                xaserverarg args = new xaserverarg;
                args.setNativePointer(args.CreateInstance());        
                args.AddArg("sID",sguid);
                args.AddArg("sEntity",m_EntityName);
                args.AddArg("sDir",m_Dir);
                args.AddArg("urlPath", sname);
                args.AddArg(L"sID",sguid);
                args.AddArg(L"sEntity",m_EntityName);
                args.AddArg(L"sDir",m_Dir);
                args.AddArg(L"urlPath", sname);
                //alert(m_Dir);
                while(ret.find("\\",0)>=0)
                    ret = ret.mid(ret.find("\\",0) + 1,9999);
                while(ret.find(L"\\",0)>=0)
                    ret = ret.mid(ret.find(L"\\",0) + 1,9999);
                
                args.AddArg("sTemplName",ret);
                args.AddArg(L"sTemplName",ret);
                //trace(args.GetString());
                if (url::get("/sale/data/SysPrintTemplate/Save",args.GetString(),x) != 1)
                if (url::get(L"/sale/data/SysPrintTemplate/Save",args.GetString(),x) != 1)
                {
                    trace("error:"+x.GetXml());
                    alert("保存出错了!");
                    trace(L"error:"+x.GetXml());
                    alert(L"保存出错了!");
                    return 1;
                }                        
                else
                {    
                    alert("上传模板成功!");
                    alert(L"上传模板成功!");
                    OnRetrieve();
                }                
            }
@@ -206,29 +206,29 @@
            int row =  dw_list.GetRow();
            if(row<0 || row>dw_list.GetRowCount()) 
            {
                alert("请选择要删除的模板!");
                alert(L"请选择要删除的模板!");
                return 0;
            }
            else
            {
                if (win32::MessageBox(GetHWND(),"确定要删除选中的模板?","提示",1) == 2)
                if (win32::MessageBox(GetHWND(),L"确定要删除选中的模板?",L"提示",1) == 2)
                    return 0;                    
                msxml::IXMLDOMElement ele = dw_list.GetRowElement(row);            
                string sguid = ele.selectSingleNode("ID").text;
                string sguid = ele.selectSingleNode(L"ID").text;
                xml x=new xml;
                x.setNativePointer(xml::CreateInstance());                
                xaserverarg args = new xaserverarg;
                args.setNativePointer(args.CreateInstance());        
                args.AddArg("sID",sguid);
                if (url::get("/sale/data/SysPrintTemplate/Delete",args.GetString(),x) != 1)
                args.AddArg(L"sID",sguid);
                if (url::get(L"/sale/data/SysPrintTemplate/Delete",args.GetString(),x) != 1)
                {
                    trace("error:"+x.GetXml());
                    alert("删除出错了!");
                    trace(L"error:"+x.GetXml());
                    alert(L"删除出错了!");
                    return 0;
                }                        
                else
                {    
                    alert("删除成功!");
                    alert(L"删除成功!");
                    OnRetrieve();
                }
            }
@@ -255,11 +255,11 @@
        int OnOpenDocument()
        {
            if(dw_doclist.GetRowCount() < 1) return 1;
            string documentid = dw_doclist.GetRowElement(dw_doclist.GetRow()).getAttribute("guid");
            string documentid = dw_doclist.GetRowElement(dw_doclist.GetRow()).getAttribute(L"guid");
            //string billid = dw_docList
            arg_param.AddArg("DocumentID",documentid);
            arg_param.AddArg("return","ok");
            arg_param.AddArg("action","open");
            arg_param.AddArg(L"DocumentID",documentid);
            arg_param.AddArg(L"return",L"ok");
            arg_param.AddArg(L"action",L"open");
            CloseWindow();
            return 1;
        }
@@ -269,35 +269,35 @@
            int row =  dw_list.GetRow();
            if(row<0 || row>dw_list.GetRowCount()) 
            {
                alert("请选择要打印的模板!");
                alert(L"请选择要打印的模板!");
                return 1;
            }
            else
            {
                msxml::IXMLDOMElement ele = dw_list.GetRowElement(row);    
                trace("\r\n---------------");
                trace(L"\r\n---------------");
                trace(ele.xml);
            
                string sguid = ele.selectSingleNode("ID").text;
                string pre = "";
                if(ele.selectSingleNode("TemplPre")) pre = ele.selectSingleNode("TemplPre").text;
                string sTemplName = ele.selectSingleNode("TemplName").text;
                //string sFile = m_filePath + sguid+".xsl";
                string sguid = ele.selectSingleNode(L"ID").text;
                string pre = L"";
                if(ele.selectSingleNode(L"TemplPre")) pre = ele.selectSingleNode(L"TemplPre").text;
                string sTemplName = ele.selectSingleNode(L"TemplName").text;
                //string sFile = m_filePath + sguid+L".xsl";
                trace(sTemplName);
                string sFile = m_filePath + ele.selectSingleNode("urlPath").text;
                arg_param.AddArg("xsl",sFile);
                arg_param.AddArg("return","ok");
                arg_param.AddArg("template-name",sTemplName);
                arg_param.AddArg("template-guid",sguid);
                arg_param.AddArg("template-pre",pre);
                arg_param.AddArg("action","new");
                string sFile = m_filePath + ele.selectSingleNode(L"urlPath").text;
                arg_param.AddArg(L"xsl",sFile);
                arg_param.AddArg(L"return",L"ok");
                arg_param.AddArg(L"template-name",sTemplName);
                arg_param.AddArg(L"template-guid",sguid);
                arg_param.AddArg(L"template-pre",pre);
                arg_param.AddArg(L"action",L"new");
                trace(arg_param.GetString());
                CloseWindow();
                /*xaserver::CreateDirectory("C:/Temp");
                int openRet = xaserver::DownLoadFile(GetServerUrl(),m_filePath+file,sTemplName,"C:/Temp/"+sTemplName);
                /*xaserver::CreateDirectory(L"C:/Temp");
                int openRet = xaserver::DownLoadFile(GetServerUrl(),m_filePath+file,sTemplName,L"C:/Temp/"+sTemplName);
                if(openRet < 0)
                {
                    alert("文件打开失败!");
                    alert(L"文件打开失败!");
                    return 0;
                }
                
@@ -307,7 +307,7 @@
                int FILE_SHARE_WRITE = 0x00000002;
                int OPEN_EXISTING = 3;
                int FILE_ATTRIBUTE_ARCHIVE =0x00000020;
                int hFile = xwin::CreateFile("C:/Temp/"+sTemplName,GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,0,OPEN_EXISTING,0,0);
                int hFile = xwin::CreateFile(L"C:/Temp/"+sTemplName,GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,0,OPEN_EXISTING,0,0);
                if (hFile >0)
                {
                    //int GMEM_MOVEABLE=0x0002;
@@ -318,8 +318,8 @@
                    //int SizeReadWrite;
                    //xwin::ReadFile(hFile,pMemory,MEMSIZE - 1,SizeReadWrite,0);
                    int filesize = xwin::GetFileSize(hFile,0); 
                trace("filesize = %d",filesize);
                    string buffer = "".space(filesize+1);
                trace(L"filesize = %d",filesize);
                    string buffer = L"".space(filesize+1);
                    int readsize = new int;
                    xwin::ReadFile(hFile,buffer,filesize,readsize,0); 
                    trace(buffer);
@@ -327,10 +327,10 @@
                    //GlobalUnlock(pMemory);
                    //GlobalFree(hMemory);
                }    */            
                /*openRet = xwin::ShellExecute(0,"open","C:/Temp/"+sTemplName,"","",5);
                /*openRet = xwin::ShellExecute(0,L"open",L"C:/Temp/"+sTemplName,L"",L"",5);
                if(openRet < 32)
                {
                    alert("文件打开失败2!");
                    alert(L"文件打开失败2!");
                    return 0;
                }*/            
            }            
@@ -346,18 +346,18 @@
            
            xaserverarg arg = new xaserverarg;
            arg.setNativePointer(xaserverarg::CreateInstance());
            arg.AddArg("content",x.GetXml());
            arg.AddArg(L"content",x.GetXml());
            
            if (url::get("/sale/data/SysPrintTemplate/updateinfo",arg.GetString(),x) != 1)
            if (url::get(L"/sale/data/SysPrintTemplate/updateinfo",arg.GetString(),x) != 1)
            {
                trace("error:"+x.GetXml());
                alert("保存出错了!");
                trace(L"error:"+x.GetXml());
                alert(L"保存出错了!");
                return 1;
            }                        
            else
            {    
                dw_list.ResetUpdateStatus();
                alert("保存成功!");
                alert(L"保存成功!");
            }                
            return 1;
@@ -366,7 +366,7 @@
        int PreOnCmdDispatch(string comdid)
        {
            //返回0——不在执行以下代码;返回其他——执行以下代码。
            if(comdid.left(8) == "xmPanel:"){
            if(comdid.left(8) == L"xmPanel:"){
                string no = comdid.mid(8, 99);
                //int id = no.toInt();
@@ -375,24 +375,24 @@
                x.LoadXml(strNode);
                msxml::IXMLDOMDocument doc= x.GetXmlDoc();
                msxml::IXMLDOMElement e = doc.documentElement;
                string slable =e.selectSingleNode("//xtoolbutton[@name='"+comdid+"']/@caption").text;
                string slable =e.selectSingleNode(L"//xtoolbutton[@name='"+comdid+L"']/@caption").text;
                m_Dir = slable;
                OnRetrieve();
            
                return 1;
            }
            if (comdid=="xmAddDir") return OnAddDir();
            if (comdid=="xmAddTempl" && bupdate) return OnAddTempl();
            if (comdid=="xmDelTempl" && bupdate) return OnDelTempl();
            if (comdid=="xmMaintTempl" && bupdate) return OnMaintTempl();
            if (comdid=="xmNewTempl" && bupdate) return OnNewTempl();
            if (comdid=="xmHtml") return OnHtml();
            if (comdid=="xmOk") return OnOk();
            if (comdid=="xmSave") return OnSave();
            if(comdid=="xmOpen") return OnOpenDocument();
            else if (comdid=="xmCancel")
            if (comdid==L"xmAddDir") return OnAddDir();
            if (comdid==L"xmAddTempl" && bupdate) return OnAddTempl();
            if (comdid==L"xmDelTempl" && bupdate) return OnDelTempl();
            if (comdid==L"xmMaintTempl" && bupdate) return OnMaintTempl();
            if (comdid==L"xmNewTempl" && bupdate) return OnNewTempl();
            if (comdid==L"xmHtml") return OnHtml();
            if (comdid==L"xmOk") return OnOk();
            if (comdid==L"xmSave") return OnSave();
            if(comdid==L"xmOpen") return OnOpenDocument();
            else if (comdid==L"xmCancel")
            {
                arg_param.AddArg("return","cancel");
                arg_param.AddArg(L"return",L"cancel");
                CloseWindow();
                return 1;
            }
@@ -402,13 +402,13 @@
        
        int PostOnAttachEvent()
        {
            //AttachEvent("dw_list","DWV_ROWFOCUSCHANGED",OnRowChanged);
            //AttachEvent("dw_list","DWV_CLICKED",OnClicked);
            //AttachEvent("dw_list","DWV_RCLICKED",OnRClicked);
            //AttachEvent("dw_list","DWV_ITEMCHANGED",OnItemChanged);
            //AttachEvent("dw_list","DWV_CHILDCONTENT",OnChildContent);
            AttachEvent("dw_doclist","DWV_DOUBLECLICKED",OnDocListDoubleClicked);
            AttachEvent("dw_list","DWV_DOUBLECLICKED",OnDoubleClicked);
            //AttachEvent(L"dw_list",L"DWV_ROWFOCUSCHANGED",OnRowChanged);
            //AttachEvent(L"dw_list",L"DWV_CLICKED",OnClicked);
            //AttachEvent(L"dw_list",L"DWV_RCLICKED",OnRClicked);
            //AttachEvent(L"dw_list",L"DWV_ITEMCHANGED",OnItemChanged);
            //AttachEvent(L"dw_list",L"DWV_CHILDCONTENT",OnChildContent);
            AttachEvent(L"dw_doclist",L"DWV_DOUBLECLICKED",OnDocListDoubleClicked);
            AttachEvent(L"dw_list",L"DWV_DOUBLECLICKED",OnDoubleClicked);
            return 1;    
        }
@@ -417,12 +417,12 @@
            PUser puser = new PUser;
            puser =  publiccode::GetUser();
            string susername = puser.name;
            if (susername !="admin")
            if (susername !=L"admin")
            {
                string xfNodeAgentArea  = "DirButton";
                string xfNodeAgentArea  = L"DirButton";
                xnode anode = GetAgentNode(xfNodeAgentArea);
                msxml::IXMLDOMElement xframeElement =  GetElement();
                string tools="<vbox name='DirButton' height='48' />";
                string tools=L"<vbox name='DirButton' height='48' />";
                SetAgentNodeContent(anode, tools);
            }
            return 1;
@@ -437,10 +437,10 @@
            x.setNativePointer(xml::CreateInstance());
            xaserverarg arg = new xaserverarg;
            arg.setNativePointer(arg.CreateInstance());    
            arg.AddArg("EntityName",m_EntityName,"");
            arg.AddArg("EntityID",m_EntityID,"");
            arg.AddArg("susername",susername,""); //
            if (url::get("/sale/data/SysPrintTemplate/Dir",arg.GetString(),x) != 1)
            arg.AddArg(L"EntityName",m_EntityName,L"");
            arg.AddArg(L"EntityID",m_EntityID,L"");
            arg.AddArg(L"susername",susername,L""); //
            if (url::get(L"/sale/data/SysPrintTemplate/Dir",arg.GetString(),x) != 1)
            {
                trace(x.GetXmlDoc().text);
                return -1;
@@ -448,29 +448,29 @@
            {
                string s = x.GetXml();
            }
            msxml::IXMLDOMNodeList  nlist = x.GetXmlDoc().selectNodes("//Entity");
            msxml::IXMLDOMNodeList  nlist = x.GetXmlDoc().selectNodes(L"//Entity");
            int i;
            int nlen = nlist.length;
            string toolStr = "<vbox name='Dir'>";
            string toolStr = L"<vbox name='Dir'>";
            string deptName= publiccode::GetUser().deptname;
            if(deptName=="跟单部" && m_EntityName=="GDN3"){
            if(deptName==L"跟单部" && m_EntityName==L"GDN3"){
                for(i=2;    i<nlen;    i++)
                {
                    msxml::IXMLDOMElement e1 = nlist.item(i);
                    string sDir1 = e1.selectSingleNode("@Dir").text;
                    string str1 = "<xtoolbutton image='15' caption='"+sDir1+"' height='24' name='xmPanel:"+i.toString()+"' style='background-color:none #ceecce none #ffffff'/>";
                    string sDir1 = e1.selectSingleNode(L"@Dir").text;
                    string str1 = L"<xtoolbutton image='15' caption='"+sDir1+L"' height='24' name='xmPanel:"+i.toString()+L"' style='background-color:none #ceecce none #ffffff'/>";
            
                    toolStr += str1;
                    if (i==2) 
                        m_Dir = sDir1;
                }
            }else if(deptName.find("业务")>=0 && m_EntityName=="GDN3"  )
            }else if(deptName.find(L"业务")>=0 && m_EntityName==L"GDN3"  )
            {
                for(i=1;    i<2;    i++)
                {
                    msxml::IXMLDOMElement e2 = nlist.item(i);
                    string sDir2 = e2.selectSingleNode("@Dir").text;
                    string str2 = "<xtoolbutton image='15' caption='"+sDir2+"' height='24' name='xmPanel:"+i.toString()+"' style='background-color:none #ceecce none #ffffff'/>";
                    string sDir2 = e2.selectSingleNode(L"@Dir").text;
                    string str2 = L"<xtoolbutton image='15' caption='"+sDir2+L"' height='24' name='xmPanel:"+i.toString()+L"' style='background-color:none #ceecce none #ffffff'/>";
                    
                    toolStr += str2;
                    if (i==1) 
@@ -479,8 +479,8 @@
                for(i=4;    i<nlen;    i++)
                {
                    msxml::IXMLDOMElement e3 = nlist.item(i);
                    string sDir3 = e3.selectSingleNode("@Dir").text;
                    string str3 = "<xtoolbutton image='15' caption='"+sDir3+"' height='24' name='xmPanel:"+i.toString()+"' style='background-color:none #ceecce none #ffffff'/>";
                    string sDir3 = e3.selectSingleNode(L"@Dir").text;
                    string str3 = L"<xtoolbutton image='15' caption='"+sDir3+L"' height='24' name='xmPanel:"+i.toString()+L"' style='background-color:none #ceecce none #ffffff'/>";
                    
                    toolStr += str3;
                }
@@ -488,8 +488,8 @@
                for(i=0;    i<nlen;    i++)
                {
                    msxml::IXMLDOMElement e = nlist.item(i);
                    string sDir = e.selectSingleNode("@Dir").text;
                    string str = "<xtoolbutton image='15' caption='"+sDir+"' height='24' name='xmPanel:"+i.toString()+"' style='background-color:none #ceecce none #ffffff'/>";
                    string sDir = e.selectSingleNode(L"@Dir").text;
                    string str = L"<xtoolbutton image='15' caption='"+sDir+L"' height='24' name='xmPanel:"+i.toString()+L"' style='background-color:none #ceecce none #ffffff'/>";
                    
                    toolStr += str;
                    if (i==0) 
@@ -497,10 +497,10 @@
                }
            }    
                
            toolStr += "</vbox>";
            toolStr += L"</vbox>";
            strNode = toolStr;
            //trace(toolStr);
            xnode anode = GetAgentNode("Dir");
            xnode anode = GetAgentNode(L"Dir");
            xwin::SetAgentNodeContent(anode,toolStr) ;
            
            OnRetrieve();
@@ -510,35 +510,35 @@
        int OnInit()
        {         
            SetAgent();
            dw_list = this.GetControl("dw_list");
            dw_list.openUrl("/sale/view/view.base/template/PrintView/listDialog");
            dw_list = this.GetControl(L"dw_list");
            dw_list.openUrl(L"/sale/view/view.base/template/PrintView/listDialog");
            dw_list.SetReadOnly(true);
            dw_list.SetSelectionMode(4);
            dw_list.SetColumnState("ID",false);
            dw_list.SetColumnState(L"ID",false);
            dw_doclist = GetControl("dw_doclist");
            dw_doclist.openUrl("/sale/view/GDN/template/doclist");
            dw_doclist = GetControl(L"dw_doclist");
            dw_doclist.openUrl(L"/sale/view/GDN/template/doclist");
            string sUrl = GetServerUrl();
            sUrl = sUrl.mid(0, sUrl.length() - 19);
            m_filePath = "/business/rpttemplate";
            m_filePath = L"/business/rpttemplate";
            arg_param = new xaserverarg;
            if (GetParam())
            {
                int p = GetParam();
                arg_param.setNativePointer(p);
                m_EntityName = arg_param.GetArgString("EntityName");
                m_EntityID = arg_param.GetArgString("EntityID");
                m_EntityNo = arg_param.GetArgString("EntityNo");
                m_EntityName = arg_param.GetArgString(L"EntityName");
                m_EntityID = arg_param.GetArgString(L"EntityID");
                m_EntityNo = arg_param.GetArgString(L"EntityNo");
            
                xaserverarg arg = new xaserverarg;
                arg.setNativePointer(xaserverarg::CreateInstance());
                arg.AddArg("EntityName", m_EntityName);
                arg.AddArg("EntityID", m_EntityID);
                arg.AddArg("EntityNo", m_EntityNo);
                arg.AddArg(L"EntityName", m_EntityName);
                arg.AddArg(L"EntityID", m_EntityID);
                arg.AddArg(L"EntityNo", m_EntityNo);
                xml x =new xml;
                x.setNativePointer(xml::CreateInstance());
                if(url::get("/sale/data/DocumentList3/bill/doclist", arg.GetString(),x)!=1)
                if(url::get(L"/sale/data/DocumentList3/bill/doclist", arg.GetString(),x)!=1)
                {
                    string error = x.GetXmlDoc().text;
                    trace(error);
@@ -551,12 +551,12 @@
            else
            {
                arg_param.setNativePointer(arg_param.CreateInstance());    
                m_EntityName = "SO";
                m_EntityID ="00000000-0000-0000-0000-000000000000";
                m_EntityName = L"SO";
                m_EntityID =L"00000000-0000-0000-0000-000000000000";
            }
            m_Dir = "";
            m_filePath = m_filePath + "/" + m_EntityName+"/";
            m_Dir = L"";
            m_filePath = m_filePath + L"/" + m_EntityName+L"/";
            //trace(m_filePath);
            
            CreateDir();
@@ -570,9 +570,9 @@
        
        /*if (GetParam())
        {
            string action = arg_param.GetArgString("action");
            if(action=="open" || (action=="" && dw_doclist.GetRowCount() > 0))
                SwitchLayer("sheet2","frame");
            string action = arg_param.GetArgString(L"action");
            if(action==L"open" || (action==L"" && dw_doclist.GetRowCount() > 0))
                SwitchLayer(L"sheet2",L"frame");
        }
        */
@@ -585,9 +585,9 @@
        
        /*if (GetParam())
        {
            string action = arg_param.GetArgString("action");
            if(action=="open" || (action=="" && dw_doclist.GetRowCount() > 0))
                SwitchLayer("sheet2","frame");
            string action = arg_param.GetArgString(L"action");
            if(action==L"open" || (action==L"" && dw_doclist.GetRowCount() > 0))
                SwitchLayer(L"sheet2",L"frame");
        }
        */
        return 1;
jrj/project/printview/Template.Print.ViewEx.cpp
@@ -78,7 +78,7 @@
    string GetModulePath()
    {
        string str ="";
        string str =L"";
        str = str.space(255);
        GetModuleFileName(0,str,250);
        PathRemoveFileSpec(str);
@@ -86,11 +86,11 @@
    }
    string GetModuleTmpPath()
    {
        string str ="";
        string str =L"";
        str = str.space(255);
        GetModuleFileName(0,str,250);
        PathRemoveFileSpec(str);
        string tmp = str + "\\Temp";
        string tmp = str + L"\\Temp";
        xaserver::CreateDirectory(tmp);
        return tmp;
    }
@@ -102,7 +102,7 @@
        szFileName[0] = 0;
        szPath[0] = 0;
        
        if(initFileName !="")
        if(initFileName !=L"")
        {
            int len = initFileName.length();
            char[] tmp = initFileName;
@@ -128,7 +128,7 @@
        ofn.nMaxFile = 255;
        ofn.lpstrFileTitle = szFileName;
        ofn.nMaxFileTitle = 255;
        ofn.lpstrTitle = "请指定文件名";
        ofn.lpstrTitle = L"请指定文件名";
        ofn.lpstrDefExt = ext; 
            //"jpg";
        ofn.lpstrInitialDir = 0;
@@ -152,58 +152,58 @@
    int OnExport()
    {
        string pre = billPre;
        if(pre=="")
        if(pre==L"")
        {
            pre = m_EntityName;
            if(m_EntityName=="SaleOrder") pre="PI";
            if(m_EntityName=="GDN3")pre="INV";
            if(m_EntityName==L"SaleOrder") pre=L"PI";
            if(m_EntityName==L"GDN3")pre=L"INV";
        }
        string file1 =  GetSaveFileName(pre+m_EntityNo+".xlsx",
        string file1 =  GetSaveFileName(pre+m_EntityNo+L".xlsx",
            "Excel1文件(*.xlsx)\0*.xlsx;*.xls\0Excel97文件(*.xls)\0*.xls\0PDF文件(*.pdf)\0*.pdf\0",
            "xlsx");
        if(file1 =="") return 1;
        if(file1 ==L"") return 1;
        
        if(win32::PathFileExists(file1))
        {
            int res = win32::MessageBox(this.GetHWND(), "文件已经存在,是否覆盖?","提示",4);
            int res = win32::MessageBox(this.GetHWND(), L"文件已经存在,是否覆盖?",L"提示",4);
            if(res != 6) return 1;
        }
        
        trace("\r\n link excel");
        trace(L"\r\n link excel");
        excel = new cexcel;
        int hexcel = cexcel::CreateInstance();
        excel.setNativePointer(hexcel);
        if(hexcel == 0)
        {
            alert("不能连接Excel");
            alert(L"不能连接Excel");
            return 1;
        }
        string gid =  publiccode::GetGuid();
        string filename= pre+m_EntityNo+"_.htm";
        xutil::SaveToFile(GetModuleTmpPath() + "\\"+ filename, htmlStr,"","","");
        trace("\r\n excel to open");
        excel .OpenDocument(GetModuleTmpPath() + "\\"+ filename);
        trace("\r\n trans shape");
        string filename= pre+m_EntityNo+L"_.htm";
        xutil::SaveToFile(GetModuleTmpPath() + L"\\"+ filename, htmlStr,L"",L"",L"");
        trace(L"\r\n excel to open");
        excel .OpenDocument(GetModuleTmpPath() + L"\\"+ filename);
        trace(L"\r\n trans shape");
        //excel .put_Visible(true);
        excel.TransShape();
        trace("\r\n save to tmp excel file");
        if(file1.find(".xls"))
        trace(L"\r\n save to tmp excel file");
        if(file1.find(L".xls"))
        {
            if(win32::PathFileExists(GetModuleTmpPath() + "\\"+ pre+m_EntityNo+"_.xls"))
                DeleteFile(GetModuleTmpPath() + "\\"+ pre+m_EntityNo+"_.xls");
            excel.SaveToFile(GetModuleTmpPath() + "\\"+ pre+m_EntityNo+"_.xls");
            //alert(GetModuleTmpPath() + "\\"+ pre+m_EntityNo+"_.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");
            //alert(GetModuleTmpPath() + L"\\"+ pre+m_EntityNo+L"_.xls");
        }
        else 
        {
            if(win32::PathFileExists(GetModuleTmpPath() + "\\"+ pre+m_EntityNo+"_.xlsx"))
                DeleteFile(GetModuleTmpPath() + "\\"+ pre+m_EntityNo+"_.xlsx");
            excel.SaveToFile(GetModuleTmpPath() + "\\"+ pre+m_EntityNo+"_.xlsx");
            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");
        }
        
        trace("\r\n save to excel file");
        if(win32::PathFileExists(file1)) //GetModuleTmpPath() + "\\"+ pre+m_EntityNo+"_.xlsx"))
        trace(L"\r\n save to excel file");
        if(win32::PathFileExists(file1)) //GetModuleTmpPath() + L"\\"+ pre+m_EntityNo+L"_.xlsx"))
            DeleteFile(file1);
        excel.SaveToFile(file1);
        
@@ -219,17 +219,17 @@
        
        string gid =  publiccode::GetGuid();
        string pre = m_EntityName;
        if(m_EntityName=="SaleOrder") pre="PI";
        if(m_EntityName=="GDN3")pre="INV";
        string filename= pre+m_EntityNo+".htm";
        string filenameex= pre+m_EntityNo+".xlsx";
        xutil::SaveToFile(GetModuleTmpPath() + "\\"+ filename, htmlStr,"","","");
        excel .OpenDocument(GetModuleTmpPath() + "\\"+ filename);
        if(m_EntityName==L"SaleOrder") pre=L"PI";
        if(m_EntityName==L"GDN3")pre=L"INV";
        string filename= pre+m_EntityNo+L".htm";
        string filenameex= pre+m_EntityNo+L".xlsx";
        xutil::SaveToFile(GetModuleTmpPath() + L"\\"+ filename, htmlStr,L"",L"",L"");
        excel .OpenDocument(GetModuleTmpPath() + L"\\"+ filename);
        //excel.put_Visible(true);
        excel.TransShape();
        if(win32::PathFileExists(GetModuleTmpPath() + "\\"+ filenameex))
            DeleteFile(GetModuleTmpPath() + "\\"+ filenameex);
        excel.SaveToFile(GetModuleTmpPath() + "\\"+ filenameex);
        if(win32::PathFileExists(GetModuleTmpPath() + L"\\"+ filenameex))
            DeleteFile(GetModuleTmpPath() + L"\\"+ filenameex);
        excel.SaveToFile(GetModuleTmpPath() + L"\\"+ filenameex);
        excel.put_Visible(true);
        excel.Release(excel.ptr_native_);
@@ -238,71 +238,71 @@
    string getfilePath()
    {
        string path=GetModulePath()+"\\resource\\image";
        string filename="contract.jpg";
        filename="sign.png";
        filename="jrj_maersk.png";
        filename="HomeDecorSign.png";
        xaserver::DownLoadFile(GetServerUrl(),"/business/rpttemplate/"+filename,"",path+"\\"+filename);
        filename="HomeDecorLogo.jpg";
        xaserver::DownLoadFile(GetServerUrl(),"/business/rpttemplate/"+filename,"",path+"\\"+filename);
        string path=GetModulePath()+L"\\resource\\image";
        string filename=L"contract.jpg";
        filename=L"sign.png";
        filename=L"jrj_maersk.png";
        filename=L"HomeDecorSign.png";
        xaserver::DownLoadFile(GetServerUrl(),L"/business/rpttemplate/"+filename,L"",path+L"\\"+filename);
        filename=L"HomeDecorLogo.jpg";
        xaserver::DownLoadFile(GetServerUrl(),L"/business/rpttemplate/"+filename,L"",path+L"\\"+filename);
        return path;
    }
    
    string replaceInnerElement(string html)
    {
        string str = html;
        if(str.find("[$element:")<0) return str;
        if(str.find(L"[$element:")<0) return str;
        
        int len = 0;
        int pos = 0;
        int pos1 = 0;
        string pre="";
        string left="";
        string right="";
        string tag="";
        string pre=L"";
        string left=L"";
        string right=L"";
        string tag=L"";
        
        len = "[$element:".length();
        len = L"[$element:".length();
        while(true)
        {
            pos = str.find("[$element:");
            pos = str.find(L"[$element:");
            if(pos < 0) break;
            left = str.left(pos);
            right = str.mid(pos+ len,999999);
            
            pos1 = right.find("]");
            pos1 = right.find(L"]");
            if(pos1>=0)
            {
                tag = right.left(pos1);
                if(tag.right(1)=="$") tag=tag.left(tag.length() - 1);
                pre = pre + left + "<" + tag +">";
                if(tag.right(1)==L"$") tag=tag.left(tag.length() - 1);
                pre = pre + left + L"<" + tag +L">";
                str = right.mid(pos1+ 1,999999);
            }else
            {
                pre = pre + left+"<";
                pre = pre + left+L"<";
                str = right;
            }
        }
        
        str = pre + str;
        pre = "";
        len = "[/$element:".length();
        pre = L"";
        len = L"[/$element:".length();
        while(true)
        {
            pos = str.find("[/$element:");
            pos = str.find(L"[/$element:");
            if(pos < 0) break;
            left = str.left(pos);
            right = str.mid(pos+ len,999999);
            pos1 = right.find("]");
            pos1 = right.find(L"]");
            if(pos1>=0)
            {
                tag = right.left(pos1);
                if(tag.right(1)=="$") tag=tag.left(tag.length() - 1);
                pre = pre + left + "</" + tag +">";
                if(tag.right(1)==L"$") tag=tag.left(tag.length() - 1);
                pre = pre + left + L"</" + tag +L">";
                str = right.mid(pos1+ 1,999999);
            }else
            {
                pre = pre + left+"</";
                pre = pre + left+L"</";
                str = right;
            }
        }
@@ -312,13 +312,13 @@
    string adjustXsl(string str,string localPath)
    {
        //if(str.find("%")>=0)  str = str.replace("%","");
        if(str.find("[$path]/rpttemplate")>=0) str = str.replace("[$path]/rpttemplate",localPath);
        //if(str.find(L"%")>=0)  str = str.replace(L"%",L"");
        if(str.find(L"[$path]/rpttemplate")>=0) str = str.replace(L"[$path]/rpttemplate",localPath);
        str = replaceInnerElement(str);
        return str;
    }
    
    string DownLoadSKUNoPic(string SKUNo,string CustomerID="",string CustomerItemNo="")
    string DownLoadSKUNoPic(string SKUNo,string CustomerID=L"",string CustomerItemNo=L"")
    {
        
        if(SKUNo.length()>20) return DownLoadPaperPic(SKUNo);
@@ -327,51 +327,51 @@
        x.setNativePointer(xml::CreateInstance());
        xaserverarg arg = new xaserverarg;
        arg.setNativePointer(arg.CreateInstance());
        arg.AddArg("SKUNo",SKUNo);
        arg.AddArg(L"SKUNo",SKUNo);
        
        string src ="/sale/data/ProductLibrary3/pref/picture/imagelistSKUNo";
        if(CustomerID !="")
        string src =L"/sale/data/ProductLibrary3/pref/picture/imagelistSKUNo";
        if(CustomerID !=L"")
        {
            arg.AddArg("CustomerID",CustomerID);
            arg.AddArg("CustomerItemNo",CustomerItemNo);
            src ="/sale/data/ProductLibrary3/pref/picture/customer/imagelistSKUNo";
            arg.AddArg(L"CustomerID",CustomerID);
            arg.AddArg(L"CustomerItemNo",CustomerItemNo);
            src =L"/sale/data/ProductLibrary3/pref/picture/customer/imagelistSKUNo";
        }
        //trace("SKUNo="+SKUNo);//要有展示图片查询条件内必定要skuno
        //trace(L"SKUNo=L"+SKUNo);//要有展示图片查询条件内必定要skuno
        if(url::get(src,arg.GetString(),x)!=1)
        {
            trace("error for download skuno pic!");
            trace(L"error for download skuno pic!");
            return "";
        }
        
        string spath = "";
        string spath = L"";
        string path =GetModuleTmpPath();
        string ext = "jpg";
        if(x.GetXmlDoc().selectSingleNode("//FileExt[1]"))
        string ext = L"jpg";
        if(x.GetXmlDoc().selectSingleNode(L"//FileExt[1]"))
        {
            ext = x.GetXmlDoc().selectSingleNode("//FileExt[1]").text;
        }else if(CustomerID !="")
            ext = x.GetXmlDoc().selectSingleNode(L"//FileExt[1]").text;
        }else if(CustomerID !=L"")
        {
            src ="/sale/data/ProductLibrary3/pref/picture/imagelistSKUNo";
            src =L"/sale/data/ProductLibrary3/pref/picture/imagelistSKUNo";
            if(url::get(src,arg.GetString(),x)!=1)
            {
                trace("error for download skuno pic!");
                trace(L"error for download skuno pic!");
                return "";
            }
            if(x.GetXmlDoc().selectSingleNode("//FileExt[1]"))
                ext = x.GetXmlDoc().selectSingleNode("//FileExt[1]").text;
            if(x.GetXmlDoc().selectSingleNode(L"//FileExt[1]"))
                ext = x.GetXmlDoc().selectSingleNode(L"//FileExt[1]").text;
        }
            
        string filename = SKUNo + "." + ext;
        if(x.GetXmlDoc().selectSingleNode("//PicPath[1]"))
            spath = x.GetXmlDoc().selectSingleNode("//PicPath[1]").text;
        if(spath != "")
        string filename = SKUNo + L"." + ext;
        if(x.GetXmlDoc().selectSingleNode(L"//PicPath[1]"))
            spath = x.GetXmlDoc().selectSingleNode(L"//PicPath[1]").text;
        if(spath != L"")
        {
             xaserver::DownLoadFile(GetServerUrl(),spath,"",path+"/"+filename);
             xaserver::DownLoadFile(GetServerUrl(),spath,L"",path+L"/"+filename);
        }
        return "file://"+ path+"/"+filename;
        return "file://"+ path+L"/"+filename;
    }
        
    string DownLoadSKUNoPic(string SKUNo,string CustomerID="",string CustomerItemNo="")
    string DownLoadSKUNoPic(string SKUNo,string CustomerID=L"",string CustomerItemNo=L"")
    {
        
        if(SKUNo.length()>20) return DownLoadPaperPic(SKUNo);
@@ -380,48 +380,48 @@
        x.setNativePointer(xml::CreateInstance());
        xaserverarg arg = new xaserverarg;
        arg.setNativePointer(arg.CreateInstance());
        arg.AddArg("SKUNo",SKUNo);
        arg.AddArg(L"SKUNo",SKUNo);
        
        string src ="/sale/data/ProductLibrary3/pref/picture/imagelistSKUNo";
        if(CustomerID !="")
        string src =L"/sale/data/ProductLibrary3/pref/picture/imagelistSKUNo";
        if(CustomerID !=L"")
        {
            arg.AddArg("CustomerID",CustomerID);
            arg.AddArg("CustomerItemNo",CustomerItemNo);
            src ="/sale/data/ProductLibrary3/pref/picture/customer/imagelistSKUNo";
            arg.AddArg(L"CustomerID",CustomerID);
            arg.AddArg(L"CustomerItemNo",CustomerItemNo);
            src =L"/sale/data/ProductLibrary3/pref/picture/customer/imagelistSKUNo";
        }
        //trace("SKUNo="+SKUNo);//要有展示图片查询条件内必定要skuno
        //trace(L"SKUNo=L"+SKUNo);//要有展示图片查询条件内必定要skuno
        if(url::get(src,arg.GetString(),x)!=1)
        {
            trace("error for download skuno pic!");
            trace(L"error for download skuno pic!");
            return "";
        }
        
        string spath = "";
        string spath = L"";
        string path =GetModuleTmpPath();
        string ext = "jpg";
        if(x.GetXmlDoc().selectSingleNode("//FileExt[1]"))
        string ext = L"jpg";
        if(x.GetXmlDoc().selectSingleNode(L"//FileExt[1]"))
        {
            ext = x.GetXmlDoc().selectSingleNode("//FileExt[1]").text;
        }else if(CustomerID !="")
            ext = x.GetXmlDoc().selectSingleNode(L"//FileExt[1]").text;
        }else if(CustomerID !=L"")
        {
            src ="/sale/data/ProductLibrary3/pref/picture/imagelistSKUNo";
            src =L"/sale/data/ProductLibrary3/pref/picture/imagelistSKUNo";
            if(url::get(src,arg.GetString(),x)!=1)
            {
                trace("error for download skuno pic!");
                trace(L"error for download skuno pic!");
                return "";
            }
            if(x.GetXmlDoc().selectSingleNode("//FileExt[1]"))
                ext = x.GetXmlDoc().selectSingleNode("//FileExt[1]").text;
            if(x.GetXmlDoc().selectSingleNode(L"//FileExt[1]"))
                ext = x.GetXmlDoc().selectSingleNode(L"//FileExt[1]").text;
        }
            
        string filename = SKUNo + "." + ext;
        if(x.GetXmlDoc().selectSingleNode("//PicPath[1]"))
            spath = x.GetXmlDoc().selectSingleNode("//PicPath[1]").text;
        if(spath != "")
        string filename = SKUNo + L"." + ext;
        if(x.GetXmlDoc().selectSingleNode(L"//PicPath[1]"))
            spath = x.GetXmlDoc().selectSingleNode(L"//PicPath[1]").text;
        if(spath != L"")
        {
             xaserver::DownLoadFile(GetServerUrl(),spath,"",path+"/"+filename);
             xaserver::DownLoadFile(GetServerUrl(),spath,L"",path+L"/"+filename);
        }
        return "file://"+ path+"/"+filename;
        return "file://"+ path+L"/"+filename;
    }
        
    string GetImageUrl(string id)
@@ -430,9 +430,9 @@
        xp.setNativePointer(xml::CreateInstance());
        xaserverarg arg_pic=new xaserverarg;
        arg_pic.setNativePointer(arg_pic.CreateInstance());    
        arg_pic.AddArg("id",id);
        arg_pic.AddArg(L"id",id);
        
        string res = "/sale/data/productlibrary3/image/url";
        string res = L"/sale/data/productlibrary3/image/url";
        if(url::get(res,arg_pic.GetString(),xp)!=1)
        {
            xp.GetXml();
@@ -440,64 +440,64 @@
        }else
        {
            string path = xp.GetXmlDoc().text;
            if(path !="") return path;
            if(path !=L"") return path;
        }
        
        return "/business/products/chanpin/"+id.left(2)+"/"+ id+".jpg";
        return "/business/products/chanpin/"+id.left(2)+L"/"+ id+L".jpg";
    }
    
    string DownLoadPaperPic(string guid)
    {
        
        string path =GetModuleTmpPath();
        string ext = "jpg";
        string filename = guid + "." + ext;
        string ext = L"jpg";
        string filename = guid + L"." + ext;
        string spath = GetImageUrl(guid);
        //alert(spath);
        xaserver::DownLoadFile(GetServerUrl(),spath,"",path+"/"+filename);
        return "file://"+ path+"/"+filename;
        xaserver::DownLoadFile(GetServerUrl(),spath,L"",path+L"/"+filename);
        return "file://"+ path+L"/"+filename;
    }
            
    string DownLoadPaperPic1(string guid)
    {
        string path =GetModuleTmpPath();
        string ext = "jpg";
        string filename = guid + "." + ext;
        string ext = L"jpg";
        string filename = guid + L"." + ext;
        string str = guid.mid(0,2);
        string spath = "/business/products/chanpin/"+str+"/"+guid+".jpg";
        xaserver::DownLoadFile(GetServerUrl(),spath,"",path+"/"+filename);
        return "file://"+ path+"/"+filename;
        string spath = L"/business/products/chanpin/"+str+L"/"+guid+L".jpg";
        xaserver::DownLoadFile(GetServerUrl(),spath,L"",path+L"/"+filename);
        return "file://"+ path+L"/"+filename;
    }
    
    string DownLoadUrlPic(string src)
    {
        string guid =  publiccode::GetGuid();
        string path =GetModuleTmpPath();
        string ext = "jpg";
        string filename = guid + "." + ext;
        string ext = L"jpg";
        string filename = guid + L"." + ext;
        string spath = src;
        xaserver::DownLoadFile(GetServerUrl(),spath,"",path+"/"+filename);
        return "file://"+ path+"/"+filename;
        xaserver::DownLoadFile(GetServerUrl(),spath,L"",path+L"/"+filename);
        return "file://"+ path+L"/"+filename;
    }
    
    int OnHtml(xaserverarg arg)
    {
        int hCursor = xutil::SetCursorWait();
        string sEntityName = arg.GetArgString("EntityName");
        string sEntityID = arg.GetArgString("EntityID");
        string dataUrl = arg.GetArgString("DataUrl");
        if(dataUrl=="")
            dataUrl = "/sale/data/"+sEntityName+"/print/dataset";
        else if(dataUrl.left(1)!="/")
            dataUrl = "/sale/data/"+sEntityName+ "/"+ dataUrl;
        string sEntityName = arg.GetArgString(L"EntityName");
        string sEntityID = arg.GetArgString(L"EntityID");
        string dataUrl = arg.GetArgString(L"DataUrl");
        if(dataUrl==L"")
            dataUrl = L"/sale/data/"+sEntityName+L"/print/dataset";
        else if(dataUrl.left(1)!=L"/")
            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)
            {
                alert("数据集出错了!");
                alert(L"数据集出错了!");
                return 0;
            }
            trace(x0.GetXml());
@@ -506,14 +506,14 @@
            
        string sPath;
        sPath = getfilePath();
        arg.AddArg("sPath",sPath);
        arg.AddArg(L"sPath",sPath);
        m_spath = sPath;
        
        xml xsl = new xml;
        xsl.setNativePointer(xml::CreateInstance());
        if (url::get("/sale/data/SysPrintTemplate/getxsl",arg.GetString(),xsl) != 1)
        if (url::get(L"/sale/data/SysPrintTemplate/getxsl",arg.GetString(),xsl) != 1)
        {
            alert("数据模板错误!");
            alert(L"数据模板错误!");
            return 0;
        }
        
@@ -523,68 +523,68 @@
        xsl.LoadXml(xslStr);
        
        //trace(m_dataset.GetXml());
        trace("\r\n--------\r\n"+xslStr);
        trace(L"\r\n--------\r\n"+xslStr);
        
        m_strHtml = m_dataset.GetXmlDoc().transformNode(xsl.GetXmlDoc());
        string aspace = m_strHtml.replace("[空]","&nbsp;",0);
        aspace = aspace.replace("[line]","<br/>",0);
        string scontent = aspace.replace("<?xml version=\"1.0\"?>","",0);
        string aspace = m_strHtml.replace(L"[空]",L"&nbsp;",0);
        aspace = aspace.replace(L"[line]",L"<br/>",0);
        string scontent = aspace.replace(L"<?xml version=\"1.0\"?>",L"",0);
        
        string head ="";
        string head =L"";
        string tail = scontent;
        int pos = tail.find("src=\"item-picture:");
        int pos = tail.find(L"src=\"item-picture:");
        while(pos > 0)
        {
            int spos = pos+"src=\"item-picture:".length();
            int pos1 = tail.find("\"",spos+1);
            int spos = pos+L"src=\"item-picture:".length();
            int pos1 = tail.find(L"\"",spos+1);
            string skuno = tail.mid(spos,pos1 - spos ).trim();
            string CustomerID="";
            string CustomerItemNo="";
            if(skuno.find(",")>0)
            string CustomerID=L"";
            string CustomerItemNo=L"";
            if(skuno.find(L",L")>0)
            {
                CustomerID = skuno.left(skuno.find(",")).trim();
                skuno = skuno.mid(skuno.find(",")+1,256).trim();
                CustomerID = skuno.left(skuno.find(L",L")).trim();
                skuno = skuno.mid(skuno.find(L",L")+1,256).trim();
            }
            if(skuno.find(",")>0)
            if(skuno.find(L",L")>0)
            {
                CustomerItemNo = skuno.left(skuno.find(",")).trim();
                skuno = skuno.mid(skuno.find(",")+1,256).trim();
                CustomerItemNo = skuno.left(skuno.find(L",L")).trim();
                skuno = skuno.mid(skuno.find(L",L")+1,256).trim();
            }
            string src =  DownLoadSKUNoPic(skuno,CustomerID,CustomerItemNo);
            head += tail.left(pos) + "src=\"" + src;
            head += tail.left(pos) + L"src=\"" + src;
            tail = tail.mid(pos1,999999999);
            pos = tail.find("src=\"item-picture:");
            pos = tail.find(L"src=\"item-picture:");
        }
        scontent = head + tail;
        
        head ="";
        head =L"";
        tail = scontent;
        int position = tail.find("src=\"paper-picture:");
        int position = tail.find(L"src=\"paper-picture:");
        while(position > 0)
        {
            int sposition = position+"src=\"paper-picture:".length();
            int position1 = tail.find("\"",sposition+1);
            int sposition = position+L"src=\"paper-picture:".length();
            int position1 = tail.find(L"\"",sposition+1);
            string guid = tail.mid(sposition,position1 - sposition ).trim();
            string src2 =  DownLoadPaperPic(guid);
            head += tail.left(position) + "src=\"" + src2;
            head += tail.left(position) + L"src=\"" + src2;
            tail = tail.mid(position1,999999999);
            position = tail.find("src=\"paper-picture:");
            position = tail.find(L"src=\"paper-picture:");
        }
        scontent = head + tail;
        
        head ="";
        head =L"";
        tail = scontent;
        position = tail.find("src=\"src-picture:");
        position = tail.find(L"src=\"src-picture:");
        while(position > 0)
        {
            sposition = position+"src=\"src-picture:".length();
            position1 = tail.find("\"",sposition+1);
            sposition = position+L"src=\"src-picture:".length();
            position1 = tail.find(L"\"",sposition+1);
            guid = tail.mid(sposition,position1 - sposition ).trim();
            src2 =  DownLoadUrlPic(guid);
            head += tail.left(position) + "src=\"" + src2;
            head += tail.left(position) + L"src=\"" + src2;
            tail = tail.mid(position1,999999999);
            position = tail.find("src=\"src-picture:");
            position = tail.find(L"src=\"src-picture:");
        }
        scontent = head + tail;
        
@@ -594,10 +594,10 @@
        
        xml x1 = new xml;
        x1.setNativePointer(xml ::CreateInstance());
        //string xcontent = m_strHtml.replace("&nbsp;","[空]",0);
        string xcontent = m_strHtml.replace("[空]"," ",0);
        int pos0 = xcontent.find("<xml");
        int pos2 = xcontent.find("</xml>");
        //string xcontent = m_strHtml.replace(L"&nbsp;",L"[空]",0);
        string xcontent = m_strHtml.replace(L"[空]",L" ",0);
        int pos0 = xcontent.find(L"<xml");
        int pos2 = xcontent.find(L"</xml>");
        if(pos0>=0)
        {
            string str = xcontent.left(pos0)+ xcontent.mid(pos2+6,9999999);
@@ -608,7 +608,7 @@
        {
            /*if(!showgrid)
            {
                SendCtrlCmd(cell,"xmFormatShowGrid");
                SendCtrlCmd(cell,L"xmFormatShowGrid");
                showgrid = true;
            }*/
            cell.LoadTemplate(x1.GetXmlDoc());
@@ -623,20 +623,20 @@
    int updateHtml()
    {
        _mshtml::IHTMLDocument3 doc = ole_print.GetHtmlDocument();
        _mshtml::IHTMLElementCollection rows = doc.getElementsByTagName("tr");
        _mshtml::IHTMLElementCollection rows2 = doc.getElementsByTagName("td");
        _mshtml::IHTMLElementCollection rows = doc.getElementsByTagName(L"tr");
        _mshtml::IHTMLElementCollection rows2 = doc.getElementsByTagName(L"td");
        int len = rows.length;
        int len2 = rows2.length;
        for(int i=0; i < len - 1;i++)
        {
            _mshtml::IHTMLElement e = rows.item(i,i);
            e.style.setAttribute("height",e.offsetHeight,0);
            e.style.setAttribute(L"height",e.offsetHeight,0);
            e.Release();
        }
        for( i=0; i < len2 - 1;i++)
        {
            _mshtml::IHTMLElement e2 = rows2.item(i,i);
            e2.style.setAttribute("width",e.offsetWidth,0);
            e2.style.setAttribute(L"width",e.offsetWidth,0);
            e2.Release();
        }
        rows.Release();
@@ -652,29 +652,29 @@
            xaserverarg arg = new xaserverarg;
            arg.setNativePointer(GetParam());
            int p = arg.ptr_native_;
            arg.AddArg("action","open");
            arg.AddArg("DocumentID","");
            arg.AddArg("ok","");
            openUrl("/sale/view/view.dlg/xpage/Template/PrintDialog", p);
            string ret = arg.GetArgString("return");
            string action = arg.GetArgString("action");
            if (ret =="ok")
            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);
            string ret = arg.GetArgString(L"return");
            string action = arg.GetArgString(L"action");
            if (ret ==L"ok")
            {
                if(action =="open")
                if(action ==L"open")
                {
                    m_DocumentID = arg.GetArgString("DocumentID");
                    m_DocumentID = arg.GetArgString(L"DocumentID");
                    xml x = new xml;
                    x.setNativePointer(xml::CreateInstance());    
                    string prestr = m_DocumentID.mid(0,2);
                    prestr = prestr.upper();
                    xaserver::LoadUrl(GetServerUrl(),"/business/data/bill/"+prestr+"/"+ m_DocumentID+".jpg","",x);
                    if(x.GetXml()!="")
                    xaserver::LoadUrl(GetServerUrl(),L"/business/data/bill/"+prestr+L"/"+ m_DocumentID+L".jpg",L"",x);
                    if(x.GetXml()!=L"")
                    {
                        if(x.GetXmlDoc())
                        {
                            /*if(!showgrid)
                            {
                                SendCtrlCmd(cell,"xmFormatShowGrid");
                                SendCtrlCmd(cell,L"xmFormatShowGrid");
                                showgrid = true;
                            }*/
                            cell.LoadTemplate(x.GetXmlDoc());
@@ -683,21 +683,21 @@
                        ole_print.LoadHtml(x.GetXml());
                    }else
                    {
                        ole_print.LoadHtml("<html><body>未找到对应的文档</body></html>");
                        //cell.LoadHtml("<html><body>未找到对应的文档</body></html>");
                        ole_print.LoadHtml(L"<html><body>未找到对应的文档</body></html>");
                        //cell.LoadHtml(L"<html><body>未找到对应的文档</body></html>");
                    }
                }
                else
                {
                    string templateName = arg.GetArgString("template-name");
                    string templateName = arg.GetArgString(L"template-name");
                    win32::SetWindowText(GetHWND(),templateName);
                    billName = templateName;
                    billPre = arg.GetArgString("template-pre");
                    billID = arg.GetArgString("template-guid");
                    m_EntityID  = arg.GetArgString("EntityID");
                    m_EntityNo = arg.GetArgString("EntityNo");
                    m_EntityName  = arg.GetArgString("EntityName");
                    m_DocumentID = "";
                    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_DocumentID = L"";
                
                    OnHtml(arg);
@@ -714,29 +714,29 @@
            xaserverarg arg = new xaserverarg;
            arg.setNativePointer(GetParam());
            int p = arg.ptr_native_;
            arg.AddArg("ok","");
            openUrl("/sale/view/view.dlg/xpage/Template/PrintDialog", p);
            string ret = arg.GetArgString("return");
            string action = arg.GetArgString("action");
            if (ret =="ok")
            arg.AddArg(L"ok",L"");
            openUrl(L"/sale/view/view.dlg/xpage/Template/PrintDialog", p);
            string ret = arg.GetArgString(L"return");
            string action = arg.GetArgString(L"action");
            if (ret ==L"ok")
            {
                updated = false;
                if(action =="open")
                if(action ==L"open")
                {
                    m_DocumentID = arg.GetArgString("DocumentID");
                    m_DocumentID = arg.GetArgString(L"DocumentID");
                    xml x = new xml;
                    x.setNativePointer(xml::CreateInstance());    
                    string prestr = m_DocumentID.mid(0,2);
                    prestr = prestr.upper();
                    xaserver::LoadUrl(GetServerUrl(),"/business/data/bill/"+prestr+"/"+ m_DocumentID+".jpg","",x);
                    if(x.GetXml()!="")
                    xaserver::LoadUrl(GetServerUrl(),L"/business/data/bill/"+prestr+L"/"+ m_DocumentID+L".jpg",L"",x);
                    if(x.GetXml()!=L"")
                    {
                        
                        string content = "";
                        if(x.GetXmlDoc().documentElement.tagName=="Bill")
                        string content = L"";
                        if(x.GetXmlDoc().documentElement.tagName==L"Bill")
                        {
                            content = x.GetXmlDoc().documentElement.text;
                            content = content.replace("[空]","&nbsp",0);
                            content = content.replace(L"[空]",L"&nbsp",0);
                            ole_print.LoadHtml(content);
                        }else
                        {
@@ -744,39 +744,39 @@
                            {
                                /*if(!showgrid)
                                {
                                    SendCtrlCmd(cell,"xmFormatShowGrid");
                                    SendCtrlCmd(cell,L"xmFormatShowGrid");
                                    showgrid = true;
                                }*/
                                xml x1 = new xml;
                                x1.setNativePointer(xml::CreateInstance());    
                                string content1 = x.GetXml();
                                content1 = content1.replace("[空]"," ",0);
                                content1 = content1.replace(L"[空]",L" ",0);
                                //trace(content1);
                                x1.LoadXml(content1);
                                cell.LoadTemplate(x1.GetXmlDoc());
                                cell.Redraw();
                            }
                            content = x.GetXml();
                            content = content.replace("[空]","&nbsp",0);
                            content = content.replace(L"[空]",L"&nbsp",0);
                            ole_print.LoadHtml(content);
                        }
                    }else
                    {
                        ole_print.LoadHtml("<html><body>未找到对应的文档</body></html>");
                        //cell.LoadHtml("<html><body>未找到对应的文档</body></html>");
                        ole_print.LoadHtml(L"<html><body>未找到对应的文档</body></html>");
                        //cell.LoadHtml(L"<html><body>未找到对应的文档</body></html>");
                    }
                }
                else
                {
                    string templateName = arg.GetArgString("template-name");
                    string templateName = arg.GetArgString(L"template-name");
                    win32::SetWindowText(GetHWND(),templateName);
                    billName = templateName;
                    billPre = arg.GetArgString("template-pre");
                    billID = arg.GetArgString("template-guid");
                    m_EntityID  = arg.GetArgString("EntityID");
                    m_EntityNo = arg.GetArgString("EntityNo");
                    m_EntityName  = arg.GetArgString("EntityName");
                    m_DocumentID = "";
                    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_DocumentID = L"";
                    OnHtml(arg);
                }
            }
@@ -786,46 +786,46 @@
            
    int SetAgent()
    {    
        string xfNodeAgentArea  = "agentarea";
        string xfNodeAgentArea  = L"agentarea";
        xnode anode = GetAgentNode(xfNodeAgentArea);
        msxml::IXMLDOMElement xframeElement =  GetElement();
        msxml::IXMLDOMNode agent = xframeElement.selectSingleNode("agent/"+xfNodeAgentArea+"[1]/*");
        msxml::IXMLDOMNode agent = xframeElement.selectSingleNode(L"agent/"+xfNodeAgentArea+L"[1]/*");
        msxml::IXMLDOMNodeList nlist;
        int  index;
        int  nlen;
        msxml::IXMLDOMElement ele;
        string tools="<hbox class=''>";
        string tools=L"<hbox class=''>";
        if(agent)
        {
            nlist = agent.SelectNodes(".//xtoolbutton");
            nlist = agent.SelectNodes(L".//xtoolbutton");
            nlen = nlist.length;
            for(index=0;index<nlen;index++)
            {
                ele  =  nlist.item(index);
                string name = ele.selectSingleNode("@name").text;
                string label  =  ele.selectSingleNode("@caption").text;
                string name = ele.selectSingleNode(L"@name").text;
                string label  =  ele.selectSingleNode(L"@caption").text;
                string image;
                string src = "";
                if(ele.selectSingleNode("@image"))
                    image = ele.selectSingleNode("@image").text;
                string src = L"";
                if(ele.selectSingleNode(L"@image"))
                    image = ele.selectSingleNode(L"@image").text;
                else
                    image = "0 22";
                    image = L"0 22";
                
                if(ele.selectSingleNode("@src"))
                    src = ele.selectSingleNode("@src").text;
                if(ele.selectSingleNode(L"@src"))
                    src = ele.selectSingleNode(L"@src").text;
                
                int strLen = label.length();
                int width = 60 + (strLen - 2) * 10;
                string tool;
                if (src != "")
                    tool = "<xtoolbutton src='"+src+"'  caption='"+label+"' name='"+name+"' height='28'  class1='action'/>";
                if (src != L"")
                    tool = L"<xtoolbutton src='"+src+L"'  caption='"+label+L"' name='"+name+L"' height='28'  class1='action'/>";
                else
                    tool = "<xtoolbutton image='"+image+"'  caption='"+label+"' name='"+name+"' height='28'  class1='action'/>";
                    tool = L"<xtoolbutton image='"+image+L"'  caption='"+label+L"' name='"+name+L"' height='28'  class1='action'/>";
                tools += tool;
            }
        }
        tools +="</hbox>";
        tools +=L"</hbox>";
        SetAgentNodeContent(anode, tools);
        return 1;
    }
@@ -843,15 +843,15 @@
        editing = !editing;
        if(editing)
        {
            SwitchLayer("cellview","viewclient");
            SwitchLayer(L"cellview",L"viewclient");
        }else
        {
            htmlStr = cell.GetHtml();
            //string content = htmlStr;
            htmlStr = htmlStr.replace("[空]","&nbsp;",0);
            htmlStr = htmlStr.replace("[line]","<br/>",0);
            htmlStr = htmlStr.replace(L"[空]",L"&nbsp;",0);
            htmlStr = htmlStr.replace(L"[line]",L"<br/>",0);
            ole_print.LoadHtml(htmlStr);    
            SwitchLayer("oleview","viewclient");
            SwitchLayer(L"oleview",L"viewclient");
        }        
        return 1;
    }
@@ -871,7 +871,7 @@
        //ole_print.GetHtmlDocument();
        //return 1;
        _mshtml::IHTMLDocument3 doc = ole_print.GetHtmlDocument();
        _mshtml::IHTMLElementCollection rows = doc.getElementsByTagName("tr");
        _mshtml::IHTMLElementCollection rows = doc.getElementsByTagName(L"tr");
        
        int len = rows.length;
        for(int i=0; i < len - 1;i++)
@@ -879,8 +879,8 @@
            //oleobject v = rows.item(i,i);
            _mshtml::IHTMLElement e = rows.item(i,i);
            _mshtml::IHTMLElement2 e1 = e;
            //e.setAttribute("height",e1.clientHeight,0);
            e.setAttribute("height",300,0);
            //e.setAttribute(L"height",e1.clientHeight,0);
            e.setAttribute(L"height",300,0);
            e.Release();
            e1.Release();
        }
@@ -889,12 +889,12 @@
        /*
        if(PaperPrint == false)
        {
            ole_print.GetHtmlDocument().body.style.visibility="hidden";
            ole_print.GetHtmlDocument().body.style.visibility=L"hidden";
            PaperPrint = true;
        }
        else
        {
            ole_print.GetHtmlDocument().body.style.visibility="visible";
            ole_print.GetHtmlDocument().body.style.visibility=L"visible";
            PaperPrint = false;
        }
        */
@@ -912,7 +912,7 @@
    }
    int OnPortrait() //纵向
    {
        alert("Portrait");
        alert(L"Portrait");
        return 1;
    }
    int OnLandscape() //横向
@@ -939,48 +939,48 @@
        prestr = prestr.upper();
        
        
        content = content.replace("gb2312","utf-16",0);
        content = content.replace("&nbsp","[空]",0);
        content = content.replace("&","",0);
        content = content.replace(L"gb2312",L"utf-16",0);
        content = content.replace(L"&nbsp",L"[空]",0);
        content = content.replace(L"&",L"",0);
        
        xml x0 = new xml;
        x0.setNativePointer(xml::CreateInstance());
        x0.LoadXml("<Bill/>");
        x0.LoadXml(L"<Bill/>");
        x0.GetXmlDoc().documentElement.text = content;
        content = x0.GetXml();
        int ret= xaserver::UploadData("bill"+prestr, guid+".jpg", content);
        if(ret < 0) trace("error upload");
        int ret= xaserver::UploadData(L"bill"+prestr, guid+L".jpg", content);
        if(ret < 0) trace(L"error upload");
        
        string ls_xml ="<DocumentList guid='"+guid+"' update.modify='1' update.new='1'>";
        ls_xml += "<EntityName>"+ m_EntityName + "</EntityName>";
        ls_xml += "<EntityID>"+ m_EntityID + "</EntityID>";
        ls_xml += "<EntityNo>"+ m_EntityNo + "</EntityNo>";
        ls_xml += "<BillID>"+ billID + "</BillID>";
        ls_xml += "<BillName>"+ billName + "</BillName>";
        ls_xml += "</DocumentList>";
        string ls_xml =L"<DocumentList guid='"+guid+L"' update.modify='1' update.new='1'>";
        ls_xml += L"<EntityName>"+ m_EntityName + L"</EntityName>";
        ls_xml += L"<EntityID>"+ m_EntityID + L"</EntityID>";
        ls_xml += L"<EntityNo>"+ m_EntityNo + L"</EntityNo>";
        ls_xml += L"<BillID>"+ billID + L"</BillID>";
        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("content",x.GetXml());
        arg.AddArg(L"content",x.GetXml());
        
        if(url::get("/sale/data/DocumentList3/bill/update", arg.GetString(),x)!=1)
        if(url::get(L"/sale/data/DocumentList3/bill/update", arg.GetString(),x)!=1)
        {
            string error = x.GetXmlDoc().text;
            alert("err:"+error);
            alert(L"err:"+error);
            return 1;
        }
        string str = x.GetXmlDoc().documentElement.getAttribute("text");
        if(str == "true")
        string str = x.GetXmlDoc().documentElement.getAttribute(L"text");
        if(str == L"true")
        {
            alert("保存成功!");
            alert(L"保存成功!");
            updated = false;
        }else 
        {
            alert("保存失败!");
            alert(L"保存失败!");
        }
    
        return 1;
@@ -996,131 +996,131 @@
    {
        xaserverarg arg = new xaserverarg;
        arg.setNativePointer(GetParam());
        string templateName = arg.GetArgString("template-name");
        string templateName = arg.GetArgString(L"template-name");
        win32::SetWindowText(GetHWND(),templateName);
        OnHtml(arg);
        billName = templateName;
        billPre = arg.GetArgString("template-pre");
        billID = arg.GetArgString("template-guid");
        m_EntityID  = arg.GetArgString("EntityID");
        m_EntityNo = arg.GetArgString("EntityNo");
        m_EntityName  = arg.GetArgString("EntityName");
        m_DocumentID = "";
        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_DocumentID = L"";
        return 1;
    }
        
    int OnCmdDispatch(string comdid)
    {
        if(comdid=="xmSort")
        if(comdid==L"xmSort")
        {
            OpenWindow("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=="print:PrintImmediate")
        if(comdid==L"print:PrintImmediate")
        {
            updated = true;
            return OnPrint();
        }
        if(comdid=="print:PrintPaper") {
        if(comdid==L"print:PrintPaper") {
            updated = true;
            return PrintPaper();
        }
        if(comdid=="print:PrintPreview") {
        if(comdid==L"print:PrintPreview") {
            updated = true;
            return OnPrintPreview();
        }
        if(comdid=="print:Portrait") {
        if(comdid==L"print:Portrait") {
            updated = true;
            return OnPortrait();
        }
        if(comdid=="print:Landscape") {
        if(comdid==L"print:Landscape") {
            updated = true;
            return OnLandscape();
        }
        if(comdid=="print:PageSetup") {
        if(comdid==L"print:PageSetup") {
            updated = true;
            return OnPageSetup();
        }
        if(comdid=="print:Custom") {
        if(comdid==L"print:Custom") {
            updated = true;
            return OnCustom();
        }
        if(comdid=="print:PrintDialog")
        if(comdid==L"print:PrintDialog")
        {    
            if(updated)
            {
                int res = win32::MessageBox(this.GetHWND(), "单据已制作,是否保存?","提示",4);
                if(res == 6)OnCmdDispatch("print:AddToDocumentList");
                int res = win32::MessageBox(this.GetHWND(), L"单据已制作,是否保存?",L"提示",4);
                if(res == 6)OnCmdDispatch(L"print:AddToDocumentList");
            }
            if(GetParam())
            {
                xaserverarg arg1 = new xaserverarg;
                arg1.setNativePointer(GetParam());        
                arg1.AddArg("action","new");
                arg1.AddArg(L"action",L"new");
                OnPrintDialog();
                arg1.AddArg("action","");
                arg1.AddArg(L"action",L"");
            }
            return 1;
        }
        if(comdid.find("print:toExcel",0)>=0) {
        if(comdid.find(L"print:toExcel",0)>=0) {
            updated = true;
            return OntoExcel();
        }
        if(comdid.find("print:Export",0)>=0) {
        if(comdid.find(L"print:Export",0)>=0) {
            updated = true;
            return OnExport();
        }
        if(comdid.find("print:SaveAs",0)>=0) return OnSaveAs();
        if(comdid.find("print:Edit",0)>=0) {
        if(comdid.find(L"print:SaveAs",0)>=0) return OnSaveAs();
        if(comdid.find(L"print:Edit",0)>=0) {
            updated = true;
            return OnEdit();
        }
        if(comdid.find("action:Close",0)>=0) return CloseWindow();
        if(comdid=="print:OpenDocument") return OnOpenDocument();
        if(comdid=="print:AddToDocumentList") return OnAddToDocument();
        if(comdid.find("action:",0)>=0) return ProcessFlowAction(comdid, 1);
        if(comdid.find(L"action:Close",0)>=0) return CloseWindow();
        if(comdid==L"print:OpenDocument") return OnOpenDocument();
        if(comdid==L"print:AddToDocumentList") return OnAddToDocument();
        if(comdid.find(L"action:",0)>=0) return ProcessFlowAction(comdid, 1);
        
        if(comdid.left(3) == "xmSort")
        if(comdid.left(3) == L"xmSort")
        {
            //string str = 
            return 1;
        }
        
        if(comdid.left(3) == "IK_")
        if(comdid.left(3) == L"IK_")
        {
            string cmd = comdid.mid(3, comdid.length());
            SendCtrlCmd(cell,cmd);
            return 1;
        }
        if(comdid=="print:MaintTemplate")
        if(comdid==L"print:MaintTemplate")
        {
            OpenWindow("dev:xpage[Maint.Template.Print.vx]");
            OpenWindow(L"dev:xpage[Maint.Template.Print.vx]");
            return 1;
        }
        if(comdid == "print:RefreshData"){
        if(comdid == L"print:RefreshData"){
            return OnRefreshData();
        }
        
        if(comdid == "xxx")
        if(comdid == L"xxx")
        {
            ole_print.ExecWB(27,0);
            return 1;
                alert("xxx");
                alert(L"xxx");
                    xml x1 = new xml;
            x1.setNativePointer(xml::CreateInstance());
            xaserver::ExecXQuery(GetServerUrl(), "[xsl.getdevobj.xq]","<args/>",x1);
            xaserver::ExecXQuery(GetServerUrl(), L"[xsl.getdevobj.xq]",L"<args/>",x1);
        }
        
        if(comdid == "xxx")
        if(comdid == L"xxx")
        {
            xml x = new xml;
            x.setNativePointer(xml::CreateInstance());
            xaserverarg arg = new xaserverarg;
            arg.setNativePointer(arg.CreateInstance());        
            arg.AddArg("strHtml",m_strHtml);
            if (url::get("/sale/data/SysPrintTemplate/WebBrowser",arg.GetString(),x) != 1)
            arg.AddArg(L"strHtml",m_strHtml);
            if (url::get(L"/sale/data/SysPrintTemplate/WebBrowser",arg.GetString(),x) != 1)
            {
                alert("数据集出错了!");
                alert(L"数据集出错了!");
                return 0;
            }
            string strHtml = x.GetXml();
@@ -1136,9 +1136,9 @@
        
    int OnAttachEvent()
    {
        AttachEvent("WM_XCOMMAND",OnXCommand);
        AttachEvent("WM_SETFOCUS",OnSetFocus);
        //AttachEvent("WM_CLOSE",OnCloseOwnerWindow);
        AttachEvent(L"WM_XCOMMAND",OnXCommand);
        AttachEvent(L"WM_SETFOCUS",OnSetFocus);
        //AttachEvent(L"WM_CLOSE",OnCloseOwnerWindow);
        
        return 0;
    }
@@ -1156,10 +1156,10 @@
        int IDYES = 6;
        int IDNO = 7;
        int IDCANCEL  = 2;
        int re = win32::MessageBox(this.GetHWND(), "单据已制作,是否保存?","提示:",MB_YESNOCANCEL);
        int re = win32::MessageBox(this.GetHWND(), L"单据已制作,是否保存?",L"提示:",MB_YESNOCANCEL);
        if(re==IDCANCEL) return -1;
        if(re==IDNO) return 1;
        OnCmdDispatch("print:AddToDocumentList");
        OnCmdDispatch(L"print:AddToDocumentList");
        return -1;
    }
            
@@ -1167,18 +1167,18 @@
    {
        OnAttachEvent();
        AttachCloseWindow();
        ole_print = GetControl("ole_print");
        cell = GetControl("xcell");
        ole_print = GetControl(L"ole_print");
        cell = GetControl(L"xcell");
        
        //showgrid = false;
        editing = false;
        SetAgent();
        
        m_dataset = 0;
        billName = "";
        billID = "";
        billPre = "";
        m_DocumentID = "";
        billName = L"";
        billID = L"";
        billPre = L"";
        m_DocumentID = L"";
        PaperPrint = false;
        
        return 1;
@@ -1191,8 +1191,8 @@
        {
            xaserverarg arg = new xaserverarg;
            arg.setNativePointer(GetParam());
            string templateName = arg.GetArgString("template-name");
            if(templateName =="")
            string templateName = arg.GetArgString(L"template-name");
            if(templateName ==L"")
            {
                OnPrintDialog();
            }
@@ -1202,12 +1202,12 @@
                win32::SetWindowText(GetHWND(),templateName);
                OnHtml(arg);
                billName = templateName;
                billPre = arg.GetArgString("template-pre");
                billID = arg.GetArgString("template-guid");
                m_EntityID  = arg.GetArgString("EntityID");
                m_EntityNo = arg.GetArgString("EntityNo");
                m_EntityName  = arg.GetArgString("EntityName");
                m_DocumentID = "";
                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_DocumentID = L"";
            }
        }else
            OnPrintDialog();
jrj/project/workflow/workflow.actionlog.cpp
@@ -1,66 +1,69 @@
class workflow_actionlog : public win__
#include <wobject/xwin.hpp>
#include <xcontrol/xdwgrid.hpp>
#include <xcontrol/xflowchart.hpp>
#include <xcontrol/ximageview.hpp>
using xml = KXMLDOMDocument;
class __declspec(dllexport) workflow_actionlog : public xwin
{
public:
    workflow_actionlog(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd) {}
    static workflow_actionlog* CreateInstance(void* implPtr, void* hWnd)
    {
        workflow_actionlog* pWin = new workflow_actionlog(implPtr, (HWND)hWnd);
        return pWin;
    }
public:
    //命令发布函数
    int OnCmdDispatch(xstring comdid)
    {
        CloseWindow();
        return 0;
    }
    //命令处理事件
    int OnXCommand(TEvent* evt, int param)
    {
        return OnCmdDispatch(evt->xcommand.pStrID);
    }
    int OnAttachEvent()
    {
        //绑定工具条点击事件
        AttachEvent(L"WM_XCOMMAND", (FEvent)& workflow_actionlog::OnXCommand);
        return 1;
    }
    int onload()
    {
        SetArg();
        OnAttachEvent();
        xdwgrid dw_loglist = GetControl(L"dw_loglist");
        dw_loglist.openUrl(L"/sale/view/workflow.view/template/chkdlg/loglist");
        if (GetWinParam())
        {
            //命令发布函数
            int OnCmdDispatch(string comdid)
            {
                CloseWindow();
                return 0;
            }
            //命令处理事件
            int OnXCommand(ref TXCommandEvent evt,int param)
            {
                return OnCmdDispatch(evt.pStrID);
            }
            xaserverarg argx;
            xaserverarg arg = GetArg();
            argx.AddArg(L"EntityID", arg.GetArgString(L"EntityID"));
            xml x;
            xurl::get(L"/sale/data/workflow.core/workflow/chk/loglist", argx.GetString(), x);
            dw_loglist.Retrieve(x);
            dw_loglist.SetReadOnly(true);
            int OnAttachEvent()
            {
                //绑定工具条点击事件
                AttachEvent("WM_XCOMMAND",OnXCommand);
            }
            int onload()
            {
                OnAttachEvent();
                xdwgrid__ dw_loglist = new xdwgrid__;
                dw_loglist.setNativePointer(GetControl("dw_loglist"));
                dw_loglist.openUrl("/sale/view/workflow.view/template/chkdlg/loglist");
                if(this.GetParam())
                {
                    xaserverarg__ argx = new xaserverarg__;
                    argx.setNativePointer(argx.CreateInstance());
                    xaserverarg__ arg = this.GetParam();
                    argx.AddArg("EntityID",arg.GetArgString("EntityID"));
                    xml__ x = new xml__;
                    x.setNativePointer(xml__ ::CreateInstance());
                    url::get("/sale/data/workflow.core/workflow/chk/loglist", argx.GetString(), x);
                    dw_loglist.Retrieve(x);
                    dw_loglist.SetReadOnly(true);
                    xflowchart__ dw_chart = new xflowchart__;
                    dw_chart.setNativePointer(GetControl("dw_logchart"));
                    xml__ xc = new xml__;
                    xc.setNativePointer(xml__ ::CreateInstance());
                    url::get("/sale/data/workflow.core/workflow/chk/logchart", argx.GetString(), xc);
                    msxml::IXMLDOMElement e = xc.GetXmlDoc().documentElement;
                    dw_chart.LoadEx(e);
                    /*
                    string xbox = "<vbox><ximage  name='pic'  transparent='1' src='/business/flow/"+arg.GetArgString("EntityName")+".jpg'/></vbox>";
                    xnode__ anode = new xnode__;
                    anode.setNativePointer(GetAgentNode("flowimage"));
                    SetAgentNodeContent (anode,xbox);*/
                    imageview__ im = new imageview__;
                    im.setNativePointer(GetControl("image"));
                    //alert(arg.GetArgString("EntityName"));
                    im.AddImages("/business/flow/"+arg.GetArgString("EntityName")+".jpg");
                }
                return 1;
            }
            xflowchart dw_chart = GetControl(L"dw_logchart");
            xml xc;
            xurl::get(L"/sale/data/workflow.core/workflow/chk/logchart", argx.GetString(), xc);
            KXMLDOMElement e = xc.documentElement();
            dw_chart.Load(e);
        }
            ximageview im = GetControl(L"image");
            im.AddImages((xstring)L"/business/flow/" + arg.GetArgString(L"EntityName") + L".jpg");
        }
        return 1;
    }
};
jrj/project/workflow/workflow.actionlog_vd.cpp
@@ -1,70 +1,68 @@
class workflow_actionlog_vd : public win__
#include <wobject/xwin.hpp>
#include <xcontrol/xdwgrid.hpp>
#include <xcontrol/xflowchart.hpp>
#include <xcontrol/ximageview.hpp>
using xml = KXMLDOMDocument;
class __declspec(dllexport) workflow_actionlog_vd : public xwin
{
public:
    workflow_actionlog_vd(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd) {}
    static workflow_actionlog_vd* CreateInstance(void* implPtr, void* hWnd)
    {
        workflow_actionlog_vd* pWin = new workflow_actionlog_vd(implPtr, (HWND)hWnd);
        return pWin;
    }
public:
    //命令发布函数
    int OnCmdDispatch(xstring comdid)
    {
        CloseWindow();
        return 0;
    }
    //命令处理事件
    int OnXCommand(TEvent* evt, int param)
    {
        return OnCmdDispatch(evt->xcommand.pStrID);
    }
    int OnAttachEvent()
    {
        //绑定工具条点击事件
        AttachEvent(L"WM_XCOMMAND", (FEvent)&workflow_actionlog_vd::OnXCommand);
        return 1;
    }
    int onload()
    {
        SetArg();
        OnAttachEvent();
        xdwgrid dw_loglist = GetControl(L"dw_loglist");
        dw_loglist.openUrl(L"/sale/view/workflow.view/template/chkdlg/loglist");
        if (GetWinParam())
        {
            //命令发布函数
            int OnCmdDispatch(string comdid)
            {
                CloseWindow();
                return 0;
            }
            //命令处理事件
            int OnXCommand(ref TXCommandEvent evt,int param)
            {
                return OnCmdDispatch(evt.pStrID);
            }
            xaserverarg argx;
            xaserverarg arg = GetArg();
            argx.AddArg(L"EntityID", arg.GetArgString(L"EntityID"));
            xml x;
            xurl::get(L"/sale/data/workflow.core/workflow/chk/loglist", argx.GetString(), x);
            dw_loglist.Retrieve(x);
            dw_loglist.SetReadOnly(true);
            int OnAttachEvent()
            {
                //绑定工具条点击事件
                AttachEvent("WM_XCOMMAND",OnXCommand);
            }
            int onload()
            {
                OnAttachEvent();
                xdwgrid__ dw_loglist = new xdwgrid__;
                dw_loglist.setNativePointer(GetControl("dw_loglist"));
                dw_loglist.openUrl("/sale/view/workflow.view/template/chkdlg/loglist");
                if(this.GetParam())
                {
            xflowchart dw_chart = GetControl(L"dw_logchart");
            xml xc;
            xurl::get(L"/sale/data/workflow.core/workflow/chk/logchart", argx.GetString(), xc);
            KXMLDOMElement e = xc.documentElement();
            dw_chart.Load(e);
                    int iArgs = GetParam();
                    xaserverarg__ argx = new xaserverarg__;
                    argx.setNativePointer(iArgs);
                    argx.AddArg("EntityID",argx.GetArgString("EntityID"));
                    xml__ x = new xml__;
                    x.setNativePointer(xml__ ::CreateInstance());
                    url::get("/sale/data/workflow.core/workflow/chk/loglist", argx.GetString(), x);
                    dw_loglist.Retrieve(x);
                    dw_loglist.SetReadOnly(true);
                    xflowchart__ dw_chart = new xflowchart__;
                    dw_chart.setNativePointer(GetControl("dw_logchart"));
                    xml__ xc = new xml__;
                    xc.setNativePointer(xml__ ::CreateInstance());
                    url::get("/sale/data/workflow.core/workflow/chk/logchart", argx.GetString(), xc);
                    msxml::IXMLDOMElement e = xc.GetXmlDoc().documentElement;
                    dw_chart.LoadEx(e);
                    /*
                    string xbox = "<vbox><ximage  name='pic'  transparent='1' src='/business/flow/"+arg.GetArgString("EntityName")+".jpg'/></vbox>";
                    xnode__ anode = new xnode__;
                    anode.setNativePointer(GetAgentNode("flowimage"));
                    SetAgentNodeContent (anode,xbox);*/
                    imageview__ im = new imageview__;
                    im.setNativePointer(GetControl("image"));
                    trace(argx.GetArgString("EntityName"));
                    im.AddImages("/business/flow/"+argx.GetArgString("EntityName")+".jpg");
                }
                return 1;
            }
            ximageview im = GetControl(L"image");
            im.AddImages((xstring)L"/business/flow/" + arg.GetArgString(L"EntityName") + L".jpg");
        }
        return 1;
    }
        }
};
jrj/project/workflow/workflow.chkdlg.cpp
@@ -1,68 +1,77 @@
class workflow_chkdlg : public win__
#include <wobject/xwin.hpp>
#include <xcontrol/xdwgrid.hpp>
#include <xcontrol/xflowchart.hpp>
#include <xcontrol/ximageview.hpp>
using xml = KXMLDOMDocument;
class __declspec(dllexport) workflow_chkdlg : public xwin
{
public:
    workflow_chkdlg(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd) {}
    static workflow_chkdlg* CreateInstance(void* implPtr, void* hWnd)
    {
        workflow_chkdlg* pWin = new workflow_chkdlg(implPtr, (HWND)hWnd);
        return pWin;
    }
public:
    //命令发布函数
    int OnCmdDispatch(string comdid)
    {
        if (GetWinParam())
        {
            //命令发布函数
            int OnCmdDispatch(string comdid)
            xaserverarg arg = GetArg();
            if (comdid == L"xmOK")
            {
                if(this.GetParam())
                {
                    if(comdid=="xmOK")
                    {
                        control__ xc = new control__;
                        xc.setNativePointer(GetControl("content"));
                        string str = ""+xc.GetText();
                        //trace(str);
                        xaserverarg__ arg = this.GetParam();
                        arg.AddArg("content",str);
                    }
                    arg.AddArg("comdid",comdid);
                }
                CloseWindow();
                return 0;
                xcontrol xc = GetControl(L"content");
                arg.AddArg(L"content", xc.GetText());
            }
            //命令处理事件
            int OnXCommand(ref TXCommandEvent evt,int param)
            {
                return OnCmdDispatch(evt.pStrID);
            }
            arg.AddArg(L"comdid", comdid);
        }
        CloseWindow();
        return 0;
    }
            int OnAttachEvent()
            {
                //绑定工具条点击事件
                AttachEvent("WM_XCOMMAND",OnXCommand);
            }
            int onload()
            {
                OnAttachEvent();
                xaserverarg__ arg;
                if(this.GetParam())
                {
                    arg = this.GetParam();
                    control__ xc = new control__;
                    xc.setNativePointer(GetControl("content"));
                    xc.SetText(""+arg.GetArgString("content"));
                }
                xdwgrid__ dw_loglist = new xdwgrid__;
                dw_loglist.setNativePointer(GetControl("dw_loglist"));
                dw_loglist.openUrl("/sale/view/workflow.view/template/chkdlg/loglist");
                if(this.GetParam())
                {
                    xaserverarg__ argx = new xaserverarg__;
                    argx.setNativePointer(argx.CreateInstance());
                    arg = this.GetParam();
                    argx.AddArg("EntityID",arg.GetArgString("EntityID"));
                    xml__ x = new xml__;
                    x.setNativePointer(xml__ ::CreateInstance());
                    url::get("/sale/data/workflow.core/workflow/chk/loglist", argx.GetString(), x);
                    dw_loglist.Retrieve(x);
                    dw_loglist.SetReadOnly(true);
                }
                return 1;
            }
    //命令处理事件
    int OnXCommand(TEvent* evt, int param)
    {
        return OnCmdDispatch(evt->xcommand.pStrID);
    }
        }
    int OnAttachEvent()
    {
        //绑定工具条点击事件
        AttachEvent(L"WM_XCOMMAND", (FEvent)&workflow_chkdlg::OnXCommand);
        return 1;
    }
    int onload()
    {
        SetArg();
        OnAttachEvent();
        xaserverarg arg;
        if (GetWinParam())
        {
            arg = GetArg();
            xcontrol xc = GetControl(L"content");
            xc.SetText(arg.GetArgString(L"content"));
        }
        xdwgrid dw_loglist = GetControl(L"dw_loglist");
        dw_loglist.openUrl(L"/sale/view/workflow.view/template/chkdlg/loglist");
        if (GetWinParam())
        {
            xaserverarg argx;
            arg = GetArg();
            argx.AddArg(L"EntityID", arg.GetArgString(L"EntityID"));
            xml x ;
            xurl::get(L"/sale/data/workflow.core/workflow/chk/loglist", argx.GetString(), x);
            dw_loglist.Retrieve(x);
            dw_loglist.SetReadOnly(true);
        }
        return 1;
    }
};
jrj/project/workflow/workflow.chkdlg_vd.cpp
@@ -1,76 +1,77 @@
class workflow_chkdlg_vd : public win__
#include <wobject/xwin.hpp>
#include <xcontrol/xdwgrid.hpp>
#include <xcontrol/xflowchart.hpp>
#include <xcontrol/ximageview.hpp>
using xml = KXMLDOMDocument;
class __declspec(dllexport) workflow_chkdlg_vd : public xwin
{
public:
    workflow_chkdlg_vd(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd) {}
    static workflow_chkdlg_vd* CreateInstance(void* implPtr, void* hWnd)
    {
        workflow_chkdlg_vd* pWin = new workflow_chkdlg_vd(implPtr, (HWND)hWnd);
        return pWin;
    }
public:
    //命令发布函数
    int OnCmdDispatch(string comdid)
    {
        if (GetWinParam())
        {
            //命令发布函数
            int OnCmdDispatch(string comdid)
            xaserverarg arg = GetArg();
            if (comdid == L"xmOK")
            {
                if(this.GetParam())
                {
                    if(comdid=="xmOK")
                    {
                        control__ xc = new control__;
                        xc.setNativePointer(GetControl("content"));
                        string str = ""+xc.GetText();
                        //trace(str);
                        int iArgs = GetParam();
                        xaserverarg__ arg = new xaserverarg__;
                        arg.setNativePointer(iArgs);
                        arg.AddArg("content",str);
                    }
                    arg.AddArg("comdid",comdid);
                }
                CloseWindow();
                return 0;
                xcontrol xc = GetControl(L"content");
                arg.AddArg(L"content", xc.GetText());
            }
            //命令处理事件
            int OnXCommand(ref TXCommandEvent evt,int param)
            {
                return OnCmdDispatch(evt.pStrID);
            }
            arg.AddArg(L"comdid", comdid);
        }
        CloseWindow();
        return 0;
    }
            int OnAttachEvent()
            {
                //绑定工具条点击事件
                AttachEvent("WM_XCOMMAND",OnXCommand);
            }
            int onload()
            {
                //alert("新的");
                OnAttachEvent();
                xaserverarg__ arg;
                if(this.GetParam())
                {
                    int iArgsx = this.GetParam();
                    arg = new xaserverarg__;
                    arg.setNativePointer(iArgsx);
                    //trace(iArgsx);
                    control__ xc = new control__;
                    xc.setNativePointer(GetControl("content"));
                    xc.SetText(""+arg.GetArgString("content"));
                }
                xdwgrid__ dw_loglist = new xdwgrid__;
                dw_loglist.setNativePointer(GetControl("dw_loglist"));
                dw_loglist.openUrl("/sale/view/workflow.view/template/chkdlg/loglist");
                if(this.GetParam())
                {
    //命令处理事件
    int OnXCommand(TEvent* evt, int param)
    {
        return OnCmdDispatch(evt->xcommand.pStrID);
    }
                    int iArgs = GetParam();
                    xaserverarg__ argx = new xaserverarg__;
                    argx.setNativePointer(iArgs);
                    argx.AddArg("EntityID",arg.GetArgString("EntityID"));
                    xml__ x = new xml__;
                    x.setNativePointer(xml__ ::CreateInstance());
                    url::get("/sale/data/workflow.core/workflow/chk/loglist", argx.GetString(), x);
                    dw_loglist.Retrieve(x);
                    dw_loglist.SetReadOnly(true);
                }
                return 1;
            }
    int OnAttachEvent()
    {
        //绑定工具条点击事件
        AttachEvent(L"WM_XCOMMAND", (FEvent)&workflow_chkdlg_vd::OnXCommand);
        return 1;
    }
        }
    int onload()
    {
        SetArg();
        OnAttachEvent();
        xaserverarg arg;
        if (GetWinParam())
        {
            arg = GetArg();
            xcontrol xc = GetControl(L"content");
            xc.SetText(arg.GetArgString(L"content"));
        }
        xdwgrid dw_loglist = GetControl(L"dw_loglist");
        dw_loglist.openUrl(L"/sale/view/workflow.view/template/chkdlg/loglist");
        if (GetWinParam())
        {
            xaserverarg argx;
            arg = GetArg();
            argx.AddArg(L"EntityID", arg.GetArgString(L"EntityID"));
            xml x;
            xurl::get(L"/sale/data/workflow.core/workflow/chk/loglist", argx.GetString(), x);
            dw_loglist.Retrieve(x);
            dw_loglist.SetReadOnly(true);
        }
        return 1;
    }
};
jrj/xframe/kobject/kflowchart.hpp
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,110 @@
#pragma once
#include "kcontrol.hpp"
namespace Hxsoft {    namespace XFrame {namespace XOffice {namespace XFlowChart{
    //this interface all index param start by one
    typedef int XFODrawState;
    #define XFOSELECTION 0x0000
    #define XFOLINK         0x0001
    #define XFOWORKNODE     0x0002
    typedef int XFOState;
    #define XFONORMAL    0x0000
    #define XFOSELECTED 0x0001
    #define XFOMOVING    0x0002
    #define XFORESIZING    0x0004
    #define XFOLINKING    0x0008
    #define XFOCREATING    0x0010
    #define XFOWORKNODING    0x0020
    #define XFOREADONLY    0x1000
    #define XFORUNSTATE 0x8000
    typedef int XFOHitPosition;
    #define XFOHITNONE        0x0000
    #define XFOHITLEFTTOP        0x0001
    #define XFOHITRIGHTTOP        0x0002
    #define XFOHITRIGHTBOTTOM    0x0004
    #define XFOHITLEFTBOTTOM    0x0008
    #define XFOHITTOPCENTER        0x0010
    #define XFOHITRIGHTCENTER    0x0020
    #define XFOHITBOTTOMCENTER    0x0040
    #define XFOHITLEFTCENTER    0x0080
    class  XFlowChartObject
    {
    public:
        typedef int XFlowChartObjectStatus;
    public:
        int LoadObject(KXMLDOMElement  pElement);
        int LoadObjectXml(LPTSTR pStrXml);
    public:
        void SetFRect(RECT rect);
    public:
        XFOHitPosition GetHitResizePat(POINT pt);
    public:
        void InvalidatePatRgn(HWND hWnd, POINT& ptOffset);
        void HitAdjust(XFOHitPosition htpos, int cx, int cy);
    public:
        int TestHotHited(POINT pt, RECT& rc);
        int DrawHoted(HDC hPaintDC, int nIndex);
    public:
        LPTSTR GetCaption();
        KXMLDOMElement GetElement();
        LPTSTR GetShapeType();
        RECT& GetRect();
    public:
        bool SetUrl(LPTSTR pUrl);
        bool SetCaption(LPTSTR pCaption);
        LPTSTR GetUrl();
        LPTSTR GetGuid();
    };
    #define FXOLineStyle int
    #define FXOLINENORMAL 0x0000
    #define FXOLINEDIRECT 0x0001
    #define FXOLINECURVE  0x0002
    #define FXOLINEOWNER  0x0100
    class XFlowChartLink
    {
    public:
        int DrawHoted(HDC hPaintDC, int nIndex);
    public:
        //int AutoCalcPoints(const vector<RECT>* rects = NULL);
        //int AutoCalcPoints(POINT ptStart, int paStart, POINT ptEnd, int paEnd, FXOLineStyle dwLineStyle, const vector<RECT>* rects, vector<POINT>* pts);
    public:
        //int LoadObject(vector<class XFlowChartObject*>& DrawObjects, KXMLDOMElement  pElement);
        bool IsHoted(int x, int y);
    public:
        XFlowChartObject* GetStartObject();
        XFlowChartObject* GetEndObject();
    };
    class  IFlowChart :public IXFControl
    {
    public:
        XFlowChartObject* GetSelectedObject();
        bool SelectedObject(XFlowChartObject* pObject);
    public:
        int GetObjectCount();
        XFlowChartObject* GetObjectByIndex(int nIndex);
        int GetLinkCount();
        XFlowChartLink* GetLinkbyIndex(int nIndex);
    public:
        bool RemoveObject(XFlowChartObject* pObject, bool bDeletedLink = true);
        XFlowChartObject* AddObject(LPTSTR pShapeType, LPTSTR pCaption, LPTSTR pUrl = NULL, RECT* pRect = NULL);
    public:
        bool SetobjectUrl(XFlowChartObject* pObject, LPTSTR pUrl);
        bool SetobjectCaption(XFlowChartObject* pObject, LPTSTR pCaption);
    public:
        XFlowChartLink* AddLink(XFlowChartObject* pFrom, XFlowChartObject* pTo, bool bDoubleArrow = true);
    public:
        XFlowChartObject* GetObjectAt(POINT pt);
    public:
        int Save(KXMLDOMElement pElement);
        int Load(KXMLDOMElement pElement);
    };
}}}}
jrj/xframe/xcontrol/xflowchart.hpp
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,205 @@
#pragma once
#include "wobject/xcontrol.hpp"
#include "kobject/kflowchart.hpp"
using kflowchart = Hxsoft::XFrame::XOffice::XFlowChart::IFlowChart;
using kflowchartlink = Hxsoft::XFrame::XOffice::XFlowChart::XFlowChartLink;
using kflowchartobject = Hxsoft::XFrame::XOffice::XFlowChart::XFlowChartObject;
struct     FLCNMHDR : public NMHDR
{
    LPTSTR pWorkNode;
    kflowchartobject* pObj;
    kflowchartlink* pLink;
};
class  xflowchartobject :public xnative
{
public:
    xflowchartobject(void* impl) :xnative(impl) {}
public:
    kflowchartobject* GetKFlowchartobject()
    {
        return (kflowchartobject*)this->GetNativePtr();
    }
public:
    int LoadObject(KXMLDOMElement  pElement)
    {
        return GetKFlowchartobject()->LoadObject(pElement);
    }
    int LoadObjectXml(LPTSTR pStrXml)
    {
        return GetKFlowchartobject()->LoadObjectXml(pStrXml);
    }
public:
    void SetFRect(RECT rect)
    {
        return GetKFlowchartobject()->SetFRect(rect);
    }
public:
    Hxsoft::XFrame::XOffice::XFlowChart::XFOHitPosition GetHitResizePat(POINT pt)
    {
        return GetKFlowchartobject()->GetHitResizePat(pt);
    }
public:
    void InvalidatePatRgn(HWND hWnd, POINT& ptOffset)
    {
        return GetKFlowchartobject()->InvalidatePatRgn(hWnd, ptOffset);
    }
    void HitAdjust(Hxsoft::XFrame::XOffice::XFlowChart::XFOHitPosition htpos, int cx, int cy)
    {
        return GetKFlowchartobject()->HitAdjust(htpos, cx, cy);
    }
public:
    int TestHotHited(POINT pt, RECT& rc)
    {
        return GetKFlowchartobject()->TestHotHited(pt, rc);
    }
    int DrawHoted(HDC hPaintDC, int nIndex)
    {
        return GetKFlowchartobject()->DrawHoted(hPaintDC, nIndex);
    }
public:
    LPTSTR GetCaption()
    {
        return GetKFlowchartobject()->GetCaption();
    }
    KXMLDOMElement GetElement()
    {
        return GetKFlowchartobject()->GetElement();
    }
    LPTSTR GetShapeType()
    {
        return GetKFlowchartobject()->GetShapeType();
    }
    RECT& GetRect()
    {
        return GetKFlowchartobject()->GetRect();
    }
public:
    bool SetUrl(LPTSTR pUrl)
    {
        return GetKFlowchartobject()->SetUrl(pUrl);
    }
    bool SetCaption(LPTSTR pCaption)
    {
        return GetKFlowchartobject()->SetCaption(pCaption);
    }
    LPTSTR GetUrl()
    {
        return GetKFlowchartobject()->GetUrl();
    }
    LPTSTR GetGuid()
    {
        return GetKFlowchartobject()->GetGuid();
    }
};
class xflowchartlink : public xnative
{
public:
    xflowchartlink(void* impl) :xnative(impl) {}
public:
    kflowchartlink* GetKFlowchartLink() {
        return (kflowchartlink*)GetNativePtr();
    }
public:
    int DrawHoted(HDC hPaintDC, int nIndex)
    {
        return GetKFlowchartLink()->DrawHoted(hPaintDC, nIndex);
    }
public:
    bool IsHoted(int x, int y)
    {
        return GetKFlowchartLink()->IsHoted(x,y);
    }
public:
    kflowchartobject* GetStartObject()
    {
        return GetKFlowchartLink()->GetStartObject();
    }
    kflowchartobject* GetEndObject()
    {
        return GetKFlowchartLink()->GetEndObject();
    }
};
class  xflowchart :public xcontrol
{
public:
    xflowchart(void* impl) :xcontrol(impl) {}
public:
    kflowchart* GetKFlowChart()
    {
        return (kflowchart*)GetNativePtr();
    }
public:
    kflowchartobject* GetSelectedObject()
    {
        return GetKFlowChart()->GetSelectedObject();
    }
    bool SelectedObject(kflowchartobject* pObject)
    {
        return GetKFlowChart()->SelectedObject(pObject);
    }
public:
    int GetObjectCount()
    {
        return GetKFlowChart()->GetObjectCount();
    }
    kflowchartobject* GetObjectByIndex(int nIndex)
    {
        return GetKFlowChart()->GetObjectByIndex(nIndex);
    }
    int GetLinkCount()
    {
        return GetKFlowChart()->GetLinkCount();
    }
    kflowchartlink* GetLinkbyIndex(int nIndex)
    {
        return GetKFlowChart()->GetLinkbyIndex(nIndex);
    }
public:
    bool RemoveObject(kflowchartobject* pObject, bool bDeletedLink = true)
    {
        return GetKFlowChart()->RemoveObject(pObject, bDeletedLink);
    }
    kflowchartobject* AddObject(LPTSTR pShapeType, LPTSTR pCaption, LPTSTR pUrl = NULL, RECT* pRect = NULL)
    {
        return GetKFlowChart()->AddObject(pShapeType, pCaption, pUrl, pRect);
    }
public:
    bool SetobjectUrl(kflowchartobject* pObject, LPTSTR pUrl)
    {
        return GetKFlowChart()->SetobjectUrl(pObject, pUrl);
    }
    bool SetobjectCaption(kflowchartobject* pObject, LPTSTR pCaption)
    {
        return GetKFlowChart()->SetobjectCaption(pObject, pCaption);
    }
public:
    kflowchartlink* AddLink(kflowchartobject* pFrom, kflowchartobject* pTo, bool bDoubleArrow = true)
    {
        return GetKFlowChart()->AddLink(pFrom, pTo, bDoubleArrow);
    }
public:
    kflowchartobject* GetObjectAt(POINT pt)
    {
        return GetKFlowChart()->GetObjectAt(pt);
    }
public:
    int Save(KXMLDOMElement pElement)
    {
        return GetKFlowChart()->Save(pElement);
    }
    int Load(KXMLDOMElement pElement)
    {
        return GetKFlowChart()->Load(pElement);
    }
};