LiFan
2024-07-16 6a4764ee747fff45d89ef48f98873d6409e4f85e
jrj/project/business/BasicCode/SKUTemplate.cpp
@@ -1,44 +1,53 @@
use "list.vl"
use "dev:vm[combobox.vm]"
use "treeview.vm"
use "dev:vm[gridpages.vm]"
use "dev:vm[xutil.vm]"
use "dev:vm[xpage.vm]"
use "dev:vm[xcell.vm]"
use "file.vl"
use "publiccode.vl"
#include <wobject/xstring.hpp>
#include <xcontrol/xtreeview.hpp>
#include <xcontrol/xdwgrid.hpp>
#include <wobject/xdouble.hpp>
#include <xcontrol/xlayersheet.hpp>
unit vbusiness.entity
[
   SKUTemplate is extend frame;
   about SKUTemplate
   [
      field:
      [
         xdwgrid__  dw_list;
         xdwtable__ dw_maint;
         xdwtable__ dw_category;
#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
#include "viewobject/view.base.hpp"
using xml = KXMLDOMDocument;
class __declspec(dllexport) SKUTemplate : public xframe
{
public:
   xdwgrid  dw_list;
   xdwtable dw_maint;
   xdwtable dw_category;
         int rowno;
      ]
      
      method:
      [
   xnode   m_agentNode;
public:
   SKUTemplate(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
public:
   static SKUTemplate* CreateInstance(void* implPtr, void* hWnd)
   {
      SKUTemplate* pWin = new SKUTemplate(implPtr, (HWND)hWnd);
      return pWin;
   }
         int SetAgent()
         {
            string xfNodeAgentArea  = "agentarea";
            xnode__ anode = new xnode__;
            anode.setNativePointer(GetAgentNode(xfNodeAgentArea));
            var xframeElement =  GetElement();
            var agent = xframeElement.selectSingleNode("agent/"+xfNodeAgentArea+"[1]/*");
      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 s = agent.xml;
               SetAgentNodeContent (anode,s);
            xstring s = agent.xml();
            m_agentNode = SetAgentNode(anode, s);
         }
            }
            return 1;
         }
            
         int OnSetFocus(ref TEvent evt,int p)
   int OnSetFocus(TEvent* evt, LPARAM p)
         {      
            SetAgent()   ;   
            return 1;
@@ -46,48 +55,48 @@
         int  OnReTrieve()
         {
            string query="[SKUTemplate.list.xq]";
            xml__ x = new xml__;
            x.setNativePointer(x.CreateInstance());
            xaserverarg__ arg = new xaserverarg__;
            arg.setNativePointer(arg.CreateInstance());
            if (xaserver__::ExecXQuery(GetServerUrl(),query,arg.GetString(),x)!=1)
      xstring query = L"[SKUTemplate.list.xq]";
      xml x;
      xaserverarg arg;
      if (xaserver::ExecXQuery(GetServerUrl(), query, arg.GetString(), x) != 1)
            {
               trace(x.GetXmlDoc().text);
         trace(x.text());
               return -1;
            }else
      }
      else
            {      
               dw_list.Retrieve(x);
               dw_list.Redraw();            
            }
            return 1;
         }
         int OnRowChanged(ref TNotifyEvent evt,int p)
   int OnRowChanged(TEvent* evt, LPARAM p)
         {
            ref DWNMHDR  hdr = evt.pnmh;
      DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
            int ll_row = hdr.row;
            rowno=ll_row;
            string TemplateContent = dw_list.GetItemString(ll_row,"TemplateContent");
            string Category = dw_list.GetItemString(ll_row,"Category");
            if(TemplateContent=="")
      xstring TemplateContent = dw_list.GetItemString(ll_row, L"TemplateContent");
      xstring Category = dw_list.GetItemString(ll_row, L"Category");
      if (TemplateContent == L"")
            {   
               dw_maint.openUrl("其他设置.vface/template/other/TemplateContent");
         dw_maint.openUrl(L"其他设置.vface/template/other/TemplateContent");
               dw_maint.SetColHeaderHeight(0);
               dw_maint.SetRowSelectorWidth(0);            
            }
            if(Category=="")
      if (Category == L"")
            {   
               dw_category.openUrl("其他设置.vface/template/other/TemplateCategory");
         dw_category.openUrl(L"其他设置.vface/template/other/TemplateCategory");
               dw_category.SetColHeaderHeight(0);
               dw_category.SetRowSelectorWidth(0);               
            }   
            xml__ x = new xml__;
            x.setNativePointer(x.CreateInstance());
            x.LoadXml(TemplateContent);
            xml__ x1 = new xml__;
            x1.setNativePointer(x.CreateInstance());
            x1.LoadXml(Category);
      xml x;
      x.loadXML(TemplateContent);
      xml x1;
      x1.loadXML(Category);
            dw_maint.Retrieve(x);
            dw_maint.Redraw();
            dw_category.Retrieve(x1);
@@ -100,20 +109,21 @@
            dw_maint.AcceptText();
            dw_category.AcceptText();
            
            xml__ x=new xml__;
            x.setNativePointer(x.CreateInstance());
            dw_list.DwUpdateAllToEx(x.GetXmlDoc());
            trace(x.GetXml());
            xaserverarg__ arg = new xaserverarg__;
            arg.setNativePointer(arg.CreateInstance());
            arg.AddArg("content", x.GetXml());
            arg.AddArg("dbmap", "SKUTemplate.dbmap");
            if(xaserver__::ExecXAction(this.GetServerUrl(),"[onSave.xa]",arg.GetString(),x)!=1)
      xml x;
      dw_list.DwUpdateAllToEx(x);
      trace(x.xml());
      xaserverarg arg;
      arg.AddArg(L"content", x.xml());
      arg.AddArg(L"dbmap", L"SKUTemplate.dbmap");
      if (xaserver::ExecXAction(GetServerUrl(), L"[onSave.xa]", arg.GetString(), x) != 1)
            {
               trace(x.GetXmlDoc().documentElement.text);
               alert("保存失败");
            }else{
               alert("保存成功");
         trace(x.documentElement().text());
         alert(L"保存失败");
      }
      else {
         alert(L"保存成功");
            }            
            dw_list.ResetUpdateStatus();
            dw_maint.ResetUpdateStatus();
@@ -124,13 +134,13 @@
            return 1;
         }            
         int OnSetValue( int row){
            dw_list.SetItemString(row,"TemplateID",TApp::GetGuid());
      dw_list.SetItemString(row, L"TemplateID", TApp::GetGuid());
            return 1;            
         }
         int RemoveAttribute(xml__ x,string nodename)//根据名称删除属性节点
   int RemoveAttribute(xml x, xstring nodename)//根据名称删除属性节点
         {   
            msxml::IXMLDOMElement e;
            var list = x.GetXmlDoc().getElementsByTagName(""+nodename+"");
      KXMLDOMElement e;
      var list = x.getElementsByTagName(L"" + nodename + L"");
            if(list)
            {   
         
@@ -140,41 +150,41 @@
               {
                  e = list.item(i);         
                  //trace(e.xml);
                  e.removeAttribute("update.new");
                  e.removeAttribute("update.modify");
                  e.removeAttribute("update.delete");
                  e.removeAttribute("guid");
                  e.removeAttribute("update.origin");
                  e.removeAttribute("isnull");
            e.removeAttribute(L"update.new");
            e.removeAttribute(L"update.modify");
            e.removeAttribute(L"update.delete");
            e.removeAttribute(L"guid");
            e.removeAttribute(L"update.origin");
            e.removeAttribute(L"isnull");
                  //trace(e.xml);            
               }
            }                  
         }         
         int setMaint()
         {
            xml__ x=new xml__;
            x.setNativePointer(xml__::CreateInstance());
            dw_maint.DwUpdateAllTo(x.GetXmlDoc());
      xml x;
      dw_maint.DwUpdateAllTo(x);
            int row = dw_list.GetRow();
            trace(x.GetXml());
            RemoveAttribute(x,"TemplateContent");
            RemoveAttribute(x,"Item");
            RemoveAttribute(x,"ItemName");
            RemoveAttribute(x,"Remark");
            RemoveAttribute(x,"SeqNo");
            //trace(x.GetXml());
            dw_list.SetItemString(row, "TemplateContent", x.GetXml());
      trace(x.xml());
      RemoveAttribute(x, L"TemplateContent");
      RemoveAttribute(x, L"Item");
      RemoveAttribute(x, L"ItemName");
      RemoveAttribute(x, L"Remark");
      RemoveAttribute(x, L"SeqNo");
      //trace(x.xml());
      dw_list.SetItemString(row, L"TemplateContent", x.xml());
            dw_list.Redraw();
            return 1;
         }
         int setItemCategory()
         {
            xml__ x=new xml__;
            x.setNativePointer(xml__::CreateInstance());
            dw_category.DwUpdateAllTo(x.GetXmlDoc());
      xml x;
      dw_category.DwUpdateAllTo(x);
            int row = dw_list.GetRow();
            trace(row);
            dw_list.SetItemString(row, "Category", x.GetXml());
      //trace(row);
      dw_list.SetItemString(row, L"Category", x.xml());
            return 1;
         }            
         int OnAddRow()
@@ -183,11 +193,11 @@
            int rows = dw_list.GetRowCount();
            OnSetValue(rows);            
            dw_list.SetRow(dw_list.GetRowCount());            
            trace(row.toString());
            dw_maint.openUrl("其他设置.vface/template/other/TemplateContent");
      //trace(row.toString());
      dw_maint.openUrl(L"其他设置.vface/template/other/TemplateContent");
            dw_maint.SetColHeaderHeight(0);
            dw_maint.SetRowSelectorWidth(0);
            dw_category.openUrl("其他设置.vface/template/other/TemplateCategory");
      dw_category.openUrl(L"其他设置.vface/template/other/TemplateCategory");
            dw_category.SetColHeaderHeight(0);
            dw_category.SetRowSelectorWidth(0);            
            return 1;
@@ -200,21 +210,21 @@
            dw_list.InsertRow(row);
            OnSetValue(row);            
            dw_list.SetRow(row);
            dw_maint.openUrl("其他设置.vface/template/other/TemplateContent");
      dw_maint.openUrl(L"其他设置.vface/template/other/TemplateContent");
            dw_maint.SetColHeaderHeight(0);
            dw_maint.SetRowSelectorWidth(0);
            dw_category.openUrl("其他设置.vface/template/other/TemplateCategory");
      dw_category.openUrl(L"其他设置.vface/template/other/TemplateCategory");
            dw_category.SetColHeaderHeight(0);
            dw_category.SetRowSelectorWidth(0);            
            return 1;
         }
         int OnChangeRowNo(int row)
         {
            xdwtable__ dw = new xdwtable__;
            dw.setNativePointer(dw_maint.FindDwTable("Item",0));
      xdwtable dw = new xdwtable;
      dw.setNativePointer(dw_maint.FindDwTable(L"Item", 0));
            int i;
            for (i=row; i<=dw.GetRowCount(); i++)
               dw.SetItemString(i, "SeqNo", i.toString());
         dw.SetItemString(i, L"SeqNo", xstring(i));
            return 1;
         }
         int OnDeleteRow()
@@ -222,18 +232,18 @@
            int row = dw_list.GetRow();
            if(row<0 || row>dw_list.GetRowCount()) return 0;         
            dw_list.DeleteRow(row);
            dw_maint.openUrl("其他设置.vface/template/other/TemplateContent");
      dw_maint.openUrl(L"其他设置.vface/template/other/TemplateContent");
            dw_maint.SetColHeaderHeight(0);
            dw_maint.SetRowSelectorWidth(0);
            dw_category.openUrl("其他设置.vface/template/other/TemplateCategory");
      dw_category.openUrl(L"其他设置.vface/template/other/TemplateCategory");
            dw_category.SetColHeaderHeight(0);
            dw_category.SetRowSelectorWidth(0);               
            return 1;
         }
         int RemoveChild(xml__ x,string nodename)//根据名称删除节点
   int RemoveChild(xml x, xstring nodename)//根据名称删除节点
         {   
            msxml::IXMLDOMElement e;
            var list = x.GetXmlDoc().SelectNodes("//Item[@update.delete='1']");
      KXMLDOMElement e;
      var list = x.selectNodes(L"//Item[@update.delete='1']");
            if(list)
            {   
               int nlen = list.length;
@@ -249,48 +259,48 @@
         }         
         int setMaint_removeChild()
         {
            xml__ x=new xml__;
            x.setNativePointer(xml__::CreateInstance());
            dw_maint.DwUpdateAllTo(x.GetXmlDoc());
      xml x;
      dw_maint.DwUpdateAllTo(x);
            int row = dw_list.GetRow();
            //trace(x.GetXml());
            RemoveChild(x,"Item");
            RemoveAttribute(x,"TemplateContent");
            RemoveAttribute(x,"Item");
            RemoveAttribute(x,"ItemName");
            RemoveAttribute(x,"Remark");
            RemoveAttribute(x,"SeqNo");
            //trace(x.GetXml());
            dw_list.SetItemString(row, "TemplateContent", x.GetXml());
      //trace(x.xml());
      RemoveChild(x, L"Item");
      RemoveAttribute(x, L"TemplateContent");
      RemoveAttribute(x, L"Item");
      RemoveAttribute(x, L"ItemName");
      RemoveAttribute(x, L"Remark");
      RemoveAttribute(x, L"SeqNo");
      //trace(x.xml());
      dw_list.SetItemString(row, L"TemplateContent", x.xml());
            dw_list.Redraw();
            return 1;
         }
         int setItemCategory_removeChild()
         {
            xml__ x=new xml__;
            x.setNativePointer(xml__::CreateInstance());
            dw_category.DwUpdateAllTo(x.GetXmlDoc());
      xml x;
      dw_category.DwUpdateAllTo(x);
            int row = dw_list.GetRow();
            RemoveChild(x,"Item");
            trace(row);
            dw_list.SetItemString(row, "Category", x.GetXml());
      RemoveChild(x, L"Item");
      //trace(row);
      dw_list.SetItemString(row, L"Category", x.xml());
            dw_list.Redraw();            
            return 1;
         }                     
         int del(xdwtable__ dw_1)
   int del(xdwtable dw_1)
         {
            xdwtable__ dw = new xdwtable__;
      xdwtable dw = new xdwtable;
            dw.setNativePointer(dw_1.GetCurTable());
            int row = dw.GetRow();
            if(row < 1 || row > dw.GetRowCount()) return -1;
            dw.DeleteRow(row);
            //trace(dw.GetDwName());
            if(dw_1.GetDwName()=="TemplateContent")
      if (dw_1.GetDwName() == L"TemplateContent")
            {   
               OnChangeRowNo(row);
               if(dw.GetRowCount()==1 && dw.GetItemString(1,"ItemName")=="")
         if (dw.GetRowCount() == 1 && dw.GetItemString(1, L"ItemName") == L"")
               {
                  dw_list.SetItemString(rowno, "TemplateContent", "");
            dw_list.SetItemString(rowno, L"TemplateContent", L"");
                  dw_list.Redraw();
               }
               else
@@ -299,12 +309,12 @@
               }   
            
            }
            if(dw_1.GetDwName()=="Categorys")
      if (dw_1.GetDwName() == L"Categorys")
            {   
               trace(dw.GetRowCount());
               if(dw.GetRowCount()==1 && dw.GetItemString(1,"CategoryID")=="")
         //trace(dw.GetRowCount());
         if (dw.GetRowCount() == 1 && dw.GetItemString(1, L"CategoryID") == L"")
               {
                  dw_list.SetItemString(rowno, "Category", "");
            dw_list.SetItemString(rowno, L"Category", L"");
                  dw_list.Redraw();
               }
               else
@@ -318,54 +328,54 @@
         }         
         int SKUItem()
         {            
            xaserverarg__ arg=new xaserverarg__;
            arg.setNativePointer(arg.CreateInstance());
            arg.AddArg("dw_maint",dw_maint.__nativept.toString());
            openUrl("其他设置.vface/xpage/SKUItem/select",arg);
      xaserverarg arg;
      arg.AddArg(L"dw_maint", dw_maint.nativept.toString());
      openUrl(L"其他设置.vface/xpage/SKUItem/select", arg);
            return 1;            
         }
         int SKUItemcategory()
         {            
            xaserverarg__ arg=new xaserverarg__;
            arg.setNativePointer(arg.CreateInstance());
            arg.AddArg("dw_category",dw_category.__nativept.toString());
            openUrl("其他设置.vface/xpage/SKUItemcategory/select",arg);
      xaserverarg arg;
      arg.AddArg(L"dw_category", dw_category.nativept.toString());
      openUrl(L"其他设置.vface/xpage/SKUItemcategory/select", arg);
            return 1;            
         }
         int SKUItemModify()
         {                  
            openUrl("其他设置.vface/xpage/SKUItem/list");
      openUrl(L"其他设置.vface/xpage/SKUItem/list");
            return 1;            
         }         
         //命令发布函数
         int OnCmdDispatch(string comdid)
   int OnCmdDispatch(xstring comdid)
         {
            if (comdid =="save")  OnSave();
            else if (comdid =="AddRow") OnAddRow();
            else if (comdid =="InsertRow") OnInsertRow();
            else if (comdid =="DeleteRow") OnDeleteRow();
            else if (comdid =="SKUItem") SKUItem();
            else if (comdid =="SKUItemcategory") SKUItemcategory();
            else if(comdid == "del_1") del(dw_maint);
            else if(comdid == "del_2") del(dw_category);
            else if(comdid == "SKUItemModify") SKUItemModify();
      if (comdid == L"save")  OnSave();
      else if (comdid == L"AddRow") OnAddRow();
      else if (comdid == L"InsertRow") OnInsertRow();
      else if (comdid == L"DeleteRow") OnDeleteRow();
      else if (comdid == L"SKUItem") SKUItem();
      else if (comdid == L"SKUItemcategory") SKUItemcategory();
      else if (comdid == L"del_1") del(dw_maint);
      else if (comdid == L"del_2") del(dw_category);
      else if (comdid == L"SKUItemModify") SKUItemModify();
            return 0;
         }
         
         //命令处理事件
         int OnXCommand(ref TXCommandEvent evt,int p)
   int OnXCommand(TEvent* evt, LPARAM param)
         {
            return OnCmdDispatch(evt.pStrID);
      return OnCmdDispatch(evt->xcommand.pStrID);
         }
         
         int OnMaintChanged(ref TNotifyEvent evt,int p)
   int OnMaintChanged(TEvent* evt, LPARAM p)
         {   
            //trace("hello");
      //trace(L"hello");
            setMaint();
            return 1;
         }
         
         int OnCategoryChanged(ref TNotifyEvent evt,int p)
   int OnCategoryChanged(TEvent* evt, LPARAM p)
         {
            setItemCategory();         
            return 1;
@@ -374,12 +384,12 @@
         int OnAttachEvent()
         {
            //绑定工具条点击事件
            AttachEvent("WM_XCOMMAND",OnXCommand);
      AttachEvent(L"WM_XCOMMAND", (FEvent)&SKUTemplate::OnXCommand);
            //获取焦点事件,用于重置工具条
            AttachEvent("WM_SETFOCUS",OnSetFocus);
            AttachEvent("dw_maint","DWV_ITEMCHANGED",OnMaintChanged);
            AttachEvent("dw_category","DWV_ITEMCHANGED",OnCategoryChanged);
            AttachEvent("dw_list","DWV_ROWFOCUSCHANGED",OnRowChanged);
      AttachEvent(L"WM_SETFOCUS", (FEvent)&SKUTemplate::OnSetFocus);
      AttachEvent(L"dw_maint", L"DWV_ITEMCHANGED", (FEvent)&SKUTemplate::OnMaintChanged);
      AttachEvent(L"dw_category", L"DWV_ITEMCHANGED", (FEvent)&SKUTemplate::OnCategoryChanged);
      AttachEvent(L"dw_list", L"DWV_ROWFOCUSCHANGED", (FEvent)&SKUTemplate::OnRowChanged);
            return 1;
         }
@@ -391,29 +401,27 @@
         }         
         int onload()
         {   
            dw_list =  new xdwgrid__;
            dw_list.setNativePointer(this.GetControl("dw_list"));
            dw_list.openUrl("其他设置.vface/template/other/SKUTemplate");
      dw_list = new xdwgrid;
      dw_list.setNativePointer(GetControl(L"dw_list"));
      dw_list.openUrl(L"其他设置.vface/template/other/SKUTemplate");
            
            dw_maint = new xdwtable__;
            dw_maint.setNativePointer(GetControl("dw_maint"));
            dw_maint.openUrl("其他设置.vface/template/other/TemplateContent");
      dw_maint = new xdwtable;
      dw_maint.setNativePointer(GetControl(L"dw_maint"));
      dw_maint.openUrl(L"其他设置.vface/template/other/TemplateContent");
            dw_maint.SetColHeaderHeight(0);
            dw_maint.SetRowSelectorWidth(0);
            
            dw_category = new xdwtable__;
            dw_category.setNativePointer(GetControl("dw_category"));
            dw_category.openUrl("其他设置.vface/template/other/TemplateCategory");
      dw_category = new xdwtable;
      dw_category.setNativePointer(GetControl(L"dw_category"));
      dw_category.openUrl(L"其他设置.vface/template/other/TemplateCategory");
            dw_category.SetColHeaderHeight(0);
            dw_category.SetRowSelectorWidth(0);
            dw_category.SetReadOnly(true);                  
            OnInitial();
            OnReTrieve();
            xdwtable__ dw = new xdwtable__;
            dw.setNativePointer(dw_category.FindDwTable("Item",0));
            trace(dw.GetRowCount());
      xdwtable dw = new xdwtable;
      dw.setNativePointer(dw_category.FindDwTable(L"Item", 0));
      //trace(dw.GetRowCount());
            return 1;
         }
      ]
   ]
]
};