From 63eebabbfee1bc84850b36967ecac5116a28b73f Mon Sep 17 00:00:00 2001
From: LiFan <2308045698@qq.com>
Date: 星期一, 12 五月 2025 14:52:25 +0800
Subject: [PATCH] update

---
 jrj/project/business/BasicCode/SKUItem.cpp |  582 +++++++++++++++++++++++++++++----------------------------
 1 files changed, 294 insertions(+), 288 deletions(-)

diff --git a/jrj/project/business/BasicCode/SKUItem.cpp b/jrj/project/business/BasicCode/SKUItem.cpp
index 01ce4d8..babeec5 100644
--- a/jrj/project/business/BasicCode/SKUItem.cpp
+++ b/jrj/project/business/BasicCode/SKUItem.cpp
@@ -1,302 +1,308 @@
-use "win.vl"
-use "dev:vm[xdwgrid.vm]"
-use "dev:vm[xdwtable.vm]"
-use "pref.vl"
-use "dev:vm[xml.vm]"
-use "dev:vm[xaserverarg.vm]"
-use "dev:vm[xaserver.vm]"
-use "dev:vm[xutil.vm]"
-use "frame.vl"
-use "treeview.vm"
-use "file.vl"
-//unit vclient.vobject tpp
-unit vbusiness.xpage
-[
-	SKUItem is extend frame;
-	about SKUItem
-	[
-		field:
-		[
-			treeview__		tv_1;
-			xdwgrid__	dw_list;
-			string 	m_type;
-			string CategoryID;
-			xnode__	m_agentNode;	//Agent Condition
-			string	m_agentCond;	//Agent Node
-			string m_searchtxt;			
-		]
-		
-		method:
-		[
-			int SetAgent()
+#include <wobject/xstring.hpp>
+#include <xcontrol/xtreeview.hpp>
+#include <xcontrol/xdwgrid.hpp>
+#include <wobject/xdouble.hpp>
+#include <xcontrol/xlayersheet.hpp>
+
+#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
+#include "viewobject/view.base.hpp"
+
+using xml = KXMLDOMDocument;
+class __declspec(dllexport) SKUItem : public xframe
+{
+public:
+	xtreeview	tv_1;
+	xdwgrid	dw_list;
+	xstring 	m_type;
+	xstring CategoryID;
+	xnode	m_agentNode;	//Agent Condition
+	xstring	m_agentCond;	//Agent Node
+	xstring m_searchtxt;
+public:
+	SKUItem(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
+public:
+	static SKUItem* CreateInstance(void* implPtr, void* hWnd)
+	{
+		SKUItem* pWin = new SKUItem(implPtr, (HWND)hWnd);
+		return pWin;
+	}
+	int SetAgent()
+	{
+		xstring xfNodeAgentArea = L"agentarea";
+		xnode anode = GetAgentNode(xfNodeAgentArea);
+		if (m_agentNode)
+		{
+			SetAgentNode(anode, m_agentNode);
+		}
+		else
+		{
+			KXMLDOMElement xframeElement = GetElement();
+			KXMLDOMElement agent = xframeElement.selectSingleNode(L"agent/" + xfNodeAgentArea + L"[1]/*");
+			if (agent)
 			{
-				string xfNodeAgentArea  = "agentarea";
-				xnode__ anode = new xnode__;
-				anode.setNativePointer(GetAgentNode(xfNodeAgentArea));
-				var xframeElement =  GetElement();
-				var agent = xframeElement.selectSingleNode("agent/"+xfNodeAgentArea+"[1]/*");
-				if(agent)
+				xstring s = agent.xml();
+				m_agentNode = SetAgentNode(anode, s);
+			}
+		}
+		return 1;
+	}
+
+	//焦点激活处理函数
+	int OnSetFocus(TEvent* evt, LPARAM p)
+	{
+		SetAgent();
+
+		//重置工具条
+		return 1;
+	}
+
+	int  OnReTrieve()
+	{
+		xstring query = L"[SKUItem.tree.xq]";
+		xml x;
+
+		xaserverarg arg;
+
+		arg.AddArg(L"parentID", CategoryID);
+		arg.AddArg(L"query", L"");
+		if (xaserver::ExecXQuery(GetServerUrl(), query, arg.GetString(), x) != 1)
+		{
+			trace(x.text());
+			return -1;
+		}
+		else
+		{
+			dw_list.openUrl(L"其他设置.vface/template/other/SKUItem");
+			dw_list.Retrieve(x);
+			dw_list.Redraw();
+		}
+		return 1;
+	}
+
+	int OnTreeSelChanged(TEvent* evt, LPARAM p)
+	{
+		NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh;
+		HTREEITEM sitem = nmtv.itemNew.hItem;
+
+		HCURSOR hCursor = xutil::SetCursorWait();
+		dw_list.AcceptText();
+		xml z;
+
+		z.loadXML(L"<root/>");
+		dw_list.Retrieve(z);
+		dw_list.Redraw();
+		dw_list.ResetUpdateStatus();
+
+		KXMLDOMElement ele = tv_1.GetItemData(sitem);
+		if (!ele.selectSingleNode(L"ID")) return 0;
+		CategoryID = ele.selectSingleNode(L"ID").text();
+		//trace(CategoryID);
+		m_searchtxt = L"";
+
+		OnReTrieve();
+		xutil::RestoreCursor(hCursor);
+		return 1;
+	}
+
+	int CreateSubTree(HTREEITEM pitem)
+	{
+		KXMLDOMElement sitemdata = tv_1.GetItemData(pitem);
+		xstring sHasChild = sitemdata.selectSingleNode(L"@HasChild").text();//sitemdata.getAttribute(L"HasChild");	
+		//trace(sHasChild);
+		xstring pid = sitemdata.selectSingleNode(L"ID").text();
+		//trace(sHasChild+L"sdaga"+pid);
+		if (sHasChild == L"1") {//数据有子节点		
+			HTREEITEM citem = tv_1.GetChildItem(pitem);
+			//alert(xstring(citem));
+			if (citem == 0) {//树视图有子节点
+				xml x;
+
+				xaserverarg arg;
+
+				arg.AddArg(L"parentID", pid);
+				arg.AddArg(L"query", L"");
+				if (xaserver::ExecXQuery(GetServerUrl(), L"[SKUItem.tree.xq]", arg.GetString(), x) != 1)
 				{
-					string s = agent.xml;
-					SetAgentNodeContent (anode,s);
+					trace(x.xml());
+					return 0;
 				}
-				return 1;
-			}
-
-			//焦点激活处理函数
-			int OnSetFocus(ref TEvent evt,int param)
-			{
-				SetAgent();
-
-				//重置工具条
-				return 1;
-			}
-
-			int  OnReTrieve()
-			{
-				string query="[SKUItem.tree.xq]";				
-				xml__ x = new xml__;
-				x.setNativePointer(x.CreateInstance());
-				xaserverarg__ arg = new xaserverarg__;
-				arg.setNativePointer(arg.CreateInstance());
-				arg.AddArg("parentID",CategoryID);
-				arg.AddArg("query","");
-				if (xaserver__::ExecXQuery(GetServerUrl(),query,arg.GetString(),x)!=1)
-				{
-					trace(x.GetXmlDoc().text);
-					return -1;
-				}else	
-				{
-					dw_list.openUrl("其他设置.vface/template/other/SKUItem");	
-					dw_list.Retrieve(x);
-					dw_list.Redraw();
+				//trace(x.xml());
+				auto list = x.selectNodes(L"root/SKUItem");
+				int i = 0, s = list.length();
+				KXMLDOMElement xitem;
+				KXMLDOMNode d;
+				for (i = 0; i < s; i++) {
+					xitem = list.item(s - i - 1);
+					//if(i==0)xitem.setAttribute(L"HasChild",L"1");
+					xstring Name = xitem.selectSingleNode(L"ItemName").text();
+					HTREEITEM kitem = tv_1.InsertItem(pitem, 0, Name, xitem, 15);
+					//int kitem=tv_1.InsertChildItem(tv_1.GetId(), pitem,Name,xitem,15);	
+					xstring HasChild = xitem.selectSingleNode(L"@HasChild").text();//item.getAttribute(L"HasChild");	
+					//trace(HasChild, kitem);
+					if (HasChild == L"1")
+						tv_1.SetItemChild1(kitem, 1);
 				}
-				return 1;
 			}
+		}
+		return 1;
+	}
+	int CreateRootTree() {
+		xstring id = L"00000000-0000-0000-0000-000000000000";
+		xml x;
 
-			int OnTreeSelChanged(ref TNotifyEvent evt,int p){
-				ref NMTREEVIEW nmtv = evt.pnmh;
-				int sitem = nmtv.itemNew.hItem;
+		x.loadXML(L"<SKUItem HasChild='1' ><ID>" + id + L"</ID></SKUItem>");
+		HTREEITEM hroot = tv_1.InsertItem(L"产品项目分类", x.documentElement(), 17);
+		//trace(hroot);
+		CreateSubTree(hroot);
+		tv_1.ExpandItemEx(hroot);
+		CategoryID = id;
+		OnReTrieve();
+		return 1;
+	}
+	int OnTreeExpanding(TEvent* evt, int p)
+	{
+		NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh;
 
-				int hCursor = xutil__::SetCursorWait();
-				dw_list.AcceptText();
-				xml__ z= new xml__;
-				z.setNativePointer(xml__::CreateInstance());		
-				z.LoadXml("<root/>");
-				dw_list.Retrieve(z);
-				dw_list.Redraw();
-				dw_list.ResetUpdateStatus();
-				
-				msxml::IXMLDOMElement ele=treeview__::GetItemData(tv_1.GetId(), sitem);
-				if(!ele.selectSingleNode("ID")) return 0;
-				CategoryID = ele.selectSingleNode("ID").text;
-				//trace(CategoryID);
-				m_searchtxt = "";
+		HTREEITEM sitem = nmtv.itemNew.hItem;
+		CreateSubTree(sitem);
+		return 1;
+	}
+	int afterSave() {
+		HTREEITEM hitem = tv_1.GetSelectedItem();
+		if (hitem == 0)
+			hitem = tv_1.GetRootItem();
+		int rows = dw_list.GetRowCount();
+		KXMLDOMElement ele = tv_1.GetItemData(hitem);
 
-				OnReTrieve();
-				xutil__::RestoreCursor(hCursor);
-				return 1;
-			}
+		HTREEITEM firstChild = tv_1.GetChildItem(hitem);
+		while (firstChild) {
+			tv_1.DeleteItem(firstChild);
+			firstChild = tv_1.GetChildItem(hitem);
+		}
+		if (rows > 0)
+		{
+			tv_1.SetItemChild1(hitem, 1);
+			ele.setAttribute(L"HasChild", L"1");
+			//trace(ele.xml);
+			tv_1.SetItemData(hitem, ele);
+		}
+		else
+		{
+			tv_1.SetItemChild1(hitem, 0);
+			ele.setAttribute(L"HasChild", L"0");
+			//trace(ele.xml);
+			tv_1.SetItemData(hitem, ele);
+		}
+		CreateSubTree(hitem);
+		if (tv_1.GetRootItem() == hitem)
+			tv_1.ExpandItemEx(hitem);
 
-			int CreateSubTree(int pitem){
-				msxml::IXMLDOMElement sitemdata=treeview__::GetItemData(tv_1.GetId(), pitem);
-				string sHasChild=sitemdata.selectSingleNode("@HasChild").text;//sitemdata.getAttribute("HasChild");	
-				//trace(sHasChild);
-				string pid=sitemdata.selectSingleNode("ID").text;
-				//trace(sHasChild+"sdaga"+pid);
-				if(sHasChild=="1"){//数据有子节点		
-					int citem=treeview__::GetChildItem(tv_1.GetId(), pitem);
-					//alert(string(citem));
-					if (citem==0){//树视图有子节点
-						xml__ x=new xml__;
-						x.setNativePointer(xml__::CreateInstance());
-						xaserverarg__ arg=new xaserverarg__;
-						arg.setNativePointer(arg.CreateInstance());	
-						arg.AddArg("parentID",pid);
-						arg.AddArg("query","");
-						if(xaserver__::ExecXQuery(GetServerUrl(),"[SKUItem.tree.xq]",arg.GetString(),x)!=1)
-						{
-							trace(x.GetXml());
-							return 0;
-						}
-						//trace(x.GetXml());
-						var list=x.GetXmlDoc().selectNodes("root/SKUItem");
-						int i=0,s=list.length;
-						msxml::IXMLDOMElement xitem;
-						msxml::IXMLDOMNode d;
-						for (i=0;i<s;i++){
-							xitem= list.item(s - i - 1);
-							//if(i==0)xitem.setAttribute("HasChild","1");
-							string Name=xitem.selectSingleNode("ItemName").text;
-							int kitem=treeview__::InsertItem(tv_1.GetId(), pitem,0,Name,xitem,15);	
-							//int kitem=treeview__::InsertChildItem(tv_1.GetId(), pitem,Name,xitem,15);	
-							string HasChild=xitem.selectSingleNode("@HasChild").text;//item.getAttribute("HasChild");	
-							//trace(HasChild, kitem);
-							if (HasChild=="1")
-								treeview__::SetItemChild1(tv_1.GetId(), kitem,1);
-						}
-					}
-				}
-				return 1;
-			}
-			int CreateRootTree(){
-				string id="00000000-0000-0000-0000-000000000000";
-				xml__ x=new xml__;
-				x.setNativePointer(xml__::CreateInstance());
-				x.LoadXml("<SKUItem HasChild='1' ><ID>"+id+"</ID></SKUItem>");
-				int hroot=treeview__::InsertItem(tv_1.GetId(), "产品项目分类", x.GetXmlDoc().documentElement, 17);
-				//trace(hroot);
-				CreateSubTree(hroot);
-				treeview__::ExpandItemEx(tv_1.GetId(), hroot);
-				CategoryID = id;
-				OnReTrieve();
-				return 1;
-			}
-			int OnTreeExpanding(ref TNotifyEvent evt,int p)	{
-				ref NMTREEVIEW nmtv = evt.pnmh;
-				int sitem = nmtv.itemNew.hItem;
-				CreateSubTree(sitem);
-				return 1;
-			}
-			int afterSave(){
-				int hitem = treeview__::GetSelectedItem(tv_1.GetId());
-				if(hitem == 0)
-					hitem = treeview__::GetRootItem(tv_1.GetId());
-				int rows = dw_list.GetRowCount();
-				msxml::IXMLDOMElement ele = treeview__::GetItemData(tv_1.GetId() ,hitem);
+		dw_list.ResetUpdateStatus();
+		return 0;
+	}
+	int OnSave()
+	{
+		xml x;
 
-				int firstChild = treeview__::GetChildItem(tv_1.GetId() ,hitem);
-				while (firstChild>0){
-					treeview__::DeleteItem(tv_1.GetId() ,firstChild);
-					firstChild = treeview__::GetChildItem(tv_1.GetId() ,hitem);
-				}
-				if(rows>0)
-				{
-					treeview__::SetItemChild1(tv_1.GetId() ,hitem,1);
-					ele.setAttribute("HasChild","1");
-					//trace(ele.xml);
-					treeview__::SetItemData(tv_1.GetId() ,hitem,ele);
-				}
-				else
-				{
-					treeview__::SetItemChild1(tv_1.GetId() ,hitem,0);
-					ele.setAttribute("HasChild","0");
-					//trace(ele.xml);
-					treeview__::SetItemData(tv_1.GetId() ,hitem,ele);
-				}
-				CreateSubTree(hitem);
-				if(treeview__::GetRootItem(tv_1.GetId()) == hitem)
-					treeview__::ExpandItemEx(tv_1.GetId() ,hitem);
+		dw_list.AcceptText();
+		dw_list.DwUpdateAllToEx(x);
+		trace(x.xml());
+		xaserverarg arg;
 
-				dw_list.ResetUpdateStatus();
-				return 0;
-			}			
-			int OnSave()
-			{
-				xml__ x=new xml__;
-				x.setNativePointer(x.CreateInstance());
-				dw_list.AcceptText();
-				dw_list.DwUpdateAllToEx(x.GetXmlDoc());
-				trace(x.GetXml());				
-				xaserverarg__ arg = new xaserverarg__;
-				arg.setNativePointer(arg.CreateInstance());
-				arg.AddArg("content", x.GetXml());
-				arg.AddArg("dbmap", "SKUItem.dbmap");		
-				if(xaserver__::ExecXAction(this.GetServerUrl(),"[onSave.xa]",arg.GetString(),x)!=1)
-				{
-					trace(x.GetXmlDoc().documentElement.text);
-					alert("保存失败");
-				}else{
-					alert("保存成功");
-				}
-				dw_list.ResetUpdateStatus();
-				dw_list.Redraw();
-				afterSave();
-				return 1;
-			}
-			int OnSetValue( int row){
-				dw_list.SetItemString(row,"PID",CategoryID);
-				dw_list.SetItemString(row,"ID",TApp::GetGuid());
-				return 1;				
-			}			
-			int OnAddRow()
-			{
-				int row = dw_list.InsertRow(0);
-				int rows = dw_list.GetRowCount();
-				OnSetValue(rows);				
-				dw_list.SetRow(dw_list.GetRowCount());				
-				//trace(row.toString());
-				return 1;
-			}
-			
-			int OnInsertRow()
-			{
-				int row=dw_list.GetRow();
-				if(row<0 || row>dw_list.GetRowCount()) return 0;				
-				dw_list.InsertRow(row);
-				OnSetValue(row);				
-				dw_list.SetRow(row);				
-				return 1;
-			}
+		arg.AddArg(L"content", x.xml());
+		arg.AddArg(L"dbmap", L"SKUItem.dbmap");
+		if (xaserver::ExecXAction(GetServerUrl(), L"[onSave.xa]", arg.GetString(), x) != 1)
+		{
+			trace(x.documentElement().text());
+			alert(L"保存失败");
+		}
+		else {
+			alert(L"保存成功");
+		}
+		dw_list.ResetUpdateStatus();
+		dw_list.Redraw();
+		afterSave();
+		return 1;
+	}
+	int OnSetValue(int row) {
+		dw_list.SetItemString(row, L"PID", CategoryID);
+		dw_list.SetItemString(row, L"ID", publiccode::GetGuid());
+		return 1;
+	}
+	int OnAddRow()
+	{
+		int row = dw_list.InsertRow(0);
+		int rows = dw_list.GetRowCount();
+		OnSetValue(rows);
+		dw_list.SetRow(dw_list.GetRowCount());
+		//trace(row.toString());
+		return 1;
+	}
 
-			int OnDeleteRow()
-			{			
-				int row = dw_list.GetRow();
-				if(row<0 || row>dw_list.GetRowCount()) return 0;			
-				dw_list.DeleteRow(row);
-				return 1;
-			}
+	int OnInsertRow()
+	{
+		int row = dw_list.GetRow();
+		if (row<0 || row>dw_list.GetRowCount()) return 0;
+		dw_list.InsertRow(row);
+		OnSetValue(row);
+		dw_list.SetRow(row);
+		return 1;
+	}
 
-					
-			//命令发布函数
-			int OnCmdDispatch(string comdid)
-			{
-				if (comdid =="Save")  OnSave();
-				else if (comdid =="AddRow") OnAddRow();
-				else if (comdid =="InsertRow") OnInsertRow();
-				else if (comdid =="DeleteRow") OnDeleteRow();
-				return 0;
-			}
-			
-			//命令处理事件
-			int OnXCommand(ref TXCommandEvent evt,int param)
-			{
-				return OnCmdDispatch(evt.pStrID);
-			}
-			
-			int OnAttachEvent()
-			{
-				//绑定工具条点击事件
-				AttachEvent("WM_XCOMMAND",OnXCommand);
-				//获取焦点事件,用于重置工具条
-				AttachEvent("WM_SETFOCUS",OnSetFocus);
-				//获得树的选择事件
-				AttachEvent("tv_1", "TVN_SELCHANGED",OnTreeSelChanged);
-				AttachEvent("tv_1", "TVN_ITEMEXPANDING",OnTreeExpanding);				
-			}
-			
-			int OnInitial()
-			{
-				SetAgent();
-				OnAttachEvent();				
-				return 1;
-			}
-			
-			int onload()
-			{
-				m_type = "all";
-				tv_1 =  new treeview__;
-				tv_1.setNativePointer(this.GetControl("tv_1"));					
-				dw_list =  new xdwgrid__;
-				dw_list.setNativePointer(this.GetControl("dw_list"));						
-				dw_list.openUrl("其他设置.vface/template/other/SKUItem");	
+	int OnDeleteRow()
+	{
+		int row = dw_list.GetRow();
+		if (row<0 || row>dw_list.GetRowCount()) return 0;
+		dw_list.DeleteRow(row);
+		return 1;
+	}
 
-				OnInitial();
-				CreateRootTree();
-				
-				return 1;
-			}
-		]
-		
-	]
-]
\ No newline at end of file
+
+	//命令发布函数
+	int OnCmdDispatch(xstring comdid)
+	{
+		if (comdid == L"Save")  OnSave();
+		else if (comdid == L"AddRow") OnAddRow();
+		else if (comdid == L"InsertRow") OnInsertRow();
+		else if (comdid == L"DeleteRow") OnDeleteRow();
+		return 0;
+	}
+
+	//命令处理事件
+	int OnXCommand(TEvent* evt, LPARAM param)
+	{
+		return OnCmdDispatch(evt->xcommand.pStrID);
+	}
+
+	int OnAttachEvent()
+	{
+		//绑定工具条点击事件
+		AttachEvent(L"WM_XCOMMAND", (FEvent)&SKUItem::OnXCommand);
+		//获取焦点事件,用于重置工具条
+		AttachEvent(L"WM_SETFOCUS", (FEvent)&SKUItem::OnSetFocus);
+		//获得树的选择事件
+		AttachEvent(L"tv_1", L"TVN_SELCHANGED", (FEvent)&SKUItem::OnTreeSelChanged);
+		AttachEvent(L"tv_1", L"TVN_ITEMEXPANDING", (FEvent)&SKUItem::OnTreeExpanding);
+		return 1;
+	}
+
+	int OnInitial()
+	{
+		SetAgent();
+		OnAttachEvent();
+		return 1;
+	}
+
+	int onload()
+	{
+		m_type = L"all";
+		tv_1 = GetControl(L"tv_1");
+		dw_list = GetControl(L"dw_list");
+		dw_list.openUrl(L"其他设置.vface/template/other/SKUItem");
+
+		OnInitial();
+		CreateRootTree();
+
+		return 1;
+	}
+};
\ No newline at end of file

--
Gitblit v1.9.3