From 2ae36e271599ea723348132dd7c8a7e139162d18 Mon Sep 17 00:00:00 2001
From: xj qian <qianxj15@sina.com>
Date: 星期一, 01 七月 2024 13:16:02 +0800
Subject: [PATCH] update print preview

---
 jrj/project/printview/Template.Print.Dialog.cpp | 1019 +++++++++++++++++++++++++++--------------------------------
 1 files changed, 468 insertions(+), 551 deletions(-)

diff --git a/jrj/project/printview/Template.Print.Dialog.cpp b/jrj/project/printview/Template.Print.Dialog.cpp
index e4624ec..3158b09 100644
--- a/jrj/project/printview/Template.Print.Dialog.cpp
+++ b/jrj/project/printview/Template.Print.Dialog.cpp
@@ -4,603 +4,519 @@
 #include <xcontrol/xlayersheet.hpp>
 
 #include "vbusiness/vframe/maint.vframe.vbusiness.hpp"
+#include "vbusiness/vframe/maint.vframe.vbusiness.hpp"
+#include "vbusiness/vframe/responsewin.vframe.vbusiness.hpp"
 #include "viewobject/view.base.hpp"
 
 using xml = KXMLDOMDocument;
 
-class __declspec(dllexport) TemplatePrintDialog : public responsewin
+DeclWinObject_(TemplatePrintDialog, responsewin)
 {
+	CreateWinObject_(TemplatePrintDialog, responsewin)
+
 public:
-		xaserverarg arg_param;
-		xstring m_EntityName;
-		xstring m_EntityID;
-		xstring m_EntityNo;
-		xstring m_Dir;
-		xstring m_filePath;
-		xstring strNode;
-		xdwgrid  dw_list;
-		xdwgrid  dw_doclist;
-		xole ole_1;
-		bool bupdate;
+	xaserverarg arg_param;
+	xstring m_EntityName;
+	xstring m_EntityID;
+	xstring m_EntityNo;
+	xstring m_Dir;
+	xstring m_filePath;
+	xstring strNode;
+	xdwgrid	dw_list;
+	xdwgrid	dw_doclist;
+	bool bupdate;
 public:
-	TemplatePrintDialog(void* implPtr, HWND hWnd) :maint(implPtr, hWnd) {}
+	TemplatePrintDialog(void* implPtr, HWND hWnd) :responsewin(implPtr, hWnd) {}
 public:
 	static TemplatePrintDialog* CreateInstance(void* implPtr, void* hWnd)
 	{
-		TemplatePrintDialog* pWin = new TemplatePrintDialog(implPtr, (HWND)hWnd);
-		return pWin;
+		return new TemplatePrintDialog(implPtr, (HWND)hWnd);
 	}
-		int OnHtml()
+public:
+	int OnRetrieve()
+	{
+		xstring username = publiccode::GetUser()->name;
+		if (username != L"admin" && m_Dir != username)
 		{
-			xstring s1=L"<catalog>"+
-			 "   <book id='bk101'>"+
-			 "     <author>Gambardella, Matthew</author>"+
-			 "     <title>XML Developer's Guide</title>"+
-			 "     <genre>Computer</genre>"+
-			 "     <price>44.95</price>"+
-			 "     <publish_date>2000-10-01</publish_date>"+
-			 "     <description>An in-depth look at creating applications "+
-			 "     with XML.</description>"+
-			 "  </book>"+
-			 "  <book id='bk102'>"+
-			 "     <author>Ralls, Kim</author>"+
-			 "     <title>Midnight Rain</title>"+
-			 "     <genre>Fantasy</genre>"+
-			 "     <price>5.95</price>"+
-			 "     <publish_date>2000-12-16</publish_date>"+
-			 "     <description>A former architect battles corporate zombies, L"+
-			 "     an evil sorceress, and her own childhood to become queen "+
-			 "     of the world.</description>"+
-			 "  </book>"+
-			 "  </catalog>";
-			xml x = new xml;
-			x.setNativePointer(xml::CreateInstance());
-			x.LoadXml(s1);
-//trace(x.GetXml());
+			bupdate = false;
+		}
+		else
+		{
+			bupdate = true;
+		}
+		xml x;
 
-			//xstring s2=L"<?xml version='1.0'?>"+
-			xstring s2=
-			"<xsl:stylesheet version='1.0'"+
-			"                xmlns:xsl='http://www.w3.org/1999/XSL/Transform' >"+
-			"<xsl:output method='xml' indent='yes'/>"+
-			"<xsl:template match='catalog'>"+
-			"<HTML>"+
-			" <HEAD>"+
-			"   <TITLE>Books catalog - listing for Books.xml</TITLE>"+
-			" </HEAD>"+
-			" <BODY><FONT FACE='Verdana'>"+
-			" <H3>My Books Catalog</H3>"+
-			" <TABLE CELLPADDING='5' CELLSPACING='2'>"+
-			"   <xsl:for-each select='book'>"+
-			"   <TR>"+
-			"      <TD ALIGN='LEFT'><FONT SIZE='2'><B>ID:</B>&#160;&#160;<xsl:value-of select='@id'/><BR/>"+
-			"      <B>Author:</B>&#160;&#160;<xsl:value-of select='author'/><BR/>"+
-			"      <B>Title:</B>&#160;&#160;<xsl:value-of select='title'/><BR/>"+
-			"      <B>Genre:</B>&#160;&#160;<xsl:value-of select='genre'/><BR/>"+
-			"      <B>Price:</B>&#160;&#160;<xsl:value-of select='price'/><BR/>"+
-			"      <B>Published on:</B>&#160;&#160;<xsl:value-of select='publish_date'/><BR/>"+
-			"      <B>Description:</B>&#160;&#160;<xsl:value-of select='description'/></FONT></TD>"+
-			"   </TR>"+
-			"   </xsl:for-each>"+
-			"</TABLE>"+
-			"</FONT>"+
-			"</BODY>"+
-			"</HTML>"+
-			"</xsl:template>"+
-			"</xsl:stylesheet>" ;
-			xml xsl = new xml;
-			xsl.setNativePointer(xml::CreateInstance());
-			xsl.LoadXml(s2);
-//trace(xsl.GetXml());
+		xaserverarg arg;
 
-			xstring strHtml = x.GetXmlDoc().transformNode(xsl.GetXmlDoc());
-			//strHtml = str.mid(21,99999);
-			ole_1.LoadHtml(strHtml);
-			//html_1.SetContent(strHtml);
-			//alert(strHtml);
+		arg.AddArg(L"Entity", m_EntityName);
+		arg.AddArg(L"Dir", m_Dir);
+		dw_list.Reset();
+		if (xurl::get(L"/sale/data/SysPrintTemplate/listDialog", arg.GetString(), x) != 1)
+		{
+			trace(x.text());
+			return -1;
+		}
+		else
+		{
+			xstring s = x.xml();
+			dw_list.Retrieve(x);
+		}
+		dw_list.Redraw();
+		//dw_list.SetReadOnly(true);
+		if (dw_list.GetRowCount() > 0)
+			dw_list.SelectRow(1, true);
+		return 1;
+	}
 
-			return 0;
-		}
-		
-		int OnRetrieve()
-		{
-			xstring username = publiccode::GetUser().name;
-			if(username != L"admin" && m_Dir != username )
-			{
-				bupdate = false;
-			}else
-			{
-				bupdate = true;
-			}
-			xml x;
-		
-			xaserverarg arg;
-			
-			arg.AddArg(L"Entity",m_EntityName);			
-			arg.AddArg(L"Dir",m_Dir);
-			dw_list.Reset();
-			if (xurl::get(L"/sale/data/SysPrintTemplate/listDialog",arg.GetString(),x) != 1)
-			{
-				trace(x.text());
-				return -1;
-			}else	
-			{
-				xstring s = x.xml();
-				dw_list.Retrieve(x);
-			}
-			dw_list.Redraw();
-			//dw_list.SetReadOnly(true);
-			if (dw_list.GetRowCount()>0)
-				dw_list.SelectRow(1,true);
-			return 1;
-		}
-		
-		int OnNewTempl()
-		{
-			OpenWindow(L"dev:xpage[Maint.Template.Print.vx]");
-			return 1;
-		}
-				
-		int OnMaintTempl()
-		{
-			int row =  dw_list.GetRow();
-			if(row<0 || row>dw_list.GetRowCount()) 
-			{
-				alert(L"请选择要维护的模板!");
-				return 1;
-			}
-			else
-			{
-				KXMLDOMElement ele = dw_list.GetRowElement(row);	
-				xstring sguid = ele.selectSingleNode(L"ID").text();
-				xstring sTemplName = ele.selectSingleNode(L"TemplName").text();
-				//xstring sFile = m_filePath + sguid+L".xsl";	
-				xstring sFile = m_filePath + ele.selectSingleNode(L"urlPath").text();
-				arg_param.AddArg(L"xsl",sFile); 
-				arg_param.AddArg(L"return",L"cancel");
-				
-				OpenWindow(L"dev:xpage[Maint.Template.Print.vx]",cast(arg_param.GetString() as int));
-				CloseWindow();
-			
-			}			
-			return 1;
-		}
-				
-		int OnAddDir()
-		{
-			return 0;
-		}
-		int OnAddTempl()
-		{
-			if (m_Dir==L"")
-			{
-				alert(L"请选择模板目录!");
-				return 0;
-			}
-			xstring sguid = publiccode::GetGuid();
-			xstring sname= sguid +L".xsl";
-			xstring suri= L"rpttemplate"+L"\\"+m_EntityName; //rpttemplate\SO
-			//suri = L"supplier00";
-			xstring ret = xaserver::UploadFile(suri, sname, this.GetHWND(),L"",false);
-			if (ret == L"-1")
-			{
-				alert(L"上传的文件没选择!");
-				return 1;
-			}
-			else
-			{
-				xml x=new xml;
-				x.setNativePointer(xml::CreateInstance());				
-				xaserverarg args = new xaserverarg;
-				args.setNativePointer(args.CreateInstance());		
-				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(L"\\",0)>=0)
-					ret = ret.mid(ret.find(L"\\",0) + 1,9999);
-				
-				args.AddArg(L"sTemplName",ret);			
-				//trace(args.GetString());
-				if (url::get(L"/sale/data/SysPrintTemplate/Save",args.GetString(),x) != 1)
-				{
-					trace(L"error:"+x.GetXml());
-					alert(L"保存出错了!");
-					return 1;
-				}						
-				else
-				{	
-					alert(L"上传模板成功!");
-					OnRetrieve();
-				}				
-			}
-			return 1;
-		}
-				
-		int OnDelTempl()
-		{
-				
-			int row =  dw_list.GetRow();
-			if(row<0 || row>dw_list.GetRowCount()) 
-			{
-				alert(L"请选择要删除的模板!");
-				return 0;
-			}
-			else
-			{
-				if (win32::MessageBox(GetHWND(),L"确定要删除选中的模板?",L"提示",1) == 2)  
-					return 0;					
-				KXMLDOMElement ele = dw_list.GetRowElement(row);			
-				xstring sguid = ele.selectSingleNode(L"ID").text;
-				xml x=new xml;
-				x.setNativePointer(xml::CreateInstance());				
-				xaserverarg args = new xaserverarg;
-				args.setNativePointer(args.CreateInstance());		
-				args.AddArg(L"sID",sguid);		
-				if (url::get(L"/sale/data/SysPrintTemplate/Delete",args.GetString(),x) != 1)
-				{
-					trace(L"error:"+x.GetXml());
-					alert(L"删除出错了!");
-					return 0;
-				}						
-				else
-				{	
-					alert(L"删除成功!");
-					OnRetrieve();
-				}
-			}
-				
-			return 0;
-		}
-		
-		int OnDocListDoubleClicked(ref TNotifyEvent evt,int p)
-		{
-			int  hCursor = xutil::SetCursorWait();
-			OnOpenDocument();
-			xutil::RestoreCursor(hCursor);
-			return 1;
-		}	
-				
-		int OnDoubleClicked(ref TNotifyEvent evt,int p)
-		{
-			int  hCursor = xutil::SetCursorWait();
-			OnOk();
-			xutil::RestoreCursor(hCursor);
-			return 1;
-		}	
+	int OnNewTempl()
+	{
+		OpenWindow(L"dev:xpage[Maint.Template.Print.vx]");
+		return 1;
+	}
 
-		int OnOpenDocument()
+	int OnMaintTempl()
+	{
+		int row = dw_list.GetRow();
+		if (row<0 || row>dw_list.GetRowCount())
 		{
-			if(dw_doclist.GetRowCount() < 1) return 1;
-			xstring documentid = dw_doclist.GetRowElement(dw_doclist.GetRow()).getAttribute(L"guid");
-			//xstring billid = dw_docList
-			arg_param.AddArg(L"DocumentID",documentid);
-			arg_param.AddArg(L"return",L"ok");
-			arg_param.AddArg(L"action",L"open");
+			alert(L"请选择要维护的模板!");
+			return 1;
+		}
+		else
+		{
+			KXMLDOMElement ele = dw_list.GetRowElement(row);
+			xstring sguid = ele.selectSingleNode(L"ID").text();
+			xstring sTemplName = ele.selectSingleNode(L"TemplName").text();
+			//xstring sFile = m_filePath + sguid+L".xsl";	
+			xstring sFile = m_filePath + ele.selectSingleNode(L"urlPath").text();
+			arg_param.AddArg(L"xsl", sFile);
+			arg_param.AddArg(L"return", L"cancel");
+
+			OpenWindow(L"dev:xpage[Maint.Template.Print.vx]", arg_param);
 			CloseWindow();
-			return 1;
+
 		}
-				
-		int OnOk()
+		return 1;
+	}
+
+	int OnAddDir()
+	{
+		return 0;
+	}
+	int OnAddTempl()
+	{
+		if (m_Dir == L"")
 		{
-			int row =  dw_list.GetRow();
-			if(row<0 || row>dw_list.GetRowCount()) 
-			{
-				alert(L"请选择要打印的模板!");
-				return 1;
-			}
-			else
-			{
-				KXMLDOMElement ele = dw_list.GetRowElement(row);	
-				trace(L"\r\n---------------");
-				trace(ele.xml);
-			
-				xstring sguid = ele.selectSingleNode(L"ID").text;
-				xstring pre = L"";
-				if(ele.selectSingleNode(L"TemplPre")) pre = ele.selectSingleNode(L"TemplPre").text;
-				xstring sTemplName = ele.selectSingleNode(L"TemplName").text;
-				//xstring sFile = m_filePath + sguid+L".xsl";	
-				trace(sTemplName);
-				xstring 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(L"C:/Temp");
-				int openRet = xaserver::DownLoadFile(GetServerUrl(),m_filePath+file,sTemplName,L"C:/Temp/"+sTemplName);
-				if(openRet < 0)
-				{
-					alert(L"文件打开失败!");
-					return 0;
-				}
-				
-				int GENERIC_READ = 0x80000000;
-				int GENERIC_WRITE = 0x40000000;
-				int FILE_SHARE_READ = 0x00000001;
-				int FILE_SHARE_WRITE = 0x00000002;
-				int OPEN_EXISTING = 3;
-				int FILE_ATTRIBUTE_ARCHIVE =0x00000020;
-				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;
-					//int GMEM_ZEROINIT=0x0040;
-					//int MEMSIZE;
-					//int hMemory = GlobalAlloc(GMEM_MOVEABLE|GMEM_ZEROINIT,MEMSIZE);
-					//int pMemory = GlobalLock(hMemory);
-					//int SizeReadWrite;
-					//xwin::ReadFile(hFile,pMemory,MEMSIZE - 1,SizeReadWrite,0);
-					int filesize = xwin::GetFileSize(hFile,0); 
-				trace(L"filesize = %d",filesize);
-					xstring buffer = L"".space(filesize+1);
-					int readsize = new int;
-					xwin::ReadFile(hFile,buffer,filesize,readsize,0); 
-					trace(buffer);
-					xwin::CloseHandle(hFile);
-					//GlobalUnlock(pMemory);
-					//GlobalFree(hMemory);
-				}	*/			
-				/*openRet = xwin::ShellExecute(0,L"open",L"C:/Temp/"+sTemplName,L"",L"",5);	
-				if(openRet < 32)
-				{
-					alert(L"文件打开失败2!");
-					return 0;
-				}*/			
-			}			
+			alert(L"请选择模板目录!");
 			return 0;
 		}
-
-		int OnSave()
+		xstring sguid = publiccode::GetGuid();
+		xstring sname = sguid + L".xsl";
+		xstring suri = L"rpttemplate\\" + m_EntityName; //rpttemplate\SO
+		//suri = L"supplier00";
+		xstring ret = xaserver::UploadFile(suri, sname, GetHWND(), L"", false);
+		if (ret == L"-1")
 		{
-			dw_list.AcceptText();
-			xml x = new xml;
-			x.setNativePointer(xml::CreateInstance());
-			dw_list.DwUpdateAllToEx(x.GetXmlDoc());
-			
-			xaserverarg arg = new xaserverarg;
-			arg.setNativePointer(xaserverarg::CreateInstance());
-			arg.AddArg(L"content",x.GetXml());
-			
-			if (url::get(L"/sale/data/SysPrintTemplate/updateinfo",arg.GetString(),x) != 1)
+			alert(L"上传的文件没选择!");
+			return 1;
+		}
+		else
+		{
+			xml x;
+			xaserverarg args;
+			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(L"\\", 0) >= 0)
+				ret = ret.mid(ret.find(L"\\", 0) + 1, 9999);
+
+			args.AddArg(L"sTemplName", ret);
+			//trace(args.GetString());
+			if (xurl::get(L"/sale/data/SysPrintTemplate/Save", args.GetString(), x) != 1)
 			{
-				trace(L"error:"+x.GetXml());
+				trace((xstring)L"error:" + x.xml());
 				alert(L"保存出错了!");
 				return 1;
-			}						
+			}
 			else
-			{	
-				dw_list.ResetUpdateStatus();
-				alert(L"保存成功!");
-			}				
-
-			return 1;
-		}
-		
-		int PreOnCmdDispatch(xstring comdid)
-		{
-			//返回0——不在执行以下代码;返回其他——执行以下代码。
-			if(comdid.left(8) == L"xmPanel:"){
-				xstring no = comdid.mid(8, 99);
-				//int id = no.toInt();
-
-				xml x = new xml;
-				x.setNativePointer(xml::CreateInstance());
-				x.LoadXml(strNode);
-				KXMLDOMDocument doc= x.GetXmlDoc();
-				KXMLDOMElement e = doc.documentElement;
-				xstring slable =e.selectSingleNode(L"//xtoolbutton[@name='"+comdid+L"']/@caption").text;
-				m_Dir = slable;
-				OnRetrieve();
-			
-				return 1;
-			}
-			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(L"return",L"cancel");
-				CloseWindow();
-				return 1;
+				alert(L"上传模板成功!");
+				OnRetrieve();
 			}
+		}
+		return 1;
+	}
+
+	int OnDelTempl()
+	{
+
+		int row = dw_list.GetRow();
+		if (row<0 || row>dw_list.GetRowCount())
+		{
+			alert(L"请选择要删除的模板!");
 			return 0;
 		}
-			
-		
-		int PostOnAttachEvent()
+		else
 		{
-			//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;	
-		}
-
-		int SetAgent()
-		{	
-			PUser puser = new PUser;
-			puser =  publiccode::GetUser();
-			xstring susername = puser.name;
-			if (susername !=L"admin")
+			if (MessageBox(GetHWND(), L"确定要删除选中的模板?", L"提示", 1) == 2)
+				return 0;
+			KXMLDOMElement ele = dw_list.GetRowElement(row);
+			xstring sguid = ele.selectSingleNode(L"ID").text();
+			xml x;
+			xaserverarg args;
+			args.AddArg(L"sID", sguid);
+			if (xurl::get(L"/sale/data/SysPrintTemplate/Delete", args.GetString(), x) != 1)
 			{
-				xstring xfNodeAgentArea  = L"DirButton";
-				xnode anode = GetAgentNode(xfNodeAgentArea);
-				KXMLDOMElement xframeElement =  GetElement();
-				xstring tools=L"<vbox name='DirButton' height='48' />";
-				SetAgentNode(anode, tools);
-			}
-			return 1;
-		}
-		
-		int CreateDir()
-		{
-			PUser puser = new PUser;
-			puser =  publiccode::GetUser();
-			xstring susername = puser.name;
-			xml x = new xml;
-			x.setNativePointer(xml::CreateInstance());
-			xaserverarg arg = new xaserverarg;
-			arg.setNativePointer(arg.CreateInstance());	
-			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;
-			}else	
-			{
-				xstring s = x.GetXml();
-			}
-			KXMLDOMNodeList  nlist = x.GetXmlDoc().selectNodes(L"//Entity");
-			int i;
-			int nlen = nlist.length;
-			xstring toolStr = L"<vbox name='Dir'>";
-			xstring deptName= publiccode::GetUser().deptname;
-			if(deptName==L"跟单部" && m_EntityName==L"GDN3"){
-				for(i=2;	i<nlen;	i++)
-				{
-					KXMLDOMElement e1 = nlist.item(i);
-					xstring sDir1 = e1.selectSingleNode(L"@Dir").text;
-					xstring 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(L"业务")>=0 && m_EntityName==L"GDN3"  )
-			{
-				for(i=1;	i<2;	i++)
-				{
-					KXMLDOMElement e2 = nlist.item(i);
-					xstring sDir2 = e2.selectSingleNode(L"@Dir").text;
-					xstring 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) 
-						m_Dir = sDir2;
-				}
-				for(i=4;	i<nlen;	i++)
-				{
-					KXMLDOMElement e3 = nlist.item(i);
-					xstring sDir3 = e3.selectSingleNode(L"@Dir").text;
-					xstring str3 = L"<xtoolbutton image='15' caption='"+sDir3+L"' height='24' name='xmPanel:"+i.toString()+L"' style='background-color:none #ceecce none #ffffff'/>";
-					
-					toolStr += str3;
-				}
-			}else{
-				for(i=0;	i<nlen;	i++)
-				{
-					KXMLDOMElement e = nlist.item(i);
-					xstring sDir = e.selectSingleNode(L"@Dir").text;
-					xstring 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) 
-						m_Dir = sDir;
-				}
-			}	
-				
-			toolStr += L"</vbox>";
-			strNode = toolStr;
-			//trace(toolStr);
-			xnode anode = GetAgentNode(L"Dir");
-			xwin::SetAgentNode(anode,toolStr) ;
-			
-			OnRetrieve();
-			return 1;
-		}
-			
-		int OnInit()
-		{ 		
-			SetAgent();
-			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(L"ID",false);
-
-			dw_doclist = GetControl(L"dw_doclist");
-			dw_doclist.openUrl(L"/sale/view/GDN/template/doclist");
-
-			xstring sUrl = GetServerUrl();
-			sUrl = sUrl.mid(0, sUrl.length() - 19);
-			m_filePath = L"/business/rpttemplate";
-			arg_param = new xaserverarg;
-			if (GetParam())
-			{
-				int p = GetParam();
-				arg_param.setNativePointer(p);
-				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(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(L"/sale/data/DocumentList3/bill/doclist", arg.GetString(),x)!=1)
-				{
-					xstring error = x.GetXmlDoc().text;
-					trace(error);
-				}else
-				{
-					dw_doclist.Retrieve(x);
-					dw_doclist.SetReadOnly(true);
-				}
+				trace((xstring)L"error:" + x.xml());
+				alert(L"删除出错了!");
+				return 0;
 			}
 			else
 			{
-				arg_param.setNativePointer(arg_param.CreateInstance());	
-				m_EntityName = L"SO";
-				m_EntityID =L"00000000-0000-0000-0000-000000000000";
+				alert(L"删除成功!");
+				OnRetrieve();
 			}
+		}
 
-			m_Dir = L"";
-			m_filePath = m_filePath + L"/" + m_EntityName+L"/";
-			//trace(m_filePath);
-			
-			CreateDir();
-			
+		return 0;
+	}
+
+	int OnDocListDoubleClicked(TEvent * evt, int p)
+	{
+		HCURSOR  hCursor = xutil::SetCursorWait();
+		OnOpenDocument();
+		xutil::RestoreCursor(hCursor);
+		return 1;
+	}
+
+	int OnDoubleClicked(TEvent * evt, int p)
+	{
+		HCURSOR hCursor = xutil::SetCursorWait();
+		OnOk();
+		xutil::RestoreCursor(hCursor);
+		return 1;
+	}
+
+	int OnOpenDocument()
+	{
+		if (dw_doclist.GetRowCount() < 1) return 1;
+		xstring documentid = dw_doclist.GetRowElement(dw_doclist.GetRow()).getAttribute(L"guid");
+		//xstring billid = dw_docList
+		arg_param.AddArg(L"DocumentID", documentid);
+		arg_param.AddArg(L"return", L"ok");
+		arg_param.AddArg(L"action", L"open");
+		CloseWindow();
+		return 1;
+	}
+
+	int OnOk()
+	{
+		int row = dw_list.GetRow();
+		if (row<0 || row>dw_list.GetRowCount())
+		{
+			alert(L"请选择要打印的模板!");
 			return 1;
 		}
-
-	int onload()
-	{
-		responsewin::onload();
-		
-		/*if (GetParam())
+		else
 		{
-			xstring action = arg_param.GetArgString(L"action");
-			if(action==L"open" || (action==L"" && dw_doclist.GetRowCount() > 0))
-				SwitchLayer(L"sheet2",L"frame");
+			KXMLDOMElement ele = dw_list.GetRowElement(row);
+			trace(L"\r\n---------------");
+			trace(ele.xml());
+
+			xstring sguid = ele.selectSingleNode(L"ID").text();
+			xstring pre = L"";
+			if (ele.selectSingleNode(L"TemplPre")) pre = ele.selectSingleNode(L"TemplPre").text();
+			xstring sTemplName = ele.selectSingleNode(L"TemplName").text();
+			//xstring sFile = m_filePath + sguid+L".xsl";	
+			trace(sTemplName);
+			xstring 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(L"C:/Temp");
+			int openRet = xaserver::DownLoadFile(GetServerUrl(),m_filePath+file,sTemplName,L"C:/Temp/"+sTemplName);
+			if(openRet < 0)
+			{
+				alert(L"文件打开失败!");
+				return 0;
+			}
+
+			int GENERIC_READ = 0x80000000;
+			int GENERIC_WRITE = 0x40000000;
+			int FILE_SHARE_READ = 0x00000001;
+			int FILE_SHARE_WRITE = 0x00000002;
+			int OPEN_EXISTING = 3;
+			int FILE_ATTRIBUTE_ARCHIVE =0x00000020;
+			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;
+				//int GMEM_ZEROINIT=0x0040;
+				//int MEMSIZE;
+				//int hMemory = GlobalAlloc(GMEM_MOVEABLE|GMEM_ZEROINIT,MEMSIZE);
+				//int pMemory = GlobalLock(hMemory);
+				//int SizeReadWrite;
+				//xwin::ReadFile(hFile,pMemory,MEMSIZE - 1,SizeReadWrite,0);
+				int filesize = xwin::GetFileSize(hFile,0);
+			trace(L"filesize = %d",filesize);
+				xstring buffer = L"".space(filesize+1);
+				int readsize = new int;
+				xwin::ReadFile(hFile,buffer,filesize,readsize,0);
+				trace(buffer);
+				xwin::CloseHandle(hFile);
+				//GlobalUnlock(pMemory);
+				//GlobalFree(hMemory);
+			}	*/
+			/*openRet = xwin::ShellExecute(0,L"open",L"C:/Temp/"+sTemplName,L"",L"",5);
+			if(openRet < 32)
+			{
+				alert(L"文件打开失败2!");
+				return 0;
+			}*/
 		}
-		*/
+		return 0;
+	}
+
+	int OnSave()
+	{
+		dw_list.AcceptText();
+		xml x;
+
+		dw_list.DwUpdateAllToEx(x);
+
+		xaserverarg arg;
+		arg.setNativePointer(xaserverarg::CreateInstance());
+		arg.AddArg(L"content", x.xml());
+
+		if (xurl::get(L"/sale/data/SysPrintTemplate/updateinfo", arg.GetString(), x) != 1)
+		{
+			trace((xstring)L"error:" + x.xml());
+			alert(L"保存出错了!");
+			return 1;
+		}
+		else
+		{
+			dw_list.ResetUpdateStatus();
+			alert(L"保存成功!");
+		}
 
 		return 1;
 	}
-	
-	int onloaded()
+
+	int PreOnCmdDispatch(xstring comdid)
 	{
-		//responsewin::onload();
-		
+		//返回0——不在执行以下代码;返回其他——执行以下代码。
+		if (comdid.left(8) == L"xmPanel:") {
+			xstring no = comdid.mid(8, 99);
+			//int id = no.toInt();
+
+			xml x;
+
+			x.loadXML(strNode);
+			KXMLDOMDocument doc = x;
+			KXMLDOMElement e = doc.documentElement();
+			xstring slable = e.selectSingleNode(L"//xtoolbutton[@name='" + comdid + L"']/@caption").text();
+			m_Dir = slable;
+			OnRetrieve();
+
+			return 1;
+		}
+		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(L"return", L"cancel");
+			CloseWindow();
+			return 1;
+		}
+		return 0;
+	}
+
+
+	int PostOnAttachEvent()
+	{
+		//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", (FEvent)&TemplatePrintDialog::OnDocListDoubleClicked);
+		AttachEvent(L"dw_list", L"DWV_DOUBLECLICKED", (FEvent)&TemplatePrintDialog::OnDoubleClicked);
+		return 1;
+	}
+
+	int SetAgent()
+	{
+		PUser& puser = *publiccode::GetUser();
+		xstring susername = puser.name;
+		if (susername != L"admin")
+		{
+			xstring xfNodeAgentArea = L"DirButton";
+			xnode anode = GetAgentNode(xfNodeAgentArea);
+			KXMLDOMElement xframeElement = GetElement();
+			xstring tools = L"<vbox name='DirButton' height='48' />";
+			SetAgentNode(anode, tools);
+		}
+		return 1;
+	}
+
+	int CreateDir()
+	{
+		PUser& puser = *publiccode::GetUser();
+		xstring susername = puser.name;
+		xml x;
+
+		xaserverarg arg;
+		arg.setNativePointer(arg.CreateInstance());
+		arg.AddArg(L"EntityName", m_EntityName, L"");
+		arg.AddArg(L"EntityID", m_EntityID, L"");
+		arg.AddArg(L"susername", susername, L""); //
+		if (xurl::get(L"/sale/data/SysPrintTemplate/Dir", arg.GetString(), x) != 1)
+		{
+			trace(x.text());
+			return -1;
+		}
+		else
+		{
+			xstring s = x.xml();
+		}
+		KXMLDOMNodeList  nlist = x.selectNodes(L"//Entity");
+		int i;
+		int nlen = nlist.length();
+		xstring toolStr = L"<vbox name='Dir'>";
+		xstring deptName = publiccode::GetUser()->deptname;
+		if (deptName == L"跟单部" && m_EntityName == L"GDN3") {
+			for (i = 2; i < nlen; i++)
+			{
+				KXMLDOMElement e1 = nlist.item(i);
+				xstring sDir1 = e1.selectSingleNode(L"@Dir").text();
+				xstring str1 = L"<xtoolbutton image='15' caption='" + sDir1 + L"' height='24' name='xmPanel:" + xstring(i) + L"' style='background-color:none #ceecce none #ffffff'/>";
+
+				toolStr += str1;
+				if (i == 2)
+					m_Dir = sDir1;
+			}
+		}
+		else if (deptName.find(L"业务") >= 0 && m_EntityName == L"GDN3")
+		{
+			for (i = 1; i < 2; i++)
+			{
+				KXMLDOMElement e2 = nlist.item(i);
+				xstring sDir2 = e2.selectSingleNode(L"@Dir").text();
+				xstring str2 = L"<xtoolbutton image='15' caption='" + sDir2 + L"' height='24' name='xmPanel:" + xstring(i) + L"' style='background-color:none #ceecce none #ffffff'/>";
+
+				toolStr += str2;
+				if (i == 1)
+					m_Dir = sDir2;
+			}
+			for (i = 4; i < nlen; i++)
+			{
+				KXMLDOMElement e3 = nlist.item(i);
+				xstring sDir3 = e3.selectSingleNode(L"@Dir").text();
+				xstring str3 = L"<xtoolbutton image='15' caption='" + sDir3 + L"' height='24' name='xmPanel:" + xstring(i) + L"' style='background-color:none #ceecce none #ffffff'/>";
+
+				toolStr += str3;
+			}
+		}
+		else {
+			for (i = 0; i < nlen; i++)
+			{
+				KXMLDOMElement e = nlist.item(i);
+				xstring sDir = e.selectSingleNode(L"@Dir").text();
+				xstring str = L"<xtoolbutton image='15' caption='" + sDir + L"' height='24' name='xmPanel:" + xstring(i) + L"' style='background-color:none #ceecce none #ffffff'/>";
+
+				toolStr += str;
+				if (i == 0)
+					m_Dir = sDir;
+			}
+		}
+
+		toolStr += L"</vbox>";
+		strNode = toolStr;
+		//trace(toolStr);
+		xnode anode = GetAgentNode(L"Dir");
+		xwin::SetAgentNode(anode, toolStr);
+
+		OnRetrieve();
+		return 1;
+	}
+
+	int OnInit()
+	{
+		SetAgent();
+		dw_list = 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(L"ID", false);
+
+		dw_doclist = GetControl(L"dw_doclist");
+		dw_doclist.openUrl(L"/sale/view/GDN/template/doclist");
+
+		xstring sUrl = GetServerUrl();
+		sUrl = sUrl.mid(0, sUrl.length() - 19);
+		m_filePath = L"/business/rpttemplate";
+		arg_param;
+		if (GetWinParam())
+		{
+			arg_param = GetArg();
+			m_EntityName = arg_param.GetArgString(L"EntityName");
+			m_EntityID = arg_param.GetArgString(L"EntityID");
+			m_EntityNo = arg_param.GetArgString(L"EntityNo");
+
+			xaserverarg arg;
+			arg.setNativePointer(xaserverarg::CreateInstance());
+			arg.AddArg(L"EntityName", m_EntityName);
+			arg.AddArg(L"EntityID", m_EntityID);
+			arg.AddArg(L"EntityNo", m_EntityNo);
+			xml x = new xml;
+
+			if (xurl::get(L"/sale/data/DocumentList3/bill/doclist", arg.GetString(), x) != 1)
+			{
+				xstring error = x.text();
+				trace(error);
+			}
+			else
+			{
+				dw_doclist.Retrieve(x);
+				dw_doclist.SetReadOnly(true);
+			}
+		}
+		else
+		{
+			arg_param.setNativePointer(arg_param.CreateInstance());
+			m_EntityName = L"SO";
+			m_EntityID = L"00000000-0000-0000-0000-000000000000";
+		}
+
+		m_Dir = L"";
+		m_filePath = m_filePath + L"/" + m_EntityName + L"/";
+		//trace(m_filePath);
+
+		CreateDir();
+
+		return 1;
+	}
+
+	int onload()
+	{
+		SetArg();
+		responsewin::onload();
+
 		/*if (GetParam())
 		{
 			xstring action = arg_param.GetArgString(L"action");
@@ -608,6 +524,7 @@
 				SwitchLayer(L"sheet2",L"frame");
 		}
 		*/
+
 		return 1;
 	}
 };
\ No newline at end of file

--
Gitblit v1.9.3