|  |  | 
 |  |  | 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" | 
 |  |  | #include <xcontrol/xlistview.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(); | 
 |  |  | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       //命令发布函数 | 
 |  |  |       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(); | 
 |  |  | 
 |  |  |          return 0; | 
 |  |  |       } | 
 |  |  |        | 
 |  |  |       msxml::IXMLDOMElement  GetItemData(xlistview lv_item, int hItem) | 
 |  |  |       KXMLDOMElement  GetItemData(xlistview lv_item, int hItem) | 
 |  |  |       { | 
 |  |  |          int LVIF_PARAM = 0x0004; | 
 |  |  |           | 
 |  |  | 
 |  |  |          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( lvItem); | 
 |  |  | 		 | 
 |  |  |          KXMLDOMElement ele = lvItem.lParam; | 
 |  |  |          return ele; | 
 |  |  |       } | 
 |  |  |        | 
 |  |  |       int OnListViewDoubleClicked(ref TEvent evt,int param) | 
 |  |  |       int OnListViewDoubleClicked(TEvent* evt, LPARAM param) | 
 |  |  |       { | 
 |  |  |          int  LVNI_ALL                = 0x0000; | 
 |  |  |          int  LVNI_FOCUSED        = 0x0001; | 
 |  |  | 
 |  |  |          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; | 
 |  |  | 
 |  |  |          int  LVNI_CUT               = 0x0004; | 
 |  |  |          int  LVNI_DROPHILITED   = 0x0008; | 
 |  |  |           | 
 |  |  |          int nItem =xlistview::GetNextItem(lv_view1.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_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(); | 
 |  |  | 
 |  |  |          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=="") | 
 |  |  |          for(int i=0;i<3;i++)  lv_item.DeleteColumn(1); | 
 |  |  |          //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(0,L"创建日期",LVCFMT_LEFT,80,0); | 
 |  |  |             lv_item.InsertColumn(0,L"创建人员",LVCFMT_LEFT,80,0); | 
 |  |  |             lv_item.InsertColumn(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=="") | 
 |  |  |          for(int i=0;i<6;i++)  lv_item.DeleteColumn(1); | 
 |  |  |          //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(0,L"最后修改日期",LVCFMT_LEFT,80,0); | 
 |  |  |             lv_item.InsertColumn(0,L"创建日期",LVCFMT_LEFT,80,0); | 
 |  |  |             lv_item.InsertColumn(0,L"创建人员",LVCFMT_LEFT,80,0); | 
 |  |  |             lv_item.InsertColumn(0,L"״̬",0,70,0); | 
 |  |  |             lv_item.InsertColumn(0,L"主题",0,120,0); | 
 |  |  |             lv_item.InsertColumn(0,L"编号",0,70,0); | 
 |  |  |             lv_item.InsertColumn(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")); | 
 |  |  |                }       | 
 |  |  |             } | 
 |  |  |          } | 
 |  |  | 
 |  |  |        | 
 |  |  |       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; | 
 |  |  |       } | 
 |  |  |    }; | 
 |  |  | ] | 
 |  |  |    }; |