|  |  | 
 |  |  | use "win.vl" | 
 |  |  | use "treeview.vm" | 
 |  |  | 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 "dev:code[pa.tpp]" | 
 |  |  | use "dev:vm[control.vm]" | 
 |  |  | #include "dev:xpage[SysUser.vx]" | 
 |  |  | #include <wobject/xstring.hpp> | 
 |  |  | #include <xcontrol/xtreeview.hpp> | 
 |  |  | #include <xcontrol/xdwgrid.hpp> | 
 |  |  | #include <wobject/xdouble.hpp> | 
 |  |  | #include <xcontrol/xlayersheet.hpp> | 
 |  |  |  | 
 |  |  | unit vbusiness.xpage tpp | 
 |  |  | [ | 
 |  |  |    class pa | 
 |  |  | #include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" | 
 |  |  | #include "viewobject/view.base.hpp" | 
 |  |  |  | 
 |  |  | #include "SysUser.hpp" | 
 |  |  |  | 
 |  |  | using xml = KXMLDOMDocument; | 
 |  |  | class __declspec(dllexport) AddUser : public xwin | 
 |  |  | { | 
 |  |  |  | 
 |  |  | public: | 
 |  |  |  | 
 |  |  |    xstring note; | 
 |  |  |    int hitem; | 
 |  |  |    int row; | 
 |  |  |    int wid; | 
 |  |  |    xtreeview tv; | 
 |  |  |    xdwgrid dw; | 
 |  |  |    xwin pwin; | 
 |  |  |    pa p; | 
 |  |  | public: | 
 |  |  |    AddUser(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd) {} | 
 |  |  | public: | 
 |  |  |    static AddUser* CreateInstance(void* implPtr, void* hWnd) | 
 |  |  |    { | 
 |  |  |       string note; | 
 |  |  |       int hitem; | 
 |  |  |       int row; | 
 |  |  |       int wid; | 
 |  |  |       treeview__ tv; | 
 |  |  |       xdwgrid__ dw; | 
 |  |  |       win__ pwin; | 
 |  |  |       AddUser* pWin = new AddUser(implPtr, (HWND)hWnd); | 
 |  |  |       return pWin; | 
 |  |  |    } | 
 |  |  | ] | 
 |  |  |  | 
 |  |  | unit vbusiness.xpage | 
 |  |  | [ | 
 |  |  |    AddUser is extend win__; | 
 |  |  |    about AddUser | 
 |  |  |    [ | 
 |  |  |       control: | 
 |  |  |    int SetAgent() | 
 |  |  |    { | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |    //焦点激活处理函数 | 
 |  |  |    int OnSetFocus(TEvent* evt, LPARAM param) | 
 |  |  |    { | 
 |  |  |       int SetAgent(); | 
 |  |  |  | 
 |  |  |       //重置工具条 | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |    int AppendItem(xml x, KXMLDOMElement r, xstring item) { | 
 |  |  |       auto e = x.createElement(item); | 
 |  |  |       //xcontrol xc = GetControl(item); | 
 |  |  |       xcontrol xc = GetControl(item); | 
 |  |  |       e.settext(xc.GetText()); | 
 |  |  |       r.appendChild(e); | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int OnSave() | 
 |  |  |    { | 
 |  |  |       xcontrol xc = GetControl(L"UserName"); | 
 |  |  |       /*xc=GetControl(L"EmployeeNo"); | 
 |  |  |       if (xc.GetText()==L"") | 
 |  |  |       { | 
 |  |  |          alert(L"用户代码不能为空!"); | 
 |  |  |          return 0; | 
 |  |  |       }*/ | 
 |  |  |        | 
 |  |  |       method: | 
 |  |  |       [ | 
 |  |  |          pa p; | 
 |  |  | 			 | 
 |  |  |          int SetAgent() | 
 |  |  |          { | 
 |  |  |             return 1; | 
 |  |  |          } | 
 |  |  |          //焦点激活处理函数 | 
 |  |  |          int OnSetFocus(ref TEvent evt,int param) | 
 |  |  |          { | 
 |  |  |             int SetAgent(); | 
 |  |  |       if (xc.GetText() == L"") | 
 |  |  |       { | 
 |  |  |          alert(L"用户名称不能为空!"); | 
 |  |  |          return 0; | 
 |  |  |       } | 
 |  |  |       xml x; | 
 |  |  |  | 
 |  |  |             //重置工具条 | 
 |  |  |             return 1; | 
 |  |  |          } | 
 |  |  |          int AppendItem(xml__ x,msxml::IXMLDOMElement r,string item){ | 
 |  |  |             var e = x.GetXmlDoc().createElement(item); | 
 |  |  |             //xcontrol xc = GetControl(item); | 
 |  |  |             control__ xc = new control__; | 
 |  |  |             xc.setNativePointer(this.GetControl(item)); | 
 |  |  |             e.text = xc.GetText(); | 
 |  |  |             r.appendChild(e);		 | 
 |  |  |             return 1; | 
 |  |  |          } | 
 |  |  | 			 | 
 |  |  |          int OnSave() | 
 |  |  |          { | 
 |  |  |             control__ xc = new control__; | 
 |  |  |             /*xc=GetControl("EmployeeNo"); | 
 |  |  |             if (xc.GetText()=="") | 
 |  |  |             { | 
 |  |  |                alert("用户代码不能为空!"); | 
 |  |  |                return 0; | 
 |  |  |             }*/ | 
 |  |  |             xc=GetControl("UserName"); | 
 |  |  |             if (xc.GetText()=="") | 
 |  |  |             { | 
 |  |  |                alert("用户名称不能为空!"); | 
 |  |  |                return 0; | 
 |  |  |             }		 | 
 |  |  |             xml__ x = new xml__; | 
 |  |  |             x.setNativePointer(x.CreateInstance()); | 
 |  |  |             xaserverarg__ arg = new xaserverarg__; | 
 |  |  |             arg.setNativePointer(arg.CreateInstance()); | 
 |  |  |             x.LoadXml("<SysUser/>"); | 
 |  |  |             var r = x.GetXmlDoc().documentElement; | 
 |  |  |             string guid; | 
 |  |  |             string guid1; | 
 |  |  |             if (p.note=="修改") | 
 |  |  |             { | 
 |  |  |                msxml::IXMLDOMElement ele=xdwgrid__::GetRowElement(p.row); | 
 |  |  |                guid = ele.selectSingleNode("UserID").text; | 
 |  |  |                //guid=ele.getAttribute("guid"); | 
 |  |  |                //if (ele.selectSingleNode("empid")) | 
 |  |  |                //   r.appendChild(ele.selectSingleNode("empid"));			 | 
 |  |  |             } | 
 |  |  |             else | 
 |  |  |                guid=win__::GetGuid(); | 
 |  |  |                //guid1=win32::GetGuid(); | 
 |  |  |             r.setAttribute("guid",guid); | 
 |  |  |             //r.setAttribute("guid1",guid1); | 
 |  |  |             //AppendItem(x,r,"EmployeeNo"); | 
 |  |  |             AppendItem(x,r,"UserName"); | 
 |  |  |             AppendItem(x,r,"PassWord"); | 
 |  |  |             AppendItem(x,r,"Status"); | 
 |  |  |             //trace(x.GetXml()); | 
 |  |  |             //return 1; | 
 |  |  |             arg.AddArg("content",x.GetXml()); | 
 |  |  |             int ls_item = treeview__::GetSelectedItem(p.wid); | 
 |  |  |             msxml::IXMLDOMElement e=treeview__::GetItemData(p.wid,ls_item); | 
 |  |  |             string gpguid=e.selectSingleNode("@guid").text; | 
 |  |  |             arg.AddArg("gpguid",gpguid);			 | 
 |  |  |             if (xaserver__::ExecXAction(GetServerUrl(),"[update.User.xa]",arg.GetString())==1) | 
 |  |  |             { | 
 |  |  |                alert("ok"); | 
 |  |  |                if (p.note=="修改") | 
 |  |  |                { | 
 |  |  |                   xdwgrid__ dw = new xdwgrid__; | 
 |  |  |                   //dw.setNativePointer(p.dw_user); | 
 |  |  |                   int row = dw.GetNextSelectRow(0); | 
 |  |  |                   //dw.SetItemString(row,"UserName",""); | 
 |  |  |                   msxml::IXMLDOMElement e; | 
 |  |  |                   e = x.GetXmlDoc().documentElement; | 
 |  |  |                   string ls_pass = e.selectSingleNode("PassWord").text; | 
 |  |  |                   string ls_status = e.selectSingleNode("Status").text; | 
 |  |  |                   dw.SetItemString(row,"PassWord",ls_pass); | 
 |  |  |                   dw.SetItemString(row,"Status",ls_status); | 
 |  |  |                   dw.Redraw(); | 
 |  |  |                } | 
 |  |  |                else | 
 |  |  |                { | 
 |  |  |                //---------- | 
 |  |  |                   //p.pwin.OnTreeSelChanged(); | 
 |  |  |                } | 
 |  |  |             } | 
 |  |  |             else | 
 |  |  |             { | 
 |  |  |                alert("保存出错!"); | 
 |  |  |                return 0; | 
 |  |  |             } | 
 |  |  |             return 1;		 | 
 |  |  |          } | 
 |  |  | 			 | 
 |  |  |          int ClearItem(string item) | 
 |  |  |          { | 
 |  |  |             control__ xc = new control__; | 
 |  |  |             xc.setNativePointer(GetControl(item)); | 
 |  |  |             xc.SetText(""); | 
 |  |  |             return 1; | 
 |  |  |          } | 
 |  |  |          //命令发布函数 | 
 |  |  |          int OnCmdDispatch(string comdid) | 
 |  |  |          { | 
 |  |  |             if (comdid=="cb_cancel") | 
 |  |  |                CloseWindow(); | 
 |  |  |             else if(comdid=="cb_ok") | 
 |  |  |             { | 
 |  |  |                int r=OnSave(); | 
 |  |  |                if (r==1) | 
 |  |  |                   CloseWindow(); | 
 |  |  |             } | 
 |  |  |             else if(comdid=="cb_save") | 
 |  |  |             { | 
 |  |  |                OnSave(); | 
 |  |  |                p.note="新增"; | 
 |  |  |                win__::SetWindowText(GetHWND(),p.note+"用户"); | 
 |  |  |                ClearItem("userno"); | 
 |  |  |                ClearItem("username"); | 
 |  |  |                ClearItem("pwd"); | 
 |  |  |             } | 
 |  |  |             return 0; | 
 |  |  |          } | 
 |  |  | 			 | 
 |  |  |          //命令处理事件 | 
 |  |  |          int OnXCommand(ref TXCommandEvent evt,int param) | 
 |  |  |          { | 
 |  |  |             return OnCmdDispatch(evt.pStrID); | 
 |  |  |          } | 
 |  |  | 			 | 
 |  |  |          int OnAttachEvent() | 
 |  |  |          { | 
 |  |  |             //绑定工具条点击事件 | 
 |  |  |             AttachEvent("WM_XCOMMAND",OnXCommand); | 
 |  |  |             //获取焦点事件,用于重置工具条 | 
 |  |  |             AttachEvent("WM_SETFOCUS",OnSetFocus); | 
 |  |  |          } | 
 |  |  | 			 | 
 |  |  |          int OnInitial() | 
 |  |  |          { | 
 |  |  |             SetAgent(); | 
 |  |  |       xaserverarg arg; | 
 |  |  |  | 
 |  |  |             OnAttachEvent(); | 
 |  |  | 				 | 
 |  |  |             return 1; | 
 |  |  |          } | 
 |  |  | 			 | 
 |  |  |          int SetItem(string value,string item){ | 
 |  |  |             control__ xc = new control__; | 
 |  |  |             xc.setNativePointer(GetControl(item)); | 
 |  |  |             xc.SetText(value);	 | 
 |  |  |             return 1; | 
 |  |  |          }	 | 
 |  |  |          int onload() | 
 |  |  |       x.loadXML(L"<SysUser/>"); | 
 |  |  |       auto r = x.documentElement(); | 
 |  |  |       xstring guid; | 
 |  |  |       xstring guid1; | 
 |  |  |       if (p.note == L"修改") | 
 |  |  |       { | 
 |  |  |          KXMLDOMElement ele = xdwgrid::GetRowElement(p.row); | 
 |  |  |          guid = ele.selectSingleNode(L"UserID").text(); | 
 |  |  |          //guid=ele.getAttribute(L"guid"); | 
 |  |  |          //if (ele.selectSingleNode(L"empid")) | 
 |  |  |          //   r.appendChild(ele.selectSingleNode(L"empid"));			 | 
 |  |  |       } | 
 |  |  |       else | 
 |  |  |          guid = GetGuid(); | 
 |  |  |       //guid1=win32::GetGuid(); | 
 |  |  |       r.setAttribute(L"guid", guid); | 
 |  |  |       //r.setAttribute(L"guid1",guid1); | 
 |  |  |       //AppendItem(x,r,L"EmployeeNo"); | 
 |  |  |       AppendItem(x, r, L"UserName"); | 
 |  |  |       AppendItem(x, r, L"PassWord"); | 
 |  |  |       AppendItem(x, r, L"Status"); | 
 |  |  |       //trace(x.xml()); | 
 |  |  |       //return 1; | 
 |  |  |       arg.AddArg(L"content", x.xml()); | 
 |  |  |       int ls_item = treeview::GetSelectedItem(p.wid); | 
 |  |  |       KXMLDOMElement e = treeview::GetItemData(p.wid, ls_item); | 
 |  |  |       xstring gpguid = e.selectSingleNode(L"@guid").text(); | 
 |  |  |       arg.AddArg(L"gpguid", gpguid); | 
 |  |  |       if (xaserver::ExecXAction(GetServerUrl(), L"[update.User.xa]", arg.GetString()) == 1) | 
 |  |  |       { | 
 |  |  |          alert(L"ok"); | 
 |  |  |          if (p.note == L"修改") | 
 |  |  |          { | 
 |  |  |             OnInitial(); | 
 |  |  |             p = new pa; | 
 |  |  | 				 | 
 |  |  |             if(this.GetParam()) | 
 |  |  |             { | 
 |  |  |                p=GetParam(); | 
 |  |  |                win__::SetWindowText(GetHWND(),p.note+"用户"); | 
 |  |  |                if (p.note=="修改") | 
 |  |  |                { | 
 |  |  |                   xdwgrid__ dw = new xdwgrid__; | 
 |  |  |                   dw.setNativePointer(p.dw); | 
 |  |  |                   msxml::IXMLDOMElement ele=dw.GetRowElement(p.row); | 
 |  |  |                   //if(ele.selectSingleNode("EmployeeNo")) | 
 |  |  |                      //SetItem(ele.selectSingleNode("EmployeeNo").text,"EmployeeNo"); | 
 |  |  |                   if(ele.selectSingleNode("UserName")) | 
 |  |  |                      SetItem(ele.selectSingleNode("UserName").text,"UserName"); | 
 |  |  |                   if(ele.selectSingleNode("PassWord")) | 
 |  |  |                      SetItem(ele.selectSingleNode("PassWord").text,"PassWord"); | 
 |  |  |                   if(ele.selectSingleNode("Status")) | 
 |  |  |                      SetItem(ele.selectSingleNode("Status").text,"Status"); | 
 |  |  |                trace("Aa"); | 
 |  |  |                return 1; | 
 |  |  |                } | 
 |  |  |             }		 | 
 |  |  |             xdwgrid dw = new xdwgrid; | 
 |  |  |             //dw.setNativePointer(p.dw_user); | 
 |  |  |             int row = dw.GetNextSelectRow(0); | 
 |  |  |             //dw.SetItemString(row,L"UserName",L""); | 
 |  |  |             KXMLDOMElement e; | 
 |  |  |             e = x.documentElement(); | 
 |  |  |             xstring ls_pass = e.selectSingleNode(L"PassWord").text(); | 
 |  |  |             xstring ls_status = e.selectSingleNode(L"Status").text(); | 
 |  |  |             dw.SetItemString(row, L"PassWord", ls_pass); | 
 |  |  |             dw.SetItemString(row, L"Status", ls_status); | 
 |  |  |             dw.Redraw(); | 
 |  |  |          } | 
 |  |  |          else | 
 |  |  |          { | 
 |  |  |             //---------- | 
 |  |  |                //p.pwin.OnTreeSelChanged(); | 
 |  |  |          } | 
 |  |  |       } | 
 |  |  |       else | 
 |  |  |       { | 
 |  |  |          alert(L"保存出错!"); | 
 |  |  |          return 0; | 
 |  |  |       } | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int ClearItem(xstring item) | 
 |  |  |    { | 
 |  |  |       xcontrol xc =GetControl(item); | 
 |  |  |       xc.SetText(L""); | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |    //命令发布函数 | 
 |  |  |    int OnCmdDispatch(xstring comdid) | 
 |  |  |    { | 
 |  |  |       if (comdid == L"cb_cancel") | 
 |  |  |          CloseWindow(); | 
 |  |  |       else if (comdid == L"cb_ok") | 
 |  |  |       { | 
 |  |  |          int r = OnSave(); | 
 |  |  |          if (r == 1) | 
 |  |  |             CloseWindow(); | 
 |  |  |       } | 
 |  |  |       else if (comdid == L"cb_save") | 
 |  |  |       { | 
 |  |  |          OnSave(); | 
 |  |  |          p.note = L"新增"; | 
 |  |  |          SetWindowText(GetHWND(), p.note + L"用户"); | 
 |  |  |          ClearItem(L"userno"); | 
 |  |  |          ClearItem(L"username"); | 
 |  |  |          ClearItem(L"pwd"); | 
 |  |  |       } | 
 |  |  |       return 0; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    //命令处理事件 | 
 |  |  |    int OnXCommand(TEvent* evt, LPARAM param) | 
 |  |  |    { | 
 |  |  |       return OnCmdDispatch(evt->xcommand.pStrID); | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int OnAttachEvent() | 
 |  |  |    { | 
 |  |  |       //绑定工具条点击事件 | 
 |  |  |       AttachEvent(L"WM_XCOMMAND", (FEvent)&AddUser::OnXCommand); | 
 |  |  |       //获取焦点事件,用于重置工具条 | 
 |  |  |       AttachEvent(L"WM_SETFOCUS", (FEvent)&AddUser::OnSetFocus); | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int OnInitial() | 
 |  |  |    { | 
 |  |  |       SetAgent(); | 
 |  |  |  | 
 |  |  |       OnAttachEvent(); | 
 |  |  |  | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int SetItem(xstring value, xstring item) { | 
 |  |  |       xcontrol xc = GetControl(item); | 
 |  |  |       xc.SetText(value); | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |    int onload() | 
 |  |  |    { | 
 |  |  |       SetArg(); | 
 |  |  |       OnInitial(); | 
 |  |  |       p = new pa; | 
 |  |  |  | 
 |  |  |       if (GetWinParam()) | 
 |  |  |       { | 
 |  |  |          p = GetArg(); | 
 |  |  |          SetWindowText(GetHWND(), p.note + L"用户"); | 
 |  |  |          if (p.note == L"修改") | 
 |  |  |          { | 
 |  |  |             xdwgrid dw = new xdwgrid; | 
 |  |  |             dw.setNativePointer(p.dw); | 
 |  |  |             KXMLDOMElement ele = dw.GetRowElement(p.row); | 
 |  |  |             //if(ele.selectSingleNode(L"EmployeeNo")) | 
 |  |  |                //SetItem(ele.selectSingleNode(L"EmployeeNo").text(),L"EmployeeNo"); | 
 |  |  |             if (ele.selectSingleNode(L"UserName")) | 
 |  |  |                SetItem(ele.selectSingleNode(L"UserName").text(), L"UserName"); | 
 |  |  |             if (ele.selectSingleNode(L"PassWord")) | 
 |  |  |                SetItem(ele.selectSingleNode(L"PassWord").text(), L"PassWord"); | 
 |  |  |             if (ele.selectSingleNode(L"Status")) | 
 |  |  |                SetItem(ele.selectSingleNode(L"Status").text(), L"Status"); | 
 |  |  |             trace(L"Aa"); | 
 |  |  |             return 1; | 
 |  |  |          } | 
 |  |  |       ] | 
 |  |  | 		 | 
 |  |  |    ] | 
 |  |  | ] | 
 |  |  |       } | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  | }; |