|  |  | 
 |  |  | class SearchDlg :  public xframe | 
 |  |  |    { | 
 |  |  |       xnode   m_agentNode;   //Agent Condition | 
 |  |  | #include <wobject/xstring.hpp> | 
 |  |  | #include <xcontrol/xtreeview.hpp> | 
 |  |  | #include <xcontrol/xdwgrid.hpp> | 
 |  |  |  | 
 |  |  |       xcontrol sle_1; | 
 |  |  | 	 | 
 |  |  | #include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" | 
 |  |  | #include "viewobject/view.base.hpp" | 
 |  |  |  | 
 |  |  | using xml = KXMLDOMDocument; | 
 |  |  |    class __declspec(dllexport) SupplierUserGroupPersonSelect : public xframe | 
 |  |  |    { | 
 |  |  |    public: | 
 |  |  |       xdwgrid   dw_list; | 
 |  |  |  | 
 |  |  |       xnode   m_agentNode;   //Agent Condition | 
 |  |  |       xstring   m_sTxt; | 
 |  |  |    public: | 
 |  |  |       SupplierUserGroupPersonSelect(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} | 
 |  |  |    public: | 
 |  |  |       static SupplierUserGroupPersonSelect* CreateInstance(void* implPtr, void* hWnd) | 
 |  |  |       { | 
 |  |  |          SupplierUserGroupPersonSelect* pWin = new SupplierUserGroupPersonSelect(implPtr, (HWND)hWnd); | 
 |  |  |          return pWin; | 
 |  |  |       } | 
 |  |  |       int SetAgent() | 
 |  |  |       { | 
 |  |  |          string xfNodeAgentArea  = "agentarea"; | 
 |  |  |          xstring xfNodeAgentArea = L"agentarea"; | 
 |  |  |          xnode anode = GetAgentNode(xfNodeAgentArea); | 
 |  |  |          if(m_agentNode) | 
 |  |  |          if (m_agentNode) | 
 |  |  |          { | 
 |  |  |             SetAgentNodeContent (anode,m_agentNode); | 
 |  |  |             SetAgentNode(anode, m_agentNode); | 
 |  |  |          } | 
 |  |  |          else | 
 |  |  |          { | 
 |  |  |             msxml::IXMLDOMElement xframeElement =  GetElement(); | 
 |  |  |             msxml::IXMLDOMElement agent = xframeElement.selectSingleNode("agent/"+xfNodeAgentArea+"[1]/*"); | 
 |  |  |             if(agent) | 
 |  |  |             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(); | 
 |  |  |          //重置工具条 | 
 |  |  |          return 1; | 
 |  |  |       } | 
 |  |  | 				 | 
 |  |  |       int OnOk() | 
 |  |  |  | 
 |  |  |       int  OnRetrieve() | 
 |  |  |       { | 
 |  |  |          if(GetParam()) | 
 |  |  |          xcontrol xc = GetControl(L"QueryTxt"); | 
 |  |  |          m_sTxt = xc.GetText() + L""; | 
 |  |  |          xml x; | 
 |  |  | 		 | 
 |  |  |          xaserverarg arg; | 
 |  |  | 			 | 
 |  |  |          arg.AddArg(L"sTxt", m_sTxt); | 
 |  |  |          if (xurl::post(L"OrganizationStruct/Supplier.select.Person", arg.GetString(), x) != 1) | 
 |  |  |          { | 
 |  |  |             xaserverarg arg = GetParam(); | 
 |  |  |             arg.AddArg("text",GetControl("sl_search").GetText()); | 
 |  |  |             CloseWindow(); | 
 |  |  |             trace(x.text()); | 
 |  |  |             return -1; | 
 |  |  |          } | 
 |  |  |          else | 
 |  |  |          { | 
 |  |  |             dw_list.Retrieve(x); | 
 |  |  |             dw_list.Redraw(); | 
 |  |  |             dw_list.SetReadOnly(true); | 
 |  |  |          } | 
 |  |  |          return 1; | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       //命令发布函数 | 
 |  |  |       int OnCmdDispatch(string comdid) | 
 |  |  |       int OnOK() | 
 |  |  |       { | 
 |  |  |          if(comdid=="xmCancel") | 
 |  |  |          xaserverarg arg = GetArg(); | 
 |  |  |          arg.AddArg(L"comdid", L"xmOk"); | 
 |  |  |          int row = dw_list.GetNextSelectRow(1); | 
 |  |  |          if (row < 1) | 
 |  |  |          { | 
 |  |  |             CloseWindow(); | 
 |  |  |             alert(L"请选择人员!"); | 
 |  |  |             return 1; | 
 |  |  |          } | 
 |  |  |          else if(comdid=="xmOk") return OnOk(); | 
 |  |  |  | 
 |  |  |          xstring str = L"<root>"; | 
 |  |  |          while (row > 0 && row <= dw_list.GetRowCount()) | 
 |  |  |          { | 
 |  |  |             KXMLDOMElement e = dw_list.GetRowElement(row); | 
 |  |  |             xstring PersonID = e.selectSingleNode(L"PersonID").text() + xstring(L""); | 
 |  |  |             xstring Name = e.selectSingleNode(L"Name").text() + xstring(L""); | 
 |  |  |             xstring No = e.selectSingleNode(L"EmployeeNo").text() + xstring(L""); | 
 |  |  |             str += L"<item PersonID='" + PersonID + L"' Name='" + Name + L"' No='" + No + L"'/>"; | 
 |  |  |             row = dw_list.GetNextSelectRow(row + 1); | 
 |  |  |          } | 
 |  |  |          str += L"</root>"; | 
 |  |  |          arg.AddArg(L"data", str); | 
 |  |  |          CloseWindow(); | 
 |  |  |          return 1; | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       //命令发布函数 | 
 |  |  |       int OnCmdDispatch(xstring comdid) | 
 |  |  |       { | 
 |  |  |          if (comdid == L"xmOk") | 
 |  |  |             OnOK(); | 
 |  |  |          else if (comdid == L"query") | 
 |  |  |          { | 
 |  |  |             OnRetrieve(); | 
 |  |  |          } | 
 |  |  |          else if (comdid == L"xmCancel") | 
 |  |  |             CloseWindow(); | 
 |  |  |          return 0; | 
 |  |  |       } | 
 |  |  | 		 | 
 |  |  |  | 
 |  |  |       //命令处理事件 | 
 |  |  |       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)&SupplierUserGroupPersonSelect::OnXCommand); | 
 |  |  |          //获取焦点事件,用于重置工具条 | 
 |  |  |          AttachEvent("WM_SETFOCUS",OnSetFocus); | 
 |  |  |       } | 
 |  |  | 	 | 
 |  |  |       int onload() | 
 |  |  |       { | 
 |  |  |          sle_1 = GetControl("sl_search"); | 
 |  |  |          int x = win32::GetWindowLong(sle_1.GetId(), -16); //GWL_STYLE | 
 |  |  |          x = x+ 0x0008; | 
 |  |  |          win32::SetWindowLong(sle_1.GetId(), -16,x);//sle_1是编辑窗口控件 | 
 |  |  | 			 | 
 |  |  |          OnAttachEvent(); | 
 |  |  |          if(GetParam()) | 
 |  |  |          { | 
 |  |  |             xaserverarg arg = GetParam(); | 
 |  |  |             GetControl("sl_search").SetText(arg.GetArgString("text")); | 
 |  |  |          } | 
 |  |  | 			 | 
 |  |  |          AttachEvent(L"WM_SETFOCUS", (FEvent)&SupplierUserGroupPersonSelect::OnSetFocus); | 
 |  |  |          return 1; | 
 |  |  |       } | 
 |  |  | 		 | 
 |  |  |    }; | 
 |  |  |  | 
 |  |  |       int OnInitial() | 
 |  |  |       { | 
 |  |  |          //SetAgent(); | 
 |  |  |          OnAttachEvent(); | 
 |  |  |          return 1; | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       int onload() | 
 |  |  |       { | 
 |  |  |          SetArg(); | 
 |  |  |          dw_list = GetControl(L"dw_list"); | 
 |  |  |          dw_list.openUrl(L"组织架构.vface/template/HrEmployee/PersonSel"); | 
 |  |  |          dw_list.SetSelectionMode(3); | 
 |  |  |          dw_list.SetReadOnly(true); | 
 |  |  |  | 
 |  |  |          OnInitial(); | 
 |  |  |          OnRetrieve(); | 
 |  |  |  | 
 |  |  |          return 1; | 
 |  |  |       } | 
 |  |  |    }; |