LiFan
2024-07-18 b6e2fbfc0469657db86b9757c1813d72f6727962
jrj/project/business/Quote/TOSelectDlg.cpp
@@ -1,40 +1,54 @@
use "xcontrol.vframe.vbusiness.vd"
use "xbase.vframe.vbusiness.vd"
use "base.view.vd"
#include <wobject/xstring.hpp>
#include <xcontrol/xtreeview.hpp>
#include <xcontrol/xdwgrid.hpp>
#include <wobject/xdouble.hpp>
#include <xcontrol/xlayersheet.hpp>
#include <xcontrol/xdatetimepick.hpp>
unit trade
[
   class TOSelectDlg :  public frame
#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
#include "viewobject/view.base.hpp"
using xml = KXMLDOMDocument;
   class __declspec(dllexport) TOSelectDlg :  public xframe
   {
   public:
      //xdwgrid   dw_list;
      xlistview  lv_view;
      xlistview  lv_view1;
      int columnCount;
      xnode   m_agentNode;   //Agent Condition
   public:
      TOSelectDlg(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
   public:
      static TOSelectDlg* CreateInstance(void* implPtr, void* hWnd)
      {
         TOSelectDlg* pWin = new TOSelectDlg(implPtr, (HWND)hWnd);
         return pWin;
      }
      int SetAgent()
      {
         string xfNodeAgentArea  = "agentarea";
         xstring xfNodeAgentArea  = L"agentarea";
         xnode anode = GetAgentNode(xfNodeAgentArea);
         if(m_agentNode)
         {
            SetAgentNodeContent (anode,m_agentNode);
            SetAgentNode (anode,m_agentNode);
         }
         else
         {
            msxml::IXMLDOMElement xframeElement =  GetElement();
            msxml::IXMLDOMElement agent = xframeElement.selectSingleNode("agent/"+xfNodeAgentArea+"[1]/*");
            KXMLDOMElement xframeElement =  GetElement();
            KXMLDOMElement agent = xframeElement.selectSingleNode(L"agent/"+xfNodeAgentArea+L"[1]/*");
            if(agent)
            {
               string s = agent.xml;
               m_agentNode =  SetAgentNodeContent (anode,s);
               xstring s = agent.xml();
               m_agentNode =  SetAgentNode (anode,s);
            }
         }
         return 1;
      }
      //焦点激活处理函数
      int OnSetFocus(ref TEvent evt,int param)
      int OnSetFocus(TEvent* evt, LPARAM param)
      {
         //重置工具条
         SetAgent();
@@ -42,26 +56,26 @@
      }
      //命令发布函数
      int OnCmdDispatch(string comdid)
      int OnCmdDispatch(xstring comdid)
      {
         if(comdid=="xmCancel")
         if(comdid==L"xmCancel")
         {
            CloseWindow();
            return 1;
         }
         else if(comdid=="xmOK")
         else if(comdid==L"xmOK")
         {
            int  LVNI_FOCUSED        = 0x0001;
            int nItem =xlistview::GetNextItem(lv_view.GetId(), -1, LVNI_FOCUSED);
            int nItem =lv_view.GetNextItem( -1, LVNI_FOCUSED);
            if(nItem < 0) return 1;
         
            if(GetParam())
            if(GetWinParam())
            {
               msxml::IXMLDOMElement ele = GetItemData(lv_view, nItem);
               xaserverarg arg = GetParam();
               arg.AddArg("action","new");
               arg.AddArg("ID",ele.getAttribute("guid"));
               arg.AddArg("id",ele.getAttribute("guid"));
               KXMLDOMElement ele = GetItemData(lv_view, nItem);
               xaserverarg arg = GetArg();
               arg.AddArg(L"action",L"new");
               arg.AddArg(L"ID",ele.getAttribute(L"guid"));
               arg.AddArg(L"id",ele.getAttribute(L"guid"));
            }
            //重置工具条
            CloseWindow();
@@ -70,7 +84,7 @@
         return 0;
      }
      
      msxml::IXMLDOMElement  GetItemData(xlistview lv_item, int hItem)
      KXMLDOMElement  GetItemData(xlistview lv_item, int hItem)
      {
         int LVIF_PARAM = 0x0004;
         
@@ -79,12 +93,12 @@
         lvItem.iSubItem = 0;
         lvItem.mask = LVIF_PARAM ;
         
         xlistview::GetItem(lv_item.GetId(), lvItem);
         msxml::IXMLDOMElement  ele = trust(lvItem.lParam as msxml::IXMLDOMElement);
         lv_view.GetItem(lv_item.GetId(), lvItem);
         KXMLDOMElement  ele = trust(lvItem.lParam as KXMLDOMElement);
         return ele;
      }
      
      int OnListViewDoubleClicked(ref TEvent evt,int param)
      int OnListViewDoubleClicked(TEvent* evt, LPARAM param)
      {
         int  LVNI_ALL                = 0x0000;
         int  LVNI_FOCUSED        = 0x0001;
@@ -92,23 +106,23 @@
         int  LVNI_CUT               = 0x0004;
         int  LVNI_DROPHILITED   = 0x0008;
         
         int nItem =xlistview::GetNextItem(lv_view.GetId(), -1, LVNI_FOCUSED);
         int nItem =lv_view.GetNextItem( -1, LVNI_FOCUSED);
         if(nItem < 0) return 1;
         
         if(GetParam())
         if(GetWinParam())
         {
            msxml::IXMLDOMElement ele = GetItemData(lv_view, nItem);
            xaserverarg arg = GetParam();
            arg.AddArg("action","new");
            arg.AddArg("ID",ele.getAttribute("guid"));
            arg.AddArg("id",ele.getAttribute("guid"));
            KXMLDOMElement ele = GetItemData(lv_view, nItem);
            xaserverarg arg = GetArg();
            arg.AddArg(L"action",L"new");
            arg.AddArg(L"ID",ele.getAttribute(L"guid"));
            arg.AddArg(L"id",ele.getAttribute(L"guid"));
         }
         //重置工具条
         CloseWindow();
         return 1;
      }
      
      int OnListViewDoubleClicked1(ref TEvent evt,int param)
      int OnListViewDoubleClicked1(TEvent* evt, LPARAM param)
      {
         int  LVNI_ALL                = 0x0000;
         int  LVNI_FOCUSED        = 0x0001;
@@ -116,17 +130,17 @@
         int  LVNI_CUT               = 0x0004;
         int  LVNI_DROPHILITED   = 0x0008;
         
         int nItem =xlistview::GetNextItem(lv_view1.GetId(), -1, LVNI_FOCUSED);
         int nItem =lv_view.GetNextItem(lv_view1.GetId(), -1, LVNI_FOCUSED);
         if(nItem < 0) return 1;
         
         if(GetParam())
         if(GetWinParam())
         {
            msxml::IXMLDOMElement ele = GetItemData(lv_view1, nItem);
            xaserverarg arg = GetParam();
            arg.AddArg("action","open");
            arg.AddArg("id",ele.getAttribute("id"));
            arg.AddArg("ID",ele.getAttribute("id"));
            arg.AddArg("ItemID",ele.getAttribute("itemid"));
            KXMLDOMElement ele = GetItemData(lv_view1, nItem);
            xaserverarg arg = GetArg();
            arg.AddArg(L"action",L"open");
            arg.AddArg(L"id",ele.getAttribute(L"id"));
            arg.AddArg(L"ID",ele.getAttribute(L"id"));
            arg.AddArg(L"ItemID",ele.getAttribute(L"itemid"));
         }
         //重置工具条
         //OnDocumentOpen();
@@ -134,96 +148,97 @@
         return 1;
      }
      int SetListViewHeaderColumn(string Url,xlistview lv_item)
      int SetListViewHeaderColumn(xstring Url,xlistview lv_item)
      {
         const int LVCFMT_LEFT = 0;
         for(int i=0;i<3;i++)  lv_item.DeleteColumn(lv_item.GetId(),1);
         //if(Url=="")
         //if(Url==L"")
         //{
            lv_item.InsertColumn(lv_item.GetId(),0,"创建日期",LVCFMT_LEFT,80,0);
            lv_item.InsertColumn(lv_item.GetId(),0,"创建人员",LVCFMT_LEFT,80,0);
            lv_item.InsertColumn(lv_item.GetId(),0,"名称",0,120,0);
            lv_item.InsertColumn(lv_item.GetId(),0,L"创建日期",LVCFMT_LEFT,80,0);
            lv_item.InsertColumn(lv_item.GetId(),0,L"创建人员",LVCFMT_LEFT,80,0);
            lv_item.InsertColumn(lv_item.GetId(),0,L"名称",0,120,0);
            columnCount = 3;
         //}
         return 1;
      }
      
      int SetListViewHeaderColumnItem(string Url,xlistview lv_item)
      int SetListViewHeaderColumnItem(xstring Url,xlistview lv_item)
      {
         const int LVCFMT_LEFT = 0;
         for(int i=0;i<6;i++)  lv_item.DeleteColumn(lv_item.GetId(),1);
         //if(Url=="")
         //if(Url==L"")
         //{
            lv_item.InsertColumn(lv_item.GetId(),0,"最后修改日期",LVCFMT_LEFT,80,0);
            lv_item.InsertColumn(lv_item.GetId(),0,"创建日期",LVCFMT_LEFT,80,0);
            lv_item.InsertColumn(lv_item.GetId(),0,"创建人员",LVCFMT_LEFT,80,0);
            lv_item.InsertColumn(lv_item.GetId(),0,"״̬",0,70,0);
            lv_item.InsertColumn(lv_item.GetId(),0,"主题",0,120,0);
            lv_item.InsertColumn(lv_item.GetId(),0,"编号",0,70,0);
            lv_item.InsertColumn(lv_item.GetId(),0,"事务",0,60,0);
            lv_item.InsertColumn(lv_item.GetId(),0,L"最后修改日期",LVCFMT_LEFT,80,0);
            lv_item.InsertColumn(lv_item.GetId(),0,L"创建日期",LVCFMT_LEFT,80,0);
            lv_item.InsertColumn(lv_item.GetId(),0,L"创建人员",LVCFMT_LEFT,80,0);
            lv_item.InsertColumn(lv_item.GetId(),0,L"״̬",0,70,0);
            lv_item.InsertColumn(lv_item.GetId(),0,L"主题",0,120,0);
            lv_item.InsertColumn(lv_item.GetId(),0,L"编号",0,70,0);
            lv_item.InsertColumn(lv_item.GetId(),0,L"事务",0,60,0);
            columnCount = 6;
         //}
         return 1;
      }
      //命令处理事件
      int OnXCommand(ref TXCommandEvent evt,int param)
      int OnXCommand(TEvent* evt, LPARAM param)
      {
         return OnCmdDispatch(evt.pStrID);
         return OnCmdDispatch(evt->xcommand.pStrID);
      }
      
      int OnAttachEvent()
      {
         //绑定工具条点击事件
         AttachEvent("WM_XCOMMAND",OnXCommand);
         AttachEvent(L"WM_XCOMMAND", (FEvent)&TOSelectDlg::OnXCommand);
         //获取焦点事件,用于重置工具条
         AttachEvent("WM_SETFOCUS",OnSetFocus);
         AttachEvent(L"WM_SETFOCUS", (FEvent)&TOSelectDlg::OnSetFocus);
         return 1;
      }
      
      int RetrieveEx()
      {
         xml x = ViewObject::RetrieveData("/sale/data/TO/business/document/list");
         xml x = ViewObject::RetrieveData(L"/sale/data/TO/business/document/list");
         if(x)
         {
            msxml::IXMLDOMElement ele = x.GetXmlDoc().documentElement;
            msxml::IXMLDOMNodeList nlist=ele.SelectNodes("*");
            int s=nlist.length;
            KXMLDOMElement ele = x.documentElement();
            KXMLDOMNodeList nlist=ele.selectNodes(L"*");
            int s=nlist.length();
            if (s>0)
            {
               for (int i=0; i<s; i++)
               {
                  msxml::IXMLDOMElement e=nlist.item(i);
                  string name=e.getAttribute("caption");
                  int nItem = xlistview::InsertItemEx(lv_view1.GetId(),0,name,23,cast(e as int));
                  KXMLDOMElement e=nlist.item(i);
                  xstring name=e.getAttribute(L"caption");
                  int nItem = lv_view.InsertItemEx(0,name,23,e );
                  
                  xlistview::SetItemText(lv_view1.GetId(),nItem,2,e.getAttribute("subject"));
                  xlistview::SetItemText(lv_view1.GetId(),nItem,4,e.getAttribute("CreatorID"));
                  xlistview::SetItemText(lv_view1.GetId(),nItem,5,e.getAttribute("CreateDate"));
                  xlistview::SetItemText(lv_view1.GetId(),nItem,6,e.getAttribute("LastUpdateDate"));
                  lv_view.SetItemText(nItem,2,e.getAttribute(L"subject"));
                  lv_view.SetItemText(nItem,4,e.getAttribute(L"CreatorID"));
                  lv_view.SetItemText(nItem,5,e.getAttribute(L"CreateDate"));
                  lv_view.SetItemText(nItem,6,e.getAttribute(L"LastUpdateDate"));
               }      
            }
         }
         return 1;
      }
      
      int Retrieve(string src)
      int Retrieve(xstring src)
      {
         xml x = ViewObject::RetrieveData("/sale/data/TO/template/list", "role","");
         xml x = ViewObject::RetrieveData(L"/sale/data/TO/template/list", L"role",L"");
         if(x)
         {
            msxml::IXMLDOMElement ele = x.GetXmlDoc().documentElement;
            msxml::IXMLDOMNodeList nlist=ele.SelectNodes("*");
            int s=nlist.length;
            KXMLDOMElement ele = x.documentElement();
            KXMLDOMNodeList nlist=ele.selectNodes(L"*");
            int s=nlist.length();
            if (s>0)
            {
               for (int i=0; i<s; i++)
               {
                  msxml::IXMLDOMElement e=nlist.item(i);
                  string name=e.getAttribute("caption");
                  int nItem = xlistview::InsertItemEx(lv_view.GetId(),0,name,23,cast(e as int));
                  KXMLDOMElement e=nlist.item(i);
                  xstring name=e.getAttribute(L"caption");
                  int nItem = lv_view.InsertItemEx(0,name,23,e);
                  
                  xlistview::SetItemText(lv_view.GetId(),nItem,1,e.getAttribute("Creator"));
                  xlistview::SetItemText(lv_view.GetId(),nItem,2,e.getAttribute("CreateDate"));
                  lv_view.SetItemText(nItem,1,e.getAttribute(L"Creator"));
                  lv_view.SetItemText(nItem,2,e.getAttribute(L"CreateDate"));
               }      
            }
         }
@@ -232,24 +247,24 @@
      
      int onload()
      {
         lv_view = GetControl("lv_view");
         xlistview::SetdwStyle(lv_view.GetId(),0);
         SetArg();
         lv_view = GetControl(L"lv_view");
         lv_view.SetdwStyle(0);
         
         lv_view1 = GetControl("lv_view1");
         //xlistview::SetdwStyle(lv_view1.GetId(),0);
         lv_view1 = GetControl(L"lv_view1");
         //lv_view.SetdwStyle(lv_view1.GetId(),0);
            
         columnCount = 0;
         SetListViewHeaderColumn("",lv_view);
         SetListViewHeaderColumnItem("",lv_view1);
         AttachEvent("lv_view", "NM_DBLCLK",OnListViewDoubleClicked);
         AttachEvent("lv_view1", "NM_DBLCLK",OnListViewDoubleClicked1);
         SetListViewHeaderColumn(L"",lv_view);
         SetListViewHeaderColumnItem(L"",lv_view1);
         AttachEvent(L"lv_view", L"NM_DBLCLK", (FEvent)&TOSelectDlg::OnListViewDoubleClicked);
         AttachEvent(L"lv_view1", L"NM_DBLCLK", (FEvent)&TOSelectDlg::OnListViewDoubleClicked1);
      
         OnAttachEvent();
         
         Retrieve("");
         Retrieve(L"");
         RetrieveEx();
         
         return 1;
      }
   };
]