| | |
| | | use "xcontrol.vframe.vbusiness.vd" |
| | | use "xbase.vframe.vbusiness.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 DeveloperSynch : public xframe |
| | | |
| | | #include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" |
| | | #include "viewobject/view.base.hpp" |
| | | |
| | | using xml = KXMLDOMDocument; |
| | | class __declspec(dllexport) DeveloperSynch : public xframe |
| | | { |
| | | public: |
| | | xtreeview tv_gs; |
| | | xsedit dw_log; |
| | | |
| | | int[100] nItems; |
| | | int nItems; |
| | | int nCount; |
| | | |
| | | string sContent; |
| | | |
| | | string ProcessDevCmd(string cmd,string ext, string aurl="", bool needlogin=false) |
| | | xstring sContent; |
| | | public: |
| | | DeveloperSynch(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} |
| | | public: |
| | | static DeveloperSynch* CreateInstance(void* implPtr, void* hWnd) |
| | | { |
| | | if(aurl == "") aurl = GetServerUrl(); |
| | | DeveloperSynch* pWin = new DeveloperSynch(implPtr, (HWND)hWnd); |
| | | return pWin; |
| | | } |
| | | xstring ProcessDevCmd(xstring cmd,xstring ext, xstring aurl=L"", bool needlogin=false) |
| | | { |
| | | if(aurl == L"") aurl = GetServerUrl(); |
| | | //alert(aurl); |
| | | string d = xaserver::ProcessCmd(aurl,"uri.hxsoft.com/xaserver/developer "+cmd,ext,needlogin); |
| | | xstring d = xaserver::ProcessCmd(aurl,L"uri.hxsoft.com/xaserver/developer "+cmd,ext,needlogin); |
| | | return d; |
| | | } |
| | | |
| | | string ProcessDevCmd2(string cmd,string ext, string aurl="", bool needlogin=false) |
| | | xstring ProcessDevCmd2(xstring cmd,xstring ext, xstring aurl=L"", bool needlogin=false) |
| | | { |
| | | if(aurl == "") aurl = GetServerUrl(); |
| | | if(aurl == L"") aurl = GetServerUrl(); |
| | | //alert(aurl); |
| | | string d = xaserver::ProcessCmd(aurl,"uri.hxsoft.com/xaserver/dev:"+cmd,ext,needlogin); |
| | | xstring d = xaserver::ProcessCmd(aurl,L"uri.hxsoft.com/xaserver/dev:"+cmd,ext,needlogin); |
| | | return d; |
| | | } |
| | | |
| | | int GetProjectItem(int hItem) |
| | | { |
| | | int pitem = hItem; |
| | | string typ; |
| | | xstring typ; |
| | | while(true) |
| | | { |
| | | int h = xtreeview::GetItemData(tv_gs.GetId(), pitem); |
| | | msxml::IXMLDOMElement e = trust(h as msxml::IXMLDOMElement); |
| | | typ = GetEleString(e, "@tagname"); |
| | | if(typ=="project")break; |
| | | pitem = xtreeview::GetParentItem(tv_gs.GetId(), pitem); |
| | | int h =tv_gs.GetItemData(tv_gs.GetId(), pitem); |
| | | KXMLDOMElement e = trust(h as KXMLDOMElement); |
| | | typ = GetEleString(e, L"@tagname"); |
| | | if(typ==L"project")break; |
| | | pitem =tv_gs.GetParentItem(tv_gs.GetId(), pitem); |
| | | if(pitem<=0)break; |
| | | } |
| | | return pitem; |
| | |
| | | int hP2Item = hItem; |
| | | while(true) |
| | | { |
| | | hDomainItem = xtreeview::GetParentItem(tv_gs.GetId(), hP2Item); |
| | | hDomainItem =tv_gs.GetParentItem(tv_gs.GetId(), hP2Item); |
| | | if(xtreeview::GetParentItem(tv_gs.GetId(), hDomainItem)<=0)break; |
| | | hP2Item = hDomainItem; |
| | | } |
| | | return hP2Item; |
| | | } |
| | | |
| | | string GetItemGuid(int hItem) |
| | | xstring GetItemGuid(int hItem) |
| | | { |
| | | int h = xtreeview::GetItemData(tv_gs.GetId(), hItem); |
| | | msxml::IXMLDOMElement e = trust(h as msxml::IXMLDOMElement); |
| | | string guid = e.GetAttribute("guid"); |
| | | int h =tv_gs.GetItemData(tv_gs.GetId(), hItem); |
| | | KXMLDOMElement e = trust(h as KXMLDOMElement); |
| | | xstring guid = e.GetAttribute(L"guid"); |
| | | return guid; |
| | | } |
| | | |
| | | xaserverarg GetDataArg(int hItem, xaserverarg arg) |
| | | { |
| | | int h = xtreeview::GetItemData(tv_gs.GetId(), hItem); |
| | | msxml::IXMLDOMElement e = trust(h as msxml::IXMLDOMElement); |
| | | string node = GetEleString(e, "@tagname"); |
| | | int h =tv_gs.GetItemData(tv_gs.GetId(), hItem); |
| | | KXMLDOMElement e = trust(h as KXMLDOMElement); |
| | | xstring node = GetEleString(e, L"@tagname"); |
| | | //WriteLog(e.xml); |
| | | if(node=="File" || node=="file") |
| | | if(node==L"File" || node==L"file") |
| | | { |
| | | string caption = e.getAttribute("caption"); |
| | | xstring caption = e.getAttribute(L"caption"); |
| | | |
| | | int hP2Item = 0; |
| | | int hDomainItem = 0; |
| | |
| | | }else |
| | | { |
| | | hP2Item = GetP2Item(hItem); |
| | | hDomainItem = xtreeview::GetParentItem(tv_gs.GetId(), hP2Item); |
| | | hDomainItem =tv_gs.GetParentItem(tv_gs.GetId(), hP2Item); |
| | | } |
| | | |
| | | //find project folder |
| | | string prjguid=""; |
| | | int pitem = this.GetProjectItem(hItem); |
| | | xstring prjguid=L""; |
| | | int pitem = GetProjectItem(hItem); |
| | | if(pitem > 0) |
| | | prjguid = GetItemGuid(pitem); |
| | | |
| | | //xaserverarg arg = new xaserverarg; |
| | | //arg.setNativePointer(arg.CreateInstance()); |
| | | arg.AddArg("project.guid",prjguid); |
| | | //xaserverarg arg ; |
| | | //; |
| | | arg.AddArg(L"project.guid",prjguid); |
| | | if(hP2Item) |
| | | { |
| | | if(hP2Item != hItem) |
| | | { |
| | | string guid = e.getAttribute("guid"); |
| | | arg.AddArg("guid",guid); |
| | | xstring guid = e.getAttribute(L"guid"); |
| | | arg.AddArg(L"guid",guid); |
| | | } |
| | | string guid2 = GetItemGuid(hP2Item); |
| | | arg.AddArg("root.guid",guid2); |
| | | xstring guid2 = GetItemGuid(hP2Item); |
| | | arg.AddArg(L"root.guid",guid2); |
| | | }else if(hDomainItem > 0) |
| | | { |
| | | string guid3 = GetItemGuid(hDomainItem); |
| | | arg.AddArg("domain.guid",guid3); |
| | | xstring guid3 = GetItemGuid(hDomainItem); |
| | | arg.AddArg(L"domain.guid",guid3); |
| | | } |
| | | return 1; |
| | | } |
| | | else if(node=="folder" || node=="project") |
| | | else if(node==L"folder" || node==L"project") |
| | | return 2; |
| | | else |
| | | return 0; |
| | |
| | | |
| | | int SaveData(int hItem) |
| | | { |
| | | xcontrol xc = GetControl("surl"); |
| | | string surl = xc.GetText(); |
| | | if(surl == "") |
| | | xcontrol xc = GetControl(L"surl"); |
| | | xstring surl = xc.GetText(); |
| | | if(surl == L"") |
| | | { |
| | | alert("请输入同步服务器地址"); |
| | | alert(L"请输入同步服务器地址"); |
| | | return 1; |
| | | } |
| | | |
| | | string name = xtreeview::GetItemLabel(tv_gs.GetId(), hItem); |
| | | xaserverarg arg = new xaserverarg; |
| | | arg.setNativePointer(arg.CreateInstance()); |
| | | xstring name =tv_gs.GetItemLabel(hItem); |
| | | xaserverarg arg ; |
| | | ; |
| | | int ret = GetDataArg(hItem, arg); |
| | | //alert(arg.GetString()); |
| | | if(ret == 0) |
| | | { |
| | | WriteLog(name+" 失败, 原因:获取工程或文件夹失败!"); |
| | | WriteLog(name+L" 失败, 原因:获取工程或文件夹失败!"); |
| | | return -1; |
| | | } |
| | | else if(ret == 2) |
| | | { |
| | | ret = SynchFolder(hItem); |
| | | if(ret == -1) |
| | | WriteLog(name+" 失败, 原因:获取文件数据失败!"); |
| | | WriteLog(name+L" 失败, 原因:获取文件数据失败!"); |
| | | else if(ret == 0) |
| | | WriteLog(name+" 失败, 原因:复制文件失败!"); |
| | | WriteLog(name+L" 失败, 原因:复制文件失败!"); |
| | | else |
| | | WriteLog(name); |
| | | return -1; |
| | | } |
| | | SynchFolder(hItem); |
| | | arg.AddArg("__name",name); |
| | | arg.AddArg("__url",surl); |
| | | arg.AddArg(L"__name",name); |
| | | arg.AddArg(L"__url",surl); |
| | | synchServer(arg); |
| | | if(name.right(3) == ".vx" || name.right(5) == ".xpage") |
| | | if(name.right(3) == L".vx" || name.right(5) == L".xpage") |
| | | { |
| | | arg.AddArg("__name",name + "[Code]"); |
| | | arg.AddArg("iscode","yes"); |
| | | arg.AddArg(L"__name",name + L"[Code]"); |
| | | arg.AddArg(L"iscode",L"yes"); |
| | | synchServer(arg); |
| | | } |
| | | return 1; |
| | | } |
| | | |
| | | string GetFolderPath(int hItem) |
| | | xstring GetFolderPath(int hItem) |
| | | { |
| | | int k = hItem; |
| | | if(k == 0) return ""; |
| | | string src = ""; |
| | | //string name = ""; |
| | | if(k == 0) return L""; |
| | | xstring src = L""; |
| | | //xstring name = L""; |
| | | while(k > 0) |
| | | { |
| | | int h = xtreeview::GetItemData(tv_gs.GetId(), k); |
| | | k = xtreeview::GetParentItem(tv_gs.GetId(), k); |
| | | msxml::IXMLDOMElement e = trust(h as msxml::IXMLDOMElement); |
| | | string node = GetEleString(e, "@tagname"); |
| | | if(node != "File" && node != "file") |
| | | int h =tv_gs.GetItemData(tv_gs.GetId(), k); |
| | | k =tv_gs.GetParentItem(tv_gs.GetId(), k); |
| | | KXMLDOMElement e = trust(h as KXMLDOMElement); |
| | | xstring node = GetEleString(e, L"@tagname"); |
| | | if(node != L"File" && node != L"file") |
| | | { |
| | | string tmp = GetEleString(e, "@src"); |
| | | //if(name == "") name = GetEleString(e, "@caption"); |
| | | if(tmp != "") |
| | | xstring tmp = GetEleString(e, L"@src"); |
| | | //if(name == L"") name = GetEleString(e, L"@caption"); |
| | | if(tmp != L"") |
| | | { |
| | | SynchFolder(k); |
| | | if(src == "") src = tmp; |
| | | if(src == L"") src = tmp; |
| | | else |
| | | { |
| | | int j = 1; |
| | | int s = tmp.length(); |
| | | string t = tmp.right(j).left(1); |
| | | while(t != "\\" && j < s) |
| | | int s = tmp.length()(); |
| | | xstring t = tmp.right(j).left(1); |
| | | while(t != L"\\" && j < s) |
| | | { |
| | | //WriteLog(t); |
| | | j++; |
| | | t = tmp.right(j).left(1); |
| | | } |
| | | if(j >= s) |
| | | src = tmp+ "\\" + src; |
| | | src = tmp+ L"\\" + src; |
| | | else |
| | | src = tmp.left(s - j)+ "\\" + src; |
| | | src = tmp.left(s - j)+ L"\\" + src; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | if(src == "") |
| | | if(src == L"") |
| | | { |
| | | //WriteLog(name+" 同步失败, 原因:获取文件数据失败0!"); |
| | | return ""; |
| | | //WriteLog(name+L" 同步失败, 原因:获取文件数据失败0!"); |
| | | return L""; |
| | | } |
| | | //if(src.left(9) =="Projects\\") src = src.mid(9, src.length()); |
| | | src = "\\" + src;//.replace("Projects\\",""); |
| | | //if(src.left(9) ==L"Projects\\") src = src.mid(9, src.length()()); |
| | | src = L"\\" + src;//.replace(L"Projects\\",L""); |
| | | //WriteLog(src); |
| | | return src; |
| | | } |
| | | |
| | | int SynchFolder(int hItem) |
| | | { |
| | | string src = GetFolderPath(hItem); |
| | | if(src== "") return -1; |
| | | if(xaserver::FileCopy("devfolder8001", src, "devfolder5001", src) != 1) |
| | | xstring src = GetFolderPath(hItem); |
| | | if(src== L"") return -1; |
| | | if(xaserver::FileCopy(L"devfolder8001", src, L"devfolder5001", src) != 1) |
| | | return 0; |
| | | //WriteLog(src); |
| | | return 1; |
| | |
| | | |
| | | int synchServer(xaserverarg arg) |
| | | { |
| | | string name = arg.GetArgString("__name"); |
| | | string surl = arg.GetArgString("__url"); |
| | | string d = ProcessDevCmd("getobject",arg.GetString()); |
| | | if(d == "") |
| | | xstring name = arg.GetArgString(L"__name"); |
| | | xstring surl = arg.GetArgString(L"__url"); |
| | | xstring d = ProcessDevCmd(L"getobject",arg.GetString()); |
| | | if(d == L"") |
| | | { |
| | | WriteLog(name+" 失败, 原因:获取文件数据失败!"); |
| | | WriteLog(name+L" 失败, 原因:获取文件数据失败!"); |
| | | return -1; |
| | | } |
| | | //WriteLog(d); |
| | | arg.AddArg("content",d); |
| | | ProcessDevCmd("saveobject",arg.GetString(), surl,true); |
| | | arg.AddArg(L"content",d); |
| | | ProcessDevCmd(L"saveobject",arg.GetString(), surl,true); |
| | | WriteLog(name); |
| | | return 1; |
| | | } |
| | | |
| | | int WriteLog(string str) |
| | | int WriteLog(xstring str) |
| | | { |
| | | if(sContent == "") |
| | | if(sContent == L"") |
| | | sContent = str; |
| | | else |
| | | sContent += "\r\n" + str; |
| | | sContent += L"\r\n" + str; |
| | | //alert(sContent); |
| | | dw_log.SetContent(sContent, ""); |
| | | dw_log.SetContent(sContent, L""); |
| | | return 1; |
| | | } |
| | | |
| | | //焦点激活处理函数 |
| | | int OnSetFocus(ref TEvent evt,int param) |
| | | int OnSetFocus(TEvent* evt, LPARAM param) |
| | | { |
| | | //重置工具条 |
| | | SetAgent(); |
| | |
| | | { |
| | | if(nCount >99) |
| | | { |
| | | alert("同时同步的数量不能大于100个!"); |
| | | alert(L"同时同步的数量不能大于100个!"); |
| | | return 1; |
| | | } |
| | | nItems[nCount] = hItem; |
| | |
| | | } |
| | | |
| | | //命令发布函数 |
| | | int OnCmdDispatch(string comdid) |
| | | int OnCmdDispatch(xstring comdid) |
| | | { |
| | | if(comdid != "synch") return 1; |
| | | if(comdid != L"synch") return 1; |
| | | |
| | | int hCursor = xutil::SetCursorWait(); |
| | | sContent = ""; |
| | | HCURSOR hCursor = xutil::SetCursorWait(); |
| | | sContent = L""; |
| | | for(int i=0; i<nCount; i++) |
| | | { |
| | | int p = nItems[i]; |
| | | //int h = xtreeview::GetItemData(tv_gs.GetId(), p); |
| | | //msxml::IXMLDOMElement e = trust(h as msxml::IXMLDOMElement); |
| | | //int h =tv_gs.GetItemData(tv_gs.GetId(), p); |
| | | //KXMLDOMElement e = trust(h as KXMLDOMElement); |
| | | //alert(e.xml); |
| | | SaveData(p); |
| | | xtreeview::SetChecked(tv_gs.GetId(), p,0); |
| | |
| | | return 0; |
| | | } |
| | | |
| | | int OnTreeCheckBoxSel(ref TNotifyEvent evt,int p) |
| | | int OnTreeCheckBoxSel(TEvent* evt, LPARAM p) |
| | | { |
| | | ref TVNNMHDR nmtv = trust(evt.pnmh as ref TVNNMHDR); |
| | | TVNNMHDR* nmtv = (TVNNMHDR*)evt->notify.pnmh; |
| | | |
| | | int hItem = nmtv.FromItem; |
| | | int hCursor = xutil::SetCursorWait(); |
| | | |
| | | HCURSOR hCursor = xutil::SetCursorWait(); |
| | | int hwnd = nmtv.hwndFrom; |
| | | int c = 1 - xtreeview::GetChecked(hwnd, hItem); |
| | | |
| | | int c = 1 -tv_gs.GetChecked(hwnd, hItem); |
| | | if(c == 1) |
| | | Add(hItem); |
| | | else |
| | |
| | | } |
| | | |
| | | //命令处理事件 |
| | | 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)&DeveloperSynch::OnXCommand); |
| | | //获取焦点事件,用于重置工具条 |
| | | //AttachEvent("WM_SETFOCUS",OnSetFocus); |
| | | AttachEvent("DevExplorer","TVN_CHECKBOXSEL",OnTreeCheckBoxSel); |
| | | AttachEvent("DevExplorer", "TVN_ITEMEXPANDING",OnTreeExpanding); |
| | | //AttachEvent(L"WM_SETFOCUS",OnSetFocus); |
| | | AttachEvent(L"DevExplorer",L"TVN_CHECKBOXSEL", (FEvent)&DeveloperSynch::OnTreeCheckBoxSel); |
| | | AttachEvent(L"DevExplorer", L"TVN_ITEMEXPANDING", (FEvent)&DeveloperSynch::OnTreeExpanding); |
| | | return 1; |
| | | } |
| | | |
| | | int OnTreeExpanding(ref TNotifyEvent evt,int lparam) |
| | | int OnTreeExpanding(TEvent* evt, LPARAM lparam) |
| | | { |
| | | ref NMTREEVIEW nmtv = trust(evt.pnmh as ref NMTREEVIEW); |
| | | TVNNMHDR* nmtv = (TVNNMHDR*)evt->notify.pnmh; |
| | | int hItem = nmtv.itemNew.hItem; |
| | | int cItem=xtreeview::GetChildItem(tv_gs.GetId(), hItem); |
| | | if(cItem > 0) return 1; |
| | | int p = xtreeview::GetItemData(tv_gs.GetId(), hItem); |
| | | msxml::IXMLDOMElement ele = trust(p as msxml::IXMLDOMElement); |
| | | string src =GetEleString(ele, "@src"); |
| | | string tagname =GetEleString(ele, "@tagname"); |
| | | if (src == "" || tagname == "file" || tagname == "File") return 1; |
| | | int p =tv_gs.GetItemData(tv_gs.GetId(), hItem); |
| | | KXMLDOMElement ele = trust(p as KXMLDOMElement); |
| | | xstring src =GetEleString(ele, L"@src"); |
| | | xstring tagname =GetEleString(ele, L"@tagname"); |
| | | if (src == L"" || tagname == L"file" || tagname == L"File") return 1; |
| | | OnSetTree(hItem, GetFolderPath(hItem)); |
| | | |
| | | return 1; |
| | | } |
| | | |
| | | int OnSetTree(int pItem, msxml::IXMLDOMElement e) |
| | | int OnSetTree(int pItem, KXMLDOMElement e) |
| | | { |
| | | msxml::IXMLDOMNodeList li=e.selectNodes("*"); |
| | | KXMLDOMNodeList li=e.selectNodes(L"*"); |
| | | int i=0; |
| | | int s=li.length; |
| | | int s=li.length(); |
| | | for (i=0;i<s;i++){ |
| | | msxml::IXMLDOMElement ele= li.item(s - i - 1); |
| | | string caption = GetEleString(ele, "@caption"); |
| | | string src =GetEleString(ele, "@src"); |
| | | string image =GetEleString(ele, "@image"); |
| | | KXMLDOMElement ele= li.item(s - i - 1); |
| | | xstring caption = GetEleString(ele, L"@caption"); |
| | | xstring src =GetEleString(ele, L"@src"); |
| | | xstring image =GetEleString(ele, L"@image"); |
| | | int p = trust(ele as int); |
| | | int hItem=xtreeview::InsertItem(tv_gs.GetId(), pItem,0,caption,p,image.toInt()); |
| | | string tagname =GetEleString(ele, "@tagname"); |
| | | if (src != "" && tagname != "file" && tagname != "File") |
| | | xstring tagname =GetEleString(ele, L"@tagname"); |
| | | if (src != L"" && tagname != L"file" && tagname != L"File") |
| | | xtreeview::SetItemChild1(tv_gs.GetId(), hItem,1); |
| | | OnSetTree(hItem, ele); |
| | | } |
| | |
| | | return 1; |
| | | } |
| | | |
| | | int OnSetTree(int hItem, string src) |
| | | int OnSetTree(int hItem, xstring src) |
| | | { |
| | | xml x=new xml; |
| | | x.setNativePointer(xml::CreateInstance()); |
| | | xaserverarg arg=new xaserverarg; |
| | | arg.setNativePointer(arg.CreateInstance()); |
| | | arg.AddArg("src",src); |
| | | if(xaserver::ExecXQuery(GetServerUrl(),"[Developer.Tree.xq]",arg.GetString(),x)!=1) |
| | | |
| | | xaserverarg arg; |
| | | ; |
| | | arg.AddArg(L"src",src); |
| | | if(xaserver::ExecXQuery(GetServerUrl(),L"[Developer.Tree.xq]",arg.GetString(),x)!=1) |
| | | { |
| | | alert("读取节点失败!"); |
| | | alert(L"读取节点失败!"); |
| | | return 1; |
| | | } |
| | | msxml::IXMLDOMElement e = x.GetXmlDoc().documentElement; |
| | | KXMLDOMElement e = x.documentElement(); |
| | | OnSetTree(hItem, e); |
| | | return 1; |
| | | } |
| | |
| | | int onload() |
| | | { |
| | | nCount = 0; |
| | | tv_gs = GetControl("DevExplorer"); |
| | | dw_log = GetControl("xlog"); |
| | | tv_gs = GetControl(L"DevExplorer"); |
| | | dw_log = GetControl(L"xlog"); |
| | | OnAttachEvent(); |
| | | |
| | | return 1; |
| | |
| | | |
| | | int onloaded() |
| | | { |
| | | OnSetTree(0, "Projects/projects.xhw"); |
| | | OnSetTree(0, L"Projects/projects.xhw"); |
| | | return 1; |
| | | } |
| | | }; |
| | | ] |
| | |
| | | use "xcontrol.vframe.vbusiness.vd" |
| | | use "xbase.vframe.vbusiness.vd" |
| | | use "base.view.vd" |
| | | use "xflowchart.wobject.wface.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 flow : public xframe |
| | | |
| | | #include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" |
| | | #include "viewobject/view.base.hpp" |
| | | |
| | | using xml = KXMLDOMDocument; |
| | | class __declspec(dllexport) flow : public xframe |
| | | { |
| | | public: |
| | | xtreeview tv_1; |
| | | xlayersheet tab_1; |
| | | xdwgrid dw_flow; |
| | |
| | | xdwgrid dw_scene; |
| | | xdwgrid dw_buttonright; |
| | | xdwgrid dw_datafieldright; |
| | | string flowid; |
| | | xstring flowid; |
| | | |
| | | xtreeview tv_folder; |
| | | |
| | | xnode m_agentNode; //Agent Condition |
| | | |
| | | string GetSheetType(int index) |
| | | public: |
| | | flow(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} |
| | | public: |
| | | static flow* CreateInstance(void* implPtr, void* hWnd) |
| | | { |
| | | if (index == 0) return "flowitem"; |
| | | else if (index == 1) return "state"; |
| | | else if (index == 2) return "actionrole"; |
| | | else if (index == 3) return "button"; |
| | | else if (index == 4) return "role"; |
| | | else if (index == 5) return "bill"; |
| | | else if (index == 6) return "scene"; |
| | | else if (index ==7) return "fieldrole"; |
| | | else return "unkown"; |
| | | flow* pWin = new flow(implPtr, (HWND)hWnd); |
| | | return pWin; |
| | | } |
| | | xstring GetSheetType(int index) |
| | | { |
| | | if (index == 0) return L"flowitem"; |
| | | else if (index == 1) return L"state"; |
| | | else if (index == 2) return L"actionrole"; |
| | | else if (index == 3) return L"button"; |
| | | else if (index == 4) return L"role"; |
| | | else if (index == 5) return L"bill"; |
| | | else if (index == 6) return L"scene"; |
| | | else if (index ==7) return L"fieldrole"; |
| | | else return L"unkown"; |
| | | } |
| | | xdwgrid GetSheetDwgrid(int index) |
| | | { |
| | | string typ = GetSheetType(index); |
| | | if(typ=="flowitem") return dw_flow; |
| | | if(typ=="actionrole") return dw_buttonright; |
| | | if(typ=="state") return dw_state; |
| | | if(typ=="button") return dw_button; |
| | | if(typ=="role") return dw_role; |
| | | if(typ=="bill") return dw_bill; |
| | | if(typ=="scene") return dw_scene; |
| | | if(typ=="fieldrole") return dw_datafieldright; |
| | | xstring typ = GetSheetType(index); |
| | | if(typ==L"flowitem") return dw_flow; |
| | | if(typ==L"actionrole") return dw_buttonright; |
| | | if(typ==L"state") return dw_state; |
| | | if(typ==L"button") return dw_button; |
| | | if(typ==L"role") return dw_role; |
| | | if(typ==L"bill") return dw_bill; |
| | | if(typ==L"scene") return dw_scene; |
| | | if(typ==L"fieldrole") return dw_datafieldright; |
| | | return 0; |
| | | } |
| | | xdwgrid GetSheetDbmap(int index) |
| | | { |
| | | string typ = GetSheetType(index); |
| | | if(typ=="flowitem") return "flow.dbmap"; |
| | | if(typ=="actionrole") return "workflow.actionrole.dbmap"; |
| | | if(typ=="state") return "state.dbmap"; |
| | | if(typ=="button") return "button.dbmap"; |
| | | if(typ=="role") return "role.dbmap"; |
| | | if(typ=="bill") return "bill.dbmap"; |
| | | if(typ=="scene") return "scene.dbmap"; |
| | | if(typ=="fieldrole") return "workflow.datarole.dbmap"; |
| | | xstring typ = GetSheetType(index); |
| | | if(typ==L"flowitem") return "flow.dbmap"; |
| | | if(typ==L"actionrole") return "workflow.actionrole.dbmap"; |
| | | if(typ==L"state") return "state.dbmap"; |
| | | if(typ==L"button") return "button.dbmap"; |
| | | if(typ==L"role") return "role.dbmap"; |
| | | if(typ==L"bill") return "bill.dbmap"; |
| | | if(typ==L"scene") return "scene.dbmap"; |
| | | if(typ==L"fieldrole") return "workflow.datarole.dbmap"; |
| | | return 0; |
| | | } |
| | | |
| | | string GetDwname(string typ) |
| | | xstring GetDwname(xstring typ) |
| | | { |
| | | if(typ=="flowitem") return "/sale/view/Flow3/template/flow"; |
| | | if(typ=="actionrole") return "/sale/view/Flow3/template/buttonright"; |
| | | if(typ=="state") return "/sale/view/Flow3/template/state"; |
| | | if(typ=="button") return "/sale/view/Flow3/template/button"; |
| | | if(typ=="role") return "/sale/view/Flow3/template/role"; |
| | | if(typ=="bill") return "/sale/view/Flow3/template/bill"; |
| | | if(typ=="scene") return "/sale/view/Flow3/template/scene"; |
| | | if(typ=="fieldrole") return "/sale/view/Flow3/template/datafieldright"; |
| | | return ""; |
| | | if(typ==L"flowitem") return L"/sale/view/Flow3/template/flow"; |
| | | if(typ==L"actionrole") return L"/sale/view/Flow3/template/buttonright"; |
| | | if(typ==L"state") return L"/sale/view/Flow3/template/state"; |
| | | if(typ==L"button") return L"/sale/view/Flow3/template/button"; |
| | | if(typ==L"role") return L"/sale/view/Flow3/template/role"; |
| | | if(typ==L"bill") return L"/sale/view/Flow3/template/bill"; |
| | | if(typ==L"scene") return L"/sale/view/Flow3/template/scene"; |
| | | if(typ==L"fieldrole") return L"/sale/view/Flow3/template/datafieldright"; |
| | | return L""; |
| | | } |
| | | |
| | | |
| | | 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 OnSave() |
| | | { |
| | | if(flowid=="") return 1; |
| | | if(flowid==L"") return 1; |
| | | |
| | | string sdbmap; |
| | | xml x = new xml; |
| | | x.setNativePointer(xml::CreateInstance()); |
| | | xstring sdbmap; |
| | | xml x ; |
| | | |
| | | int index = tab_1.GetSheetIndex(); |
| | | sdbmap = GetSheetDbmap(index); |
| | | sdbmap = (xstring)GetSheetDbmap(index); |
| | | xdwgrid dw_list = GetSheetDwgrid(index); |
| | | dw_list.DwUpdateAllToEx(x.GetXmlDoc()); |
| | | //trace(x.GetXml()); |
| | | dw_list.DwUpdateAllToEx(x); |
| | | //trace(x.xml()); |
| | | |
| | | msxml::IXMLDOMNodeList ls = x.GetXmlDoc().documentElement.SelectNodes("*[@update.modify='1' and @update.new='1']"); |
| | | int len = ls.length; |
| | | KXMLDOMNodeList ls = x.documentElement().selectNodes(L"*[@update.modify='1' and @update.new='1']"); |
| | | int len = ls.length(); |
| | | for(int k=0;k<len;k++) |
| | | { |
| | | msxml::IXMLDOMElement e; |
| | | if(ls.item(k).selectSingleNode("flowID")) |
| | | KXMLDOMElement e; |
| | | if(ls.item(k).selectSingleNode(L"flowID")) |
| | | { |
| | | e = ls.item(k).selectSingleNode("flowID"); |
| | | e.setAttribute("update.modify","1"); |
| | | e.text = flowid; |
| | | e = ls.item(k).selectSingleNode(L"flowID"); |
| | | e.setAttribute(L"update.modify",L"1"); |
| | | e.text() = flowid; |
| | | }else |
| | | { |
| | | e = x.GetXmlDoc().createElement("flowID"); |
| | | e.setAttribute("update.modify","1"); |
| | | e.text = flowid; |
| | | e = x.createElement(L"flowID"); |
| | | e.setAttribute(L"update.modify",L"1"); |
| | | e.text() = flowid; |
| | | ls.item(k).appendChild(e); |
| | | } |
| | | } |
| | | |
| | | xaserverarg arg = new xaserverarg; |
| | | arg.setNativePointer(arg.CreateInstance()); |
| | | arg.AddArg("content",x.GetXml()); |
| | | arg.AddArg("sdbmap",sdbmap); |
| | | trace(x.GetXml()); |
| | | if(url::get("/sale/data/Flow3/save/flow", arg.GetString(),x)!=1) |
| | | xaserverarg arg ; |
| | | ; |
| | | arg.AddArg(L"content",x.xml()); |
| | | arg.AddArg(L"sdbmap",sdbmap); |
| | | trace(x.xml()); |
| | | if(xurl::get(L"/sale/data/Flow3/save/flow", arg.GetString(),x)!=1) |
| | | { |
| | | string error = x.GetXmlDoc().text; |
| | | alert("err:"+error); |
| | | xstring error = x.text(); |
| | | alert(L"err:"+error); |
| | | return 1; |
| | | } |
| | | |
| | | dw_list.ResetUpdateStatus(); |
| | | |
| | | //alert(x.GetXml()); |
| | | alert("保存成功!"); |
| | | //alert(x.xml()); |
| | | alert(L"保存成功!"); |
| | | |
| | | return 1; |
| | | } |
| | |
| | | } |
| | | |
| | | //焦点激活处理函数 |
| | | int OnSetFocus(ref TEvent evt,int param) |
| | | int OnSetFocus(TEvent* evt, LPARAM param) |
| | | { |
| | | //重置工具条 |
| | | SetAgent(); |
| | |
| | | return 1; |
| | | } |
| | | |
| | | int OnClicked(ref TNotifyEvent evt,int p) |
| | | int OnClicked(TEvent* evt, int p) |
| | | { |
| | | ref DWNMHDR hdr = evt.pnmh; |
| | | DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; |
| | | int row = hdr.row; |
| | | string colname=hdr.colname; |
| | | xstring colname=hdr.colname; |
| | | |
| | | //trace(colname); |
| | | |
| | | xaserverarg arg = new xaserverarg; |
| | | arg.setNativePointer(arg.CreateInstance()); |
| | | xaserverarg arg ; |
| | | ; |
| | | |
| | | string comdid =""; |
| | | string data=""; |
| | | string display=""; |
| | | xstring comdid =L""; |
| | | xstring data=L""; |
| | | xstring display=L""; |
| | | xdwgrid dw_list; |
| | | |
| | | int index = tab_1.GetSheetIndex(); |
| | | dw_list = GetSheetDwgrid(index); |
| | | |
| | | arg.AddArg("sdata",""); |
| | | arg.AddArg("flowid",flowid); |
| | | arg.AddArg(L"sdata",L""); |
| | | arg.AddArg(L"flowid",flowid); |
| | | |
| | | if(colname=="billID") |
| | | if(colname==L"billID") |
| | | { |
| | | arg.AddArg("stype","bill"); |
| | | arg.AddArg("datacolumn","billID"); |
| | | arg.AddArg("displaycolumn","billName"); |
| | | arg.AddArg("dwname","/sale/view/Flow3/template/bill"); |
| | | arg.AddArg(L"stype",L"bill"); |
| | | arg.AddArg(L"datacolumn",L"billID"); |
| | | arg.AddArg(L"displaycolumn",L"billName"); |
| | | arg.AddArg(L"dwname",L"/sale/view/Flow3/template/bill"); |
| | | } |
| | | else if(colname=="stateSource") |
| | | else if(colname==L"stateSource") |
| | | { |
| | | arg.AddArg("stype","state"); |
| | | arg.AddArg("datacolumn","stateID"); |
| | | arg.AddArg("displaycolumn","stateName"); |
| | | arg.AddArg("dwname","/sale/view/Flow3/template/state"); |
| | | arg.AddArg(L"stype",L"state"); |
| | | arg.AddArg(L"datacolumn",L"stateID"); |
| | | arg.AddArg(L"displaycolumn",L"stateName"); |
| | | arg.AddArg(L"dwname",L"/sale/view/Flow3/template/state"); |
| | | } |
| | | else if(colname=="state") |
| | | else if(colname==L"state") |
| | | { |
| | | arg.AddArg("stype","state"); |
| | | arg.AddArg("datacolumn","stateID"); |
| | | arg.AddArg("displaycolumn","stateName"); |
| | | arg.AddArg("dwname","/sale/view/Flow3/template/state"); |
| | | arg.AddArg(L"stype",L"state"); |
| | | arg.AddArg(L"datacolumn",L"stateID"); |
| | | arg.AddArg(L"displaycolumn",L"stateName"); |
| | | arg.AddArg(L"dwname",L"/sale/view/Flow3/template/state"); |
| | | } |
| | | else if(colname=="stateTarget") |
| | | else if(colname==L"stateTarget") |
| | | { |
| | | arg.AddArg("stype","state"); |
| | | arg.AddArg("datacolumn","stateID"); |
| | | arg.AddArg("displaycolumn","stateName"); |
| | | arg.AddArg("dwname","/sale/view/Flow3/template/state"); |
| | | arg.AddArg(L"stype",L"state"); |
| | | arg.AddArg(L"datacolumn",L"stateID"); |
| | | arg.AddArg(L"displaycolumn",L"stateName"); |
| | | arg.AddArg(L"dwname",L"/sale/view/Flow3/template/state"); |
| | | } |
| | | else if(colname=="roles") |
| | | else if(colname==L"roles") |
| | | { |
| | | arg.AddArg("stype","role"); |
| | | arg.AddArg("datacolumn","roleName"); |
| | | arg.AddArg("displaycolumn","roleName"); |
| | | arg.AddArg("dwname","/sale/view/Flow3/template/role"); |
| | | arg.AddArg(L"stype",L"role"); |
| | | arg.AddArg(L"datacolumn",L"roleName"); |
| | | arg.AddArg(L"displaycolumn",L"roleName"); |
| | | arg.AddArg(L"dwname",L"/sale/view/Flow3/template/role"); |
| | | } |
| | | else if(colname=="flowAction") |
| | | else if(colname==L"flowAction") |
| | | { |
| | | arg.AddArg("stype","button"); |
| | | arg.AddArg("datacolumn","buttonName"); |
| | | arg.AddArg("displaycolumn","buttonName"); |
| | | arg.AddArg("dwname","/sale/view/Flow3/template/button"); |
| | | arg.AddArg(L"stype",L"button"); |
| | | arg.AddArg(L"datacolumn",L"buttonName"); |
| | | arg.AddArg(L"displaycolumn",L"buttonName"); |
| | | arg.AddArg(L"dwname",L"/sale/view/Flow3/template/button"); |
| | | } |
| | | else |
| | | return 1; |
| | | |
| | | OpenWindow("dev:xpage[FlowTermSelect.vx]",cast(arg as int)); |
| | | comdid = arg.GetArgString("comdid"); |
| | | OpenWindow(L"dev:xpage[FlowTermSelect.vx]",arg); |
| | | comdid = arg.GetArgString(L"comdid"); |
| | | |
| | | if(comdid=="xmOk") |
| | | if(comdid==L"xmOk") |
| | | { |
| | | data = arg.GetArgString("data"); |
| | | display = arg.GetArgString("display"); |
| | | data = arg.GetArgString(L"data"); |
| | | display = arg.GetArgString(L"display"); |
| | | dw_list.SetItemDisplayString(row,colname,display); |
| | | dw_list.SetItemString(row,colname,data); |
| | | dw_list.Redraw(); |
| | |
| | | int i = tab_1.GetSheetIndex(); |
| | | xdwgrid dw_list = GetSheetDwgrid(i); |
| | | |
| | | xaserverarg arg = new xaserverarg; |
| | | arg.setNativePointer(arg.CreateInstance()); |
| | | arg.SetArg("stype",GetSheetType(i),"string"); |
| | | arg.SetArg("sdata","ddd","string"); |
| | | arg.SetArg("flowID",flowid,"string"); |
| | | xaserverarg arg ; |
| | | ; |
| | | arg.SetArg(L"stype",GetSheetType(i),L"xstring"); |
| | | arg.SetArg(L"sdata",L"ddd",L"xstring"); |
| | | arg.SetArg(L"flowID",flowid,L"xstring"); |
| | | int obj = cast(dw_list as int); |
| | | arg.SetArg("dwobj",obj.toString(),"string"); |
| | | arg.SetArg("dwname",GetDwname(GetSheetType(i)),"string"); |
| | | OpenWindow("dev:xpage[FlowTermImport.vx]",cast(arg as int)); |
| | | arg.SetArg(L"dwobj",obj.toString(),L"xstring"); |
| | | arg.SetArg(L"dwname",GetDwname(GetSheetType(i)),L"xstring"); |
| | | OpenWindow(L"dev:xpage[FlowTermImport.vx]",arg); |
| | | |
| | | return 1; |
| | | } |
| | | |
| | | int OnRetrieve() |
| | | { |
| | | if(flowid=="") return 1; |
| | | if(flowid==L"") return 1; |
| | | |
| | | xml x = new xml; |
| | | x.setNativePointer(xml::CreateInstance()); |
| | | xaserverarg arg = new xaserverarg; |
| | | arg.setNativePointer(arg.CreateInstance()); |
| | | xml x ; |
| | | |
| | | xaserverarg arg ; |
| | | ; |
| | | |
| | | //int i = tab_1.GetSheetIndex(); |
| | | for(int i=0;i<7;i++) |
| | | { |
| | | //alert(i.toString()); |
| | | arg.SetArg("stype",GetSheetType(i),"string"); |
| | | arg.SetArg("sdata","ddd","string"); |
| | | arg.SetArg("flowID",flowid,"string"); |
| | | arg.SetArg(L"stype",GetSheetType(i),L"xstring"); |
| | | arg.SetArg(L"sdata",L"ddd",L"xstring"); |
| | | arg.SetArg(L"flowID",flowid,L"xstring"); |
| | | |
| | | //trace(arg.GetString()); |
| | | if (getUrl("/sale/data/Flow3/retrieve/flowex",arg.GetString(),x)!=1) |
| | | if (getUrl(L"/sale/data/Flow3/retrieve/flowex",arg.GetString(),x)!=1) |
| | | { |
| | | //trace(x.GetXmlDoc().text); |
| | | //trace(x.text()); |
| | | //return -1; |
| | | continue; |
| | | } |
| | |
| | | return 1; |
| | | } |
| | | |
| | | int OnTreeSelChanged(ref TNotifyEvent evt,int p) |
| | | int OnTreeSelChanged(TEvent* evt, int p) |
| | | { |
| | | ref NMTREEVIEW nmtv = cast(evt.pnmh as NMTREEVIEW); |
| | | int hItem = nmtv.itemNew.hItem; |
| | | msxml::IXMLDOMElement e = cast(tv_folder.GetItemData(hItem) as msxml::IXMLDOMElement); |
| | | flowid = e.getAttribute("flowID"); |
| | | NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh; |
| | | |
| | | int hCursor = xutil::SetCursorWait(); |
| | | HTREEITEM hItem = nmtv.itemNew.hItem; |
| | | KXMLDOMElement& e = *(KXMLDOMElement*)tv_1.GetItemData(hItem); |
| | | flowid = e.getAttribute(L"flowID"); |
| | | |
| | | HCURSOR hCursor = xutil::SetCursorWait(); |
| | | SetFlowChart(e); |
| | | OnRetrieve(); |
| | | xutil::RestoreCursor(hCursor); |
| | |
| | | return 1; |
| | | } |
| | | |
| | | int OnTabSelectSheet(ref TNotifyEvent evt,int p) |
| | | int OnTabSelectSheet(TEvent* evt, int p) |
| | | { |
| | | //OnRetrieve(); |
| | | |
| | | return 1; |
| | | } |
| | | |
| | | int SetFlowChart(msxml::IXMLDOMElement e) |
| | | int SetFlowChart(KXMLDOMElement e) |
| | | { |
| | | string flowUrl = e.getAttribute("flowchart"); |
| | | xflowchart flowchart = GetControl("flowchart"); |
| | | xml f = new xml; |
| | | f.setNativePointer(xml::CreateInstance()); |
| | | if(flowUrl != "") |
| | | xstring flowUrl = e.getAttribute(L"flowchart"); |
| | | xflowchart flowchart = GetControl(L"flowchart"); |
| | | xml f ; |
| | | |
| | | if(flowUrl != L"") |
| | | { |
| | | if(xaserver::FetchXml(flowUrl,"",f)==1) |
| | | if(xaserver::FetchXml(flowUrl,L"",f)==1) |
| | | { |
| | | flowchart.LoadEx(f.GetXmlDoc().documentElement); |
| | | flowchart.LoadEx(f.documentElement()); |
| | | } |
| | | }else |
| | | { |
| | | f.LoadXml("<sheet/>"); |
| | | flowchart.LoadEx(f.GetXmlDoc().documentElement); |
| | | f.loadXML(L"<sheet/>"); |
| | | flowchart.LoadEx(f.documentElement()); |
| | | } |
| | | return 1; |
| | | } |
| | | |
| | | |
| | | //命令发布函数 |
| | | int OnCmdDispatch(string comdid) |
| | | int OnCmdDispatch(xstring comdid) |
| | | { |
| | | if (comdid == "xmSave") |
| | | if (comdid == L"xmSave") |
| | | return OnSave(); |
| | | if (comdid == "xmAddrow") |
| | | if (comdid == L"xmAddrow") |
| | | return OnAddrow(); |
| | | if (comdid == "xmInsertrow") |
| | | if (comdid == L"xmInsertrow") |
| | | return OnInsertrow(); |
| | | if (comdid == "xmDeleterow") |
| | | if (comdid == L"xmDeleterow") |
| | | return OnDeleterow(); |
| | | if (comdid == "xmImport") |
| | | if (comdid == L"xmImport") |
| | | return OnImport(); |
| | | |
| | | 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)&flow::OnXCommand); |
| | | //获取焦点事件,用于重置工具条 |
| | | AttachEvent("WM_SETFOCUS",OnSetFocus); |
| | | AttachEvent(L"WM_SETFOCUS", (FEvent)&flow::OnSetFocus); |
| | | |
| | | AttachEvent("tv_folder", "TVN_SELCHANGED",OnTreeSelChanged); |
| | | AttachEvent("tab_1","LYSN_SELECTEDSHEET",OnTabSelectSheet); |
| | | AttachEvent("dw_flow","DWV_CLICKED",OnClicked); |
| | | AttachEvent("dw_buttonright","DWV_CLICKED",OnClicked); |
| | | AttachEvent("dw_button","DWV_CLICKED",OnClicked); |
| | | AttachEvent("dw_state","DWV_CLICKED",OnClicked); |
| | | AttachEvent(L"tv_folder", L"TVN_SELCHANGED", (FEvent)&flow::OnTreeSelChanged); |
| | | AttachEvent(L"tab_1",L"LYSN_SELECTEDSHEET", (FEvent)&flow::OnTabSelectSheet); |
| | | AttachEvent(L"dw_flow",L"DWV_CLICKED", (FEvent)&flow::OnClicked); |
| | | AttachEvent(L"dw_buttonright",L"DWV_CLICKED", (FEvent)&flow::OnClicked); |
| | | AttachEvent(L"dw_button",L"DWV_CLICKED", (FEvent)&flow::OnClicked); |
| | | AttachEvent(L"dw_state",L"DWV_CLICKED", (FEvent)&flow::OnClicked); |
| | | |
| | | return 1; |
| | | } |
| | |
| | | int CreateFlowFloder() |
| | | { |
| | | |
| | | xml x = ViewObject::RetrieveData("/sale/data/flow3/flowfolder"); |
| | | xml x = ViewObject::RetrieveData(L"/sale/data/flow3/flowfolder"); |
| | | if(x) |
| | | { |
| | | msxml::IXMLDOMNodeList nlist = x.GetXmlDoc().SelectNodes("//item"); |
| | | int len = nlist.length; |
| | | KXMLDOMNodeList nlist = x.selectNodes(L"//item"); |
| | | int len = nlist.length(); |
| | | int hItem = 0; |
| | | for (int i = 0; i < len; i++) |
| | | { |
| | | msxml::IXMLDOMElement e = nlist.item(i); |
| | | string name = e.getAttribute("flowName"); |
| | | string no = e.getAttribute("flowNo"); |
| | | string label = name;//no.trim() + " " + name; |
| | | KXMLDOMElement e = nlist.item(i); |
| | | xstring name = e.getAttribute(L"flowName"); |
| | | xstring no = e.getAttribute(L"flowNo"); |
| | | xstring label = name;//no.trim() + L" " + name; |
| | | int h= tv_folder.InsertChildItem(hItem,label, trust(e as int),22); |
| | | //tv_folder.SetItemChild(h,1); |
| | | } |
| | |
| | | |
| | | int onload() |
| | | { |
| | | flowid = ""; |
| | | tv_folder = GetControl("tv_folder"); |
| | | flowid = L""; |
| | | tv_folder = GetControl(L"tv_folder"); |
| | | CreateFlowFloder(); |
| | | |
| | | tv_1 = GetControl("tv_1"); |
| | | tab_1 = GetControl("tab_1"); |
| | | dw_flow = GetControl("dw_flow"); |
| | | dw_flow.openUrl("/sale/view/Flow3/template/flow"); |
| | | dw_state = GetControl("dw_state"); |
| | | dw_state.openUrl("/sale/view/Flow3/template/state"); |
| | | dw_button = GetControl("dw_button"); |
| | | dw_button.openUrl("/sale/view/Flow3/template/button"); |
| | | dw_role = GetControl("dw_role"); |
| | | dw_role.openUrl("/sale/view/Flow3/template/role"); |
| | | dw_bill = GetControl("dw_bill"); |
| | | dw_bill.openUrl("/sale/view/Flow3/template/bill"); |
| | | dw_scene = GetControl("dw_scene"); |
| | | dw_scene.openUrl("/sale/view/Flow3/template/scene"); |
| | | dw_buttonright = GetControl("dw_buttonright"); |
| | | dw_buttonright.openUrl("/sale/view/Flow3/template/buttonright"); |
| | | dw_datafieldright = GetControl("dw_datafieldright"); |
| | | dw_datafieldright.openUrl("/sale/view/Flow3/template/datafieldright"); |
| | | tv_1 = GetControl(L"tv_1"); |
| | | tab_1 = GetControl(L"tab_1"); |
| | | dw_flow = GetControl(L"dw_flow"); |
| | | dw_flow.openUrl(L"/sale/view/Flow3/template/flow"); |
| | | dw_state = GetControl(L"dw_state"); |
| | | dw_state.openUrl(L"/sale/view/Flow3/template/state"); |
| | | dw_button = GetControl(L"dw_button"); |
| | | dw_button.openUrl(L"/sale/view/Flow3/template/button"); |
| | | dw_role = GetControl(L"dw_role"); |
| | | dw_role.openUrl(L"/sale/view/Flow3/template/role"); |
| | | dw_bill = GetControl(L"dw_bill"); |
| | | dw_bill.openUrl(L"/sale/view/Flow3/template/bill"); |
| | | dw_scene = GetControl(L"dw_scene"); |
| | | dw_scene.openUrl(L"/sale/view/Flow3/template/scene"); |
| | | dw_buttonright = GetControl(L"dw_buttonright"); |
| | | dw_buttonright.openUrl(L"/sale/view/Flow3/template/buttonright"); |
| | | dw_datafieldright = GetControl(L"dw_datafieldright"); |
| | | dw_datafieldright.openUrl(L"/sale/view/Flow3/template/datafieldright"); |
| | | |
| | | OnAttachEvent(); |
| | | |
| | |
| | | return 1; |
| | | } |
| | | }; |
| | | ] |
| | |
| | | use "xcontrol.vframe.vbusiness.vd" |
| | | use "xbase.vframe.vbusiness.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 FlowTermImport : public xframe |
| | | |
| | | #include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" |
| | | #include "viewobject/view.base.hpp" |
| | | |
| | | using xml = KXMLDOMDocument; |
| | | class __declspec(dllexport) FlowTermImport : public xframe |
| | | { |
| | | public: |
| | | xdwgrid dw_list; |
| | | string stype; |
| | | string sdata; |
| | | string flowid; |
| | | string datacolumn; |
| | | string displaycolumn; |
| | | xstring stype; |
| | | xstring sdata; |
| | | xstring flowid; |
| | | xstring datacolumn; |
| | | xstring displaycolumn; |
| | | xdwgrid dw_obj; |
| | | |
| | | xnode m_agentNode; //Agent Condition |
| | | |
| | | public: |
| | | FlowTermImport(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} |
| | | public: |
| | | static FlowTermImport* CreateInstance(void* implPtr, void* hWnd) |
| | | { |
| | | FlowTermImport* pWin = new FlowTermImport(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(); |
| | | return 1; |
| | | } |
| | | |
| | | int OnOK(string comdid) |
| | | int OnOK(xstring comdid) |
| | | { |
| | | int row = dw_list.GetNextSelectRow(1); |
| | | if(row < 1 && dw_list.GetRowCount()==1) row = 1; |
| | | if (row<1) |
| | | { |
| | | alert("请选择项!"); |
| | | alert(L"请选择项!"); |
| | | return 1; |
| | | } |
| | | |
| | |
| | | int columnCount = dw_obj.GetColumnCount(); |
| | | for(int i=1;i<=columnCount;i++) |
| | | { |
| | | if(dw_list.GetColumnName(i)=="guid") continue; |
| | | if(dw_list.GetColumnName(i)==L"guid") continue; |
| | | dw_obj.SetItemString(nrow,i,dw_list.GetItemString(row,i)); |
| | | if(dw_list.GetItemDisplayString(row,i)!="") |
| | | if(dw_list.GetItemDisplayString(row,i)!=L"") |
| | | dw_obj.SetItemDisplayString(nrow,i,dw_list.GetItemDisplayString(row,i)); |
| | | } |
| | | row = dw_list.GetNextSelectRow(row + 1); |
| | |
| | | } |
| | | |
| | | //命令发布函数 |
| | | int OnCmdDispatch(string comdid) |
| | | int OnCmdDispatch(xstring comdid) |
| | | { |
| | | if (comdid=="xmOk") |
| | | if (comdid==L"xmOk") |
| | | { |
| | | OnOK(comdid); |
| | | return 1; |
| | | } |
| | | else if (comdid=="xmCancel") |
| | | else if (comdid==L"xmCancel") |
| | | { |
| | | CloseWindow(); |
| | | 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)&FlowTermImport::OnXCommand); |
| | | //获取焦点事件,用于重置工具条 |
| | | AttachEvent("WM_SETFOCUS",OnSetFocus); |
| | | AttachEvent(L"WM_SETFOCUS", (FEvent)&FlowTermImport::OnSetFocus); |
| | | return 1; |
| | | } |
| | | |
| | | int OnRetrieve() |
| | | { |
| | | xml x = new xml; |
| | | x.setNativePointer(xml::CreateInstance()); |
| | | xaserverarg arg = new xaserverarg; |
| | | arg.setNativePointer(arg.CreateInstance()); |
| | | xml x ; |
| | | |
| | | arg.AddArg("stype",stype); |
| | | arg.AddArg("sdata",sdata); |
| | | arg.AddArg("flowID",flowid); |
| | | xaserverarg arg ; |
| | | ; |
| | | |
| | | if (getUrl("/sale/data/Flow3/retrieve/flowimport",arg.GetString(),x)!=1) |
| | | arg.AddArg(L"stype",stype); |
| | | arg.AddArg(L"sdata",sdata); |
| | | arg.AddArg(L"flowID",flowid); |
| | | |
| | | if (getUrl(L"/sale/data/Flow3/retrieve/flowimport",arg.GetString(),x)!=1) |
| | | { |
| | | trace(x.GetXmlDoc().text); |
| | | trace(x.text()); |
| | | return -1; |
| | | }else |
| | | { |
| | |
| | | |
| | | int onload() |
| | | { |
| | | |
| | | dw_list = GetControl("dw_list"); |
| | | //dw_list.openUrl("xxx"); |
| | | if(GetParam()) |
| | | SetArg(); |
| | | dw_list = GetControl(L"dw_list"); |
| | | //dw_list.openUrl(L"xxx"); |
| | | if(GetWinParam()) |
| | | { |
| | | xaserverarg arg = GetParam(); |
| | | stype = arg.GetArgString("stype"); |
| | | sdata = arg.GetArgString("sdata"); |
| | | flowid = arg.GetArgString("flowid"); |
| | | xaserverarg arg = GetArg(); |
| | | stype = arg.GetArgString(L"stype"); |
| | | sdata = arg.GetArgString(L"sdata"); |
| | | flowid = arg.GetArgString(L"flowid"); |
| | | |
| | | string dwname = arg.GetArgString("dwname"); |
| | | int dwobj = arg.GetArgString("dwobj").toInt(); |
| | | xstring dwname = arg.GetArgString(L"dwname"); |
| | | int dwobj = arg.GetArgString(L"dwobj").toInt(); |
| | | dw_obj = cast(dwobj as xdwgrid); |
| | | |
| | | dw_list.openUrl(dwname); |
| | |
| | | return 1; |
| | | } |
| | | }; |
| | | ] |
| | |
| | | use "xcontrol.vframe.vbusiness.vd" |
| | | use "xbase.vframe.vbusiness.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 FlowTermSelect : public xframe |
| | | |
| | | #include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" |
| | | #include "viewobject/view.base.hpp" |
| | | |
| | | using xml = KXMLDOMDocument; |
| | | class __declspec(dllexport) FlowTermSelect : public xframe |
| | | { |
| | | public: |
| | | xdwgrid dw_list; |
| | | string stype; |
| | | string sdata; |
| | | string flowid; |
| | | string datacolumn; |
| | | string displaycolumn; |
| | | xstring stype; |
| | | xstring sdata; |
| | | xstring flowid; |
| | | xstring datacolumn; |
| | | xstring displaycolumn; |
| | | |
| | | xnode m_agentNode; //Agent Condition |
| | | |
| | | public: |
| | | FlowTermSelect(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} |
| | | public: |
| | | static FlowTermSelect* CreateInstance(void* implPtr, void* hWnd) |
| | | { |
| | | FlowTermSelect* pWin = new FlowTermSelect(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(); |
| | | return 1; |
| | | } |
| | | |
| | | int OnOK(string comdid) |
| | | int OnOK(xstring comdid) |
| | | { |
| | | xaserverarg arg = new xaserverarg; |
| | | arg.setNativePointer(arg.CreateInstance()); |
| | | arg = GetParam(); |
| | | arg.AddArg("comdid",comdid); |
| | | xaserverarg arg ; |
| | | arg = GetArg(); |
| | | |
| | | arg.AddArg(L"comdid",comdid); |
| | | |
| | | int row = dw_list.GetNextSelectRow(1); |
| | | if(row < 1 && dw_list.GetRowCount()==1) row = 1; |
| | | if (row<1) |
| | | { |
| | | alert("请选择项!"); |
| | | alert(L"请选择项!"); |
| | | return 1; |
| | | } |
| | | |
| | | while (row>0) |
| | | { |
| | | msxml::IXMLDOMElement e = dw_list.GetRowElement(row); |
| | | string data = e.selectSingleNode(datacolumn).text+""; |
| | | string display = e.selectSingleNode(displaycolumn).text+""; |
| | | arg.AddArg("data",data); |
| | | arg.AddArg("display",display); |
| | | KXMLDOMElement e = dw_list.GetRowElement(row); |
| | | xstring data = e.selectSingleNode(datacolumn).text()+(xstring)L""; |
| | | xstring display = e.selectSingleNode(displaycolumn).text()+ (xstring)L""; |
| | | arg.AddArg(L"data",data); |
| | | arg.AddArg(L"display",display); |
| | | row = dw_list.GetNextSelectRow(row + 1); |
| | | } |
| | | CloseWindow(); |
| | |
| | | } |
| | | |
| | | //命令发布函数 |
| | | int OnCmdDispatch(string comdid) |
| | | int OnCmdDispatch(xstring comdid) |
| | | { |
| | | if (comdid=="xmOk") |
| | | if (comdid==L"xmOk") |
| | | { |
| | | OnOK(comdid); |
| | | return 1; |
| | | } |
| | | else if (comdid=="xmCancel") |
| | | else if (comdid==L"xmCancel") |
| | | { |
| | | CloseWindow(); |
| | | 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)&FlowTermSelect::OnXCommand); |
| | | //获取焦点事件,用于重置工具条 |
| | | AttachEvent("WM_SETFOCUS",OnSetFocus); |
| | | AttachEvent(L"WM_SETFOCUS", (FEvent)&FlowTermSelect::OnSetFocus); |
| | | return 1; |
| | | } |
| | | |
| | | int OnRetrieve() |
| | | { |
| | | xml x = new xml; |
| | | x.setNativePointer(xml::CreateInstance()); |
| | | xaserverarg arg = new xaserverarg; |
| | | arg.setNativePointer(arg.CreateInstance()); |
| | | xml x ; |
| | | |
| | | arg.AddArg("stype",stype); |
| | | arg.AddArg("sdata",sdata); |
| | | arg.AddArg("flowID",flowid); |
| | | xaserverarg arg ; |
| | | ; |
| | | |
| | | if (getUrl("/sale/data/Flow3/retrieve/flowex",arg.GetString(),x)!=1) |
| | | arg.AddArg(L"stype",stype); |
| | | arg.AddArg(L"sdata",sdata); |
| | | arg.AddArg(L"flowID",flowid); |
| | | |
| | | if (getUrl(L"/sale/data/Flow3/retrieve/flowex",arg.GetString(),x)!=1) |
| | | { |
| | | trace(x.GetXmlDoc().text); |
| | | trace(x.text()); |
| | | return -1; |
| | | }else |
| | | { |
| | |
| | | |
| | | int onload() |
| | | { |
| | | |
| | | dw_list = GetControl("dw_list"); |
| | | //dw_list.openUrl("xxx"); |
| | | if(GetParam()) |
| | | SetArg(); |
| | | dw_list = GetControl(L"dw_list"); |
| | | //dw_list.openUrl(L"xxx"); |
| | | if(GetWinParam()) |
| | | { |
| | | xaserverarg arg = GetParam(); |
| | | stype = arg.GetArgString("stype"); |
| | | sdata = arg.GetArgString("sdata"); |
| | | flowid = arg.GetArgString("flowid"); |
| | | xaserverarg arg = GetArg(); |
| | | stype = arg.GetArgString(L"stype"); |
| | | sdata = arg.GetArgString(L"sdata"); |
| | | flowid = arg.GetArgString(L"flowid"); |
| | | |
| | | datacolumn = arg.GetArgString("datacolumn"); |
| | | displaycolumn = arg.GetArgString("displaycolumn"); |
| | | datacolumn = arg.GetArgString(L"datacolumn"); |
| | | displaycolumn = arg.GetArgString(L"displaycolumn"); |
| | | |
| | | string dwname = arg.GetArgString("dwname"); |
| | | xstring dwname = arg.GetArgString(L"dwname"); |
| | | dw_list.openUrl(dwname); |
| | | OnRetrieve(); |
| | | dw_list.SetSelectionMode(1); |
| | |
| | | return 1; |
| | | } |
| | | }; |
| | | ] |
| | |
| | | use "xcontrol.vframe.vbusiness.vd" |
| | | use "xbase.vframe.vbusiness.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 ViewLogList : public xwin |
| | | |
| | | #include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" |
| | | #include "viewobject/view.base.hpp" |
| | | |
| | | using xml = KXMLDOMDocument; |
| | | class __declspec(dllexport) ViewLogList : public xwin |
| | | { |
| | | public: |
| | | xdwgrid dw_list; |
| | | xoffice dw_office; |
| | | xcell dw_cell; |
| | | xnode m_agentNode; //Agent Condition |
| | | string m_category; |
| | | string argStr; |
| | | string searchStr; |
| | | |
| | | xstring m_category; |
| | | xstring argStr; |
| | | xstring searchStr; |
| | | public: |
| | | ViewLogList(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd) {} |
| | | public: |
| | | static ViewLogList* CreateInstance(void* implPtr, void* hWnd) |
| | | { |
| | | ViewLogList* pWin = new ViewLogList(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) |
| | | { |
| | | int hCursor = 0; |
| | | if(comdid=="xmQuery") |
| | | HCURSOR hCursor = 0; |
| | | if(comdid==L"xmQuery") |
| | | { |
| | | xaserverarg ar = new xaserverarg; |
| | | ar.setNativePointer(ar.CreateInstance()); |
| | | ar.AddArg("argurl","/sale/view/Total3/arg/LogListItem"); |
| | | if(argStr !="") |
| | | ar.AddArg("arg",argStr); |
| | | OpenWindow("dev:xpage[view.total.arg.vx]",cast(ar as int)); |
| | | string arstr = ar.GetArgString("arg"); |
| | | if(arstr != "" && ar.GetArgString("action")=="ok") |
| | | xaserverarg ar ; |
| | | |
| | | ar.AddArg(L"argurl",L"/sale/view/Total3/arg/LogListItem"); |
| | | if(argStr !=L"") |
| | | ar.AddArg(L"arg",argStr); |
| | | OpenWindow(L"dev:xpage[view.total.arg.vx]",ar); |
| | | xstring arstr = ar.GetArgString(L"arg"); |
| | | if(arstr != L"" && ar.GetArgString(L"action")==L"ok") |
| | | { |
| | | argStr = arstr; |
| | | hCursor = xutil::SetCursorWait(); |
| | | OnRetrieve("/sale/data/Total3/total/GDNTotal/Item/LogList",argStr); |
| | | OnRetrieve(L"/sale/data/Total3/total/GDNTotal/Item/LogList",argStr); |
| | | |
| | | xutil::RestoreCursor(hCursor); |
| | | } |
| | | |
| | | else |
| | | { |
| | | argStr=""; |
| | | OnRetrieve("/sale/data/Total3/total/GDNTotal/Item/LogList",argStr); |
| | | argStr=L""; |
| | | OnRetrieve(L"/sale/data/Total3/total/GDNTotal/Item/LogList",argStr); |
| | | } |
| | | |
| | | return 1; |
| | | } |
| | | if(comdid=="xmAnalysis") |
| | | if(comdid==L"xmAnalysis") |
| | | { |
| | | hCursor = xutil::SetCursorWait(); |
| | | string str = dw_list.DataAnalysis(""); |
| | | xaserverarg arg=new xaserverarg; |
| | | arg.setNativePointer(arg.CreateInstance()); |
| | | arg.AddArg("html", str); |
| | | int obj = cast(dw_list as int); |
| | | arg.AddArg("obj",obj.toString()); |
| | | OpenWindow("dev:xpage[data.vanalysis.vx]", cast(arg as int)); |
| | | xstring str = dw_list.DataAnalysis(L""); |
| | | xaserverarg arg; |
| | | ; |
| | | arg.AddArg(L"html", str); |
| | | |
| | | OpenWindow(L"dev:xpage[data.vanalysis.vx]", arg); |
| | | xutil::RestoreCursor(hCursor); |
| | | return 1; |
| | | } |
| | | if(comdid=="xmSearch") return OnSearch(); |
| | | if(comdid==L"xmSearch") return OnSearch(); |
| | | return 0; |
| | | } |
| | | |
| | | int OnSearch() |
| | | { |
| | | xaserverarg arg=new xaserverarg; |
| | | arg.setNativePointer(arg.CreateInstance()); |
| | | arg.AddArg("text", searchStr); |
| | | OpenWindow("dev:xpage[search.dialog.vx]", cast(arg as int)); |
| | | string str = arg.GetArgString("text"); |
| | | xaserverarg arg; |
| | | ; |
| | | arg.AddArg(L"text", searchStr); |
| | | OpenWindow(L"dev:xpage[search.dialog.vx]", arg); |
| | | xstring str = arg.GetArgString(L"text"); |
| | | if(str != searchStr) |
| | | { |
| | | searchStr = str; |
| | | dw_list.Filter("*",searchStr); |
| | | dw_list.Filter(L"*",searchStr); |
| | | return 1; |
| | | } |
| | | return 1; |
| | |
| | | |
| | | |
| | | |
| | | int OnCombboChanged(ref TCommandEvent evt,int lParam) |
| | | int OnCombboChanged(TEvent* evt, LPARAM lParam) |
| | | { |
| | | int h = xcombobox::GetCurSel(evt.hCtrl); |
| | | int h = xcombobox::GetCurSel(evt->command.hCtrl); |
| | | if(h > -1) |
| | | { |
| | | int hCursor = xutil::SetCursorWait(); |
| | | msxml::IXMLDOMElement e = xcombobox::GetItemData(evt.hCtrl, h); |
| | | HCURSOR hCursor = xutil::SetCursorWait(); |
| | | KXMLDOMElement e = xcombobox::GetItemData(evt->command.hCtrl, h); |
| | | |
| | | win32::PostMessage(GetHWND(),0x401,"xmQuery",0); |
| | | //OnCmdDispatch("xmQuery"); |
| | | PostMessage(GetHWND(),0x401,(LPARAM)L"xmQuery",0); |
| | | //OnCmdDispatch(L"xmQuery"); |
| | | xutil::RestoreCursor(hCursor); |
| | | } |
| | | 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 OnDWClick(ref TNotifyEvent evt,int p) |
| | | int OnDWClick(TEvent* evt, int p) |
| | | { |
| | | ref DWNMHDR hdr = trust(evt.pnmh as ref DWNMHDR); |
| | | string value = hdr.data; |
| | | string colname = hdr.colname; |
| | | DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; |
| | | xstring value = hdr.data; |
| | | xstring colname = hdr.colname; |
| | | int row = hdr.row; |
| | | |
| | | if(row < 1) return 1; |
| | |
| | | int OnAttachEvent() |
| | | { |
| | | //绑定工具条点击事件 |
| | | AttachEvent("WM_XCOMMAND",OnXCommand); |
| | | AttachEvent(L"WM_XCOMMAND", (FEvent)&ViewLogList::OnXCommand); |
| | | //获取焦点事件,用于重置工具条 |
| | | AttachEvent("WM_SETFOCUS",OnSetFocus); |
| | | AttachEvent("cb_report","CBN_SELCHANGE",OnCombboChanged); |
| | | AttachEvent("dw_report","DWV_CLICKED",OnDWClick); |
| | | AttachEvent(L"WM_SETFOCUS", (FEvent)&ViewLogList::OnSetFocus); |
| | | AttachEvent(L"cb_report",L"CBN_SELCHANGE", (FEvent)&ViewLogList::OnCombboChanged); |
| | | AttachEvent(L"dw_report",L"DWV_CLICKED", (FEvent)&ViewLogList::OnDWClick); |
| | | return 1; |
| | | } |
| | | |
| | | int OnRetrieve(string dataurl, string argstr) |
| | | int OnRetrieve(xstring dataurl, xstring argstr) |
| | | { |
| | | dw_list.Reset(); |
| | | |
| | | xml x = new xml; |
| | | x.setNativePointer(xml::CreateInstance()); |
| | | xaserverarg arg = new xaserverarg; |
| | | arg.setNativePointer(arg.CreateInstance()); |
| | | arg.AddArg("arg",argstr); |
| | | xml x ; |
| | | |
| | | xaserverarg arg ; |
| | | ; |
| | | arg.AddArg(L"arg",argstr); |
| | | //alert(argstr); |
| | | |
| | | if (url::get(dataurl,arg.GetString(),x)!=1) |
| | | if (xurl::get(dataurl,arg.GetString(),x)!=1) |
| | | { |
| | | //alert(x.GetXml()); |
| | | trace(x.GetXmlDoc().text); |
| | | //alert(x.xml()); |
| | | trace(x.text()); |
| | | dw_list.Redraw(); |
| | | return -1; |
| | | } |
| | | //alert(x.GetXml()); |
| | | //alert(x.xml()); |
| | | dw_list.Retrieve(x); |
| | | dw_list.Redraw(); |
| | | dw_list.SetReadOnly(true); |
| | |
| | | |
| | | int onload() |
| | | { |
| | | dw_list = GetControl("dw_report"); |
| | | dw_office = GetControl("dw_office"); |
| | | dw_cell = GetControl("dw_cell"); |
| | | dw_list.openUrl("/sale/view/Total3/template/business/gdn/LogList/ship/full"); |
| | | dw_list = GetControl(L"dw_report"); |
| | | dw_office = GetControl(L"dw_office"); |
| | | dw_cell = GetControl(L"dw_cell"); |
| | | dw_list.openUrl(L"/sale/view/Total3/template/business/gdn/LogList/ship/full"); |
| | | |
| | | argStr =""; |
| | | xcombobox xc = GetControl("cb_report"); |
| | | argStr =L""; |
| | | xcombobox xc = GetControl(L"cb_report"); |
| | | |
| | | |
| | | OnAttachEvent(); |
| | |
| | | int onloaded() |
| | | { |
| | | SetAgent(); |
| | | OnCmdDispatch("xmQuery"); |
| | | OnCmdDispatch(L"xmQuery"); |
| | | return 1; |
| | | } |
| | | }; |
| | | ] |
| | |
| | | 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 vbusiness |
| | | [ |
| | | class SysLoginRecord : public frame |
| | | |
| | | #include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" |
| | | #include "viewobject/view.base.hpp" |
| | | |
| | | using xml = KXMLDOMDocument; |
| | | class __declspec(dllexport) SysLoginRecord : public xframe |
| | | { |
| | | public: |
| | | xdwgrid dw_logrecord; |
| | | xdwtable dw_arg; |
| | | public: |
| | | SysLoginRecord(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} |
| | | public: |
| | | static SysLoginRecord* CreateInstance(void* implPtr, void* hWnd) |
| | | { |
| | | SysLoginRecord* pWin = new SysLoginRecord(implPtr, (HWND)hWnd); |
| | | return pWin; |
| | | } |
| | | int OnRetrieve() |
| | | { |
| | | xcontrol xc_text =GetControl("QueryTxt"); |
| | | xcontrol xc_cbx = GetControl("cbx_type"); |
| | | string ls_querytxt; |
| | | string ls_querytype; |
| | | xcontrol xc_text =GetControl(L"QueryTxt"); |
| | | xcontrol xc_cbx = GetControl(L"cbx_type"); |
| | | xstring ls_querytxt; |
| | | xstring ls_querytype; |
| | | ls_querytxt = xc_text.GetText(); |
| | | ls_querytype = xc_cbx.GetText(); |
| | | xml x = new xml; |
| | | x.setNativePointer(x.CreateInstance()); |
| | | xaserverarg arg = new xaserverarg; |
| | | arg.setNativePointer(arg.CreateInstance()); |
| | | arg.AddArg("sType",ls_querytype); |
| | | arg.AddArg("QueryText",ls_querytxt); |
| | | arg.AddArg("QueryArg",GetQueryArg()); |
| | | xml x ; |
| | | xaserverarg arg ; |
| | | arg.AddArg(L"sType",ls_querytype); |
| | | arg.AddArg(L"QueryText",ls_querytxt); |
| | | arg.AddArg(L"QueryArg",GetQueryArg()); |
| | | //alert(ls_querytxt); |
| | | if (url::get("/sale/data/Total3/total/GDNTotal/Item/GetSysLoginLog",arg.GetString(),x) == 1) |
| | | if (xurl::get(L"/sale/data/Total3/total/GDNTotal/Item/GetSysLoginLog",arg.GetString(),x) == 1) |
| | | { |
| | | //trace(x.GetXml()); |
| | | //trace(x.xml()); |
| | | dw_logrecord.Retrieve(x); |
| | | dw_logrecord.Redraw(); |
| | | dw_logrecord.SetSelectionMode(1); |
| | | } |
| | | else |
| | | alert("查不到"); |
| | | alert(L"查不到"); |
| | | return 1; |
| | | } |
| | | //命令发布函数 |
| | | int OnCmdDispatch(string comdid) |
| | | int OnCmdDispatch(xstring comdid) |
| | | { |
| | | int hCursor = xutil::SetCursorWait(); |
| | | if(comdid=="ContSearch") |
| | | HCURSOR hCursor = xutil::SetCursorWait(); |
| | | if(comdid==L"ContSearch") |
| | | OnRetrieve(); |
| | | return 0; |
| | | } |
| | | |
| | | //命令处理事件 |
| | | int OnXCommand(ref TXCommandEvent evt,int p) |
| | | int OnXCommand(TEvent* evt, LPARAM param) |
| | | { |
| | | return OnCmdDispatch(evt.pStrID); |
| | | return OnCmdDispatch(evt->xcommand.pStrID); |
| | | } |
| | | |
| | | string GetQueryArg() |
| | | xstring GetQueryArg() |
| | | { |
| | | dw_arg.AcceptText(); |
| | | xml x = new xml; |
| | | x.setNativePointer(xml::CreateInstance()); |
| | | dw_arg.DwUpdateAllTo(x.GetXmlDoc()); |
| | | return x.GetXml(); |
| | | xml x ; |
| | | |
| | | dw_arg.DwUpdateAllTo(x); |
| | | return x.xml(); |
| | | } |
| | | |
| | | |
| | | int OnAttachEvent() |
| | | { |
| | | AttachEvent("WM_XCOMMAND",OnXCommand); |
| | | AttachEvent(L"WM_XCOMMAND", (FEvent)&SysLoginRecord::OnXCommand); |
| | | return 1; |
| | | } |
| | | |
| | | int onload() |
| | | { |
| | | dw_logrecord = GetControl("dw_logrecord"); |
| | | dw_logrecord.openUrl("/sale/view/SysUser/template/SysLoginRecord"); |
| | | dw_arg = GetControl("dw_arg"); |
| | | dw_arg.openUrl("/sale/view/AR/template/queryarg"); |
| | | dw_logrecord = GetControl(L"dw_logrecord"); |
| | | dw_logrecord.openUrl(L"/sale/view/SysUser/template/SysLoginRecord"); |
| | | dw_arg = GetControl(L"dw_arg"); |
| | | dw_arg.openUrl(L"/sale/view/AR/template/queryarg"); |
| | | dw_arg.SetColHeaderHeight(0); |
| | | dw_arg.SetRowSelectorWidth(0); |
| | | dw_arg.SetHScrollState(false); |
| | |
| | | } |
| | | int onloaded() |
| | | { |
| | | //alert("xxx"); |
| | | //alert(L"xxx"); |
| | | OnAttachEvent(); |
| | | //OnRetrieve(); |
| | | return 1; |
| | | } |
| | | }; |
| | | ] |
| | |
| | | use "xcontrol.vframe.vbusiness.vd" |
| | | use "xbase.vframe.vbusiness.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 TestRetrieveingWin: public xframe |
| | | |
| | | #include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" |
| | | #include "viewobject/view.base.hpp" |
| | | |
| | | using xml = KXMLDOMDocument; |
| | | class __declspec(dllexport) TestRetrieveingWin: public xframe |
| | | { |
| | | public: |
| | | //xdwgrid dw_list; |
| | | |
| | | xnode m_agentNode; //Agent Condition |
| | | |
| | | public: |
| | | TestRetrieveingWin(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} |
| | | public: |
| | | static TestRetrieveingWin* CreateInstance(void* implPtr, void* hWnd) |
| | | { |
| | | TestRetrieveingWin* pWin = new TestRetrieveingWin(implPtr, (HWND)hWnd); |
| | | return pWin; |
| | | } |
| | | //焦点激活处理函数 |
| | | int OnSetFocus(ref TEvent evt,int param) |
| | | int OnSetFocus(TEvent* evt, LPARAM param) |
| | | { |
| | | //重置工具条 |
| | | return 1; |
| | | } |
| | | |
| | | //命令发布函数 |
| | | int OnCmdDispatch(string comdid) |
| | | int OnCmdDispatch(xstring comdid) |
| | | { |
| | | if(comdid=="RetrieveFinished") |
| | | if(comdid==L"RetrieveFinished") |
| | | { |
| | | CloseWindow(); |
| | | 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)&TestRetrieveingWin::OnXCommand); |
| | | //获取焦点事件,用于重置工具条 |
| | | AttachEvent("WM_SETFOCUS",OnSetFocus); |
| | | AttachEvent(L"WM_SETFOCUS", (FEvent)&TestRetrieveingWin::OnSetFocus); |
| | | return 1; |
| | | } |
| | | |
| | | int onload() |
| | |
| | | } |
| | | |
| | | }; |
| | | ] |
| | |
| | | use "xcontrol.vframe.vbusiness.vd" |
| | | use "xbase.vframe.vbusiness.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 UserPassDlg : public xframe |
| | | |
| | | #include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" |
| | | #include "viewobject/view.base.hpp" |
| | | |
| | | using xml = KXMLDOMDocument; |
| | | class __declspec(dllexport) UserPassDlg : public xframe |
| | | { |
| | | public: |
| | | //xdwgrid dw_list; |
| | | |
| | | xnode m_agentNode; //Agent Condition |
| | | |
| | | static string MD5(string) native from "XUtil.dll" alias "?MD5@IXFUtil@XFrame@Hxsoft@@SAPA_WPA_W@Z"; |
| | | static xstring MD5(xstring) native from "XUtil.dll" alias "?MD5@IXFUtil@XFrame@Hxsoft@@SAPA_WPA_W@Z"; |
| | | public: |
| | | UserPassDlg(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} |
| | | public: |
| | | static UserPassDlg* CreateInstance(void* implPtr, void* hWnd) |
| | | { |
| | | UserPassDlg* pWin = new UserPassDlg(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") |
| | | { |
| | | if(GetControl("old_pass").GetText()=="") |
| | | if(xcontrol(GetControl(L"old_pass")).GetText()==L"") |
| | | { |
| | | alert("请输入旧口令!"); |
| | | win32::SetFocus(GetControl("old_pass").GetId()); |
| | | alert(L"请输入旧口令!"); |
| | | SetFocus(xcontrol(GetControl(L"old_pass")).GetId()); |
| | | return 1; |
| | | } |
| | | |
| | | string ostr = GetControl("old_pass").GetText(); |
| | | string str1 = GetControl("new_pass").GetText(); |
| | | string str2 = GetControl("new_pass1").GetText(); |
| | | xstring ostr = xcontrol(GetControl(L"old_pass")).GetText(); |
| | | xstring str1 = xcontrol(GetControl(L"new_pass")).GetText(); |
| | | xstring str2 = xcontrol(GetControl(L"new_pass1")).GetText(); |
| | | if(str1 != str2) |
| | | { |
| | | alert("两遍新口令不一致!"); |
| | | win32::SetFocus(GetControl("new_pass1").GetId()); |
| | | alert(L"两遍新口令不一致!"); |
| | | SetFocus(xcontrol(GetControl(L"new_pass1")).GetId()); |
| | | return 1; |
| | | } |
| | | |
| | | string oldpass = MD5(ostr); |
| | | string newpass = MD5(str1); |
| | | xstring oldpass = MD5(ostr); |
| | | xstring newpass = MD5(str1); |
| | | |
| | | xml x=new xml; |
| | | x.setNativePointer(x.CreateInstance()); |
| | | xaserverarg arg = new xaserverarg; |
| | | arg.setNativePointer(arg.CreateInstance()); |
| | | arg.AddArg("old_password",oldpass); |
| | | arg.AddArg("new_password",newpass); |
| | | xml x; |
| | | |
| | | if(getUrl("/sale/data/SysUser/update/password",arg.GetString(),x)!=1) |
| | | xaserverarg arg ; |
| | | ; |
| | | arg.AddArg(L"old_password",oldpass); |
| | | arg.AddArg(L"new_password",newpass); |
| | | |
| | | if(getUrl(L"/sale/data/SysUser/update/password",arg.GetString(),x)!=1) |
| | | { |
| | | alert("修改失败"); |
| | | alert(L"修改失败"); |
| | | } |
| | | else{ |
| | | if(x.GetXmlDoc().selectSingleNode("error")) |
| | | if(x.selectSingleNode(L"error")) |
| | | { |
| | | alert(x.GetXmlDoc().selectSingleNode("error").text); |
| | | alert(x.selectSingleNode(L"error").text()); |
| | | return 1; |
| | | } |
| | | win32::MessageBox(GetHWND(),"修改口令成功!","提示",0); |
| | | MessageBox(GetHWND(),L"修改口令成功!",L"提示",0); |
| | | CloseWindow(); |
| | | } |
| | | 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)&UserPassDlg::OnXCommand); |
| | | //获取焦点事件,用于重置工具条 |
| | | AttachEvent("WM_SETFOCUS",OnSetFocus); |
| | | AttachEvent(L"WM_SETFOCUS", (FEvent)&UserPassDlg::OnSetFocus); |
| | | return 1; |
| | | } |
| | | |
| | | int onload() |
| | | { |
| | | |
| | | //const int EM_SETPASSWORDCHAR =0x00CC; |
| | | //win32::SendMessage(GetControl("old_pass").GetId(),EM_SETPASSWORDCHAR,42,0); |
| | | //win32::SendMessage(GetControl("new_pass").GetId(),EM_SETPASSWORDCHAR,42,0); |
| | | //win32::SendMessage(GetControl("new_pass1").GetId(),EM_SETPASSWORDCHAR,42,0); |
| | | //win32::SendMessage(GetControl(L"old_pass").GetId(),EM_SETPASSWORDCHAR,42,0); |
| | | //win32::SendMessage(GetControl(L"new_pass").GetId(),EM_SETPASSWORDCHAR,42,0); |
| | | //win32::SendMessage(GetControl(L"new_pass1").GetId(),EM_SETPASSWORDCHAR,42,0); |
| | | |
| | | OnAttachEvent(); |
| | | |
| | |
| | | return 1; |
| | | } |
| | | }; |
| | | ] |
| | |
| | | use "xcontrol.vframe.vbusiness.vd" |
| | | use "xbase.vframe.vbusiness.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 levelCustomerv3 : public listwin |
| | | |
| | | #include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" |
| | | #include "viewobject/view.base.hpp" |
| | | |
| | | using xml = KXMLDOMDocument; |
| | | class __declspec(dllexport) levelCustomerv3 : public listwin |
| | | { |
| | | public: |
| | | xdwgrid dw_goods; |
| | | xtreeview tv_1; |
| | | xcombobox ddlb_1; |
| | | int changeddlb; |
| | | |
| | | string m_sType; //type |
| | | string m_sTypeTxt; //选中树的data |
| | | // string m_searchtxt; |
| | | xstring m_sType; //type |
| | | xstring m_sTypeTxt; //选中树的data |
| | | // xstring m_searchtxt; |
| | | int PIndex; |
| | | xnode m_agentNode; //Agent Condition |
| | | string m_agentCond; //Agent Node |
| | | xstring m_agentCond; //Agent Node |
| | | |
| | | |
| | | public: |
| | | levelCustomerv3(void* implPtr, HWND hWnd) :listwin(implPtr, hWnd) {} |
| | | public: |
| | | static levelCustomerv3* CreateInstance(void* implPtr, void* hWnd) |
| | | { |
| | | levelCustomerv3* pWin = new levelCustomerv3(implPtr, (HWND)hWnd); |
| | | return pWin; |
| | | } |
| | | int OnPreRetrieve() |
| | | { |
| | | xml x = new xml; |
| | | x.setNativePointer(xml ::CreateInstance()); |
| | | xaserverarg arg = new xaserverarg; |
| | | arg.setNativePointer(arg.CreateInstance()); |
| | | arg.AddArg("pageindex", PIndex.toString()); //第几页 |
| | | arg.AddArg("pagenumber", m_pageNumber.toString()); //每页数量 |
| | | arg.AddArg("QueryTxt",m_QueryTxt ); |
| | | arg.AddArg("sType", m_sType);//没有参数 |
| | | arg.AddArg("sTypeTxt", m_sTypeTxt);//没有参数 |
| | | xml x ; |
| | | |
| | | if(getUrl("/sale/data/"+GetEntityName(1)+"/entity/list",arg.GetString(),x)!=1) |
| | | xaserverarg arg ; |
| | | ; |
| | | arg.AddArg(L"pageindex", xstring(PIndex)); //第几页 |
| | | arg.AddArg(L"pagenumber", xstring(m_pageNumber)); //每页数量 |
| | | arg.AddArg(L"QueryTxt",m_QueryTxt ); |
| | | arg.AddArg(L"sType", m_sType);//没有参数 |
| | | arg.AddArg(L"sTypeTxt", m_sTypeTxt);//没有参数 |
| | | |
| | | if(getUrl(L"/sale/data/"+GetEntityName(1)+L"/entity/list",arg.GetString(),x)!=1) |
| | | { |
| | | alert("出现错误请联系管理员!"); |
| | | alert(L"出现错误请联系管理员!"); |
| | | return 0; |
| | | }else |
| | | { |
| | | msxml::IXMLDOMElement e=x.GetXmlDoc().documentElement; |
| | | if(listwin::dw_pages.ptr_native_ && e.selectSingleNode("@TotalPage")) |
| | | KXMLDOMElement e=x.documentElement(); |
| | | if(listwin::dw_pages.ptr_native_ && e.selectSingleNode(L"@TotalPage")) |
| | | { |
| | | string s=e.selectSingleNode("@TotalPage").text; //总数量 |
| | | xstring s=e.selectSingleNode(L"@TotalPage").text(); //总数量 |
| | | listwin::dw_pages.SetMaxPage(s.toInt()); |
| | | } |
| | | listwin::dw_list.Retrieve(x); |
| | |
| | | return 1; |
| | | } |
| | | |
| | | int OnChangePages(ref TNotifyEvent evt,int p) |
| | | int OnChangePages(TEvent* evt, int p) |
| | | { |
| | | ref PAGENMHDR h = evt.pnmh; |
| | | PAGENMHDR& h = *(PAGENMHDR*)evt->notify.pnmh; |
| | | |
| | | int c = h.cur; |
| | | int hCursor = xutil::SetCursorWait(); |
| | | HCURSOR hCursor = xutil::SetCursorWait(); |
| | | OnRetrieve(); |
| | | PIndex=c; |
| | | xutil::RestoreCursor(hCursor); |
| | | return 1; |
| | | } |
| | | |
| | | int ViewUpdate(int pr,string updateItem,xaserverarg arg) |
| | | int ViewUpdate(int pr,xstring updateItem,xaserverarg arg) |
| | | { |
| | | if(updateItem == "refresh") |
| | | if(updateItem == L"refresh") |
| | | { |
| | | xdwpages zz = this.GetControl("pages"); |
| | | xdwpages zz = GetControl(L"pages"); |
| | | int h = zz.SetCurPage(1); |
| | | OnRetrieve(); |
| | | } |
| | |
| | | } |
| | | |
| | | //树选择 |
| | | int OnTreeSelChanged(ref TNotifyEvent evt,int p) |
| | | int OnTreeSelChanged(TEvent* evt, int p) |
| | | { |
| | | if (changeddlb != 1) |
| | | { |
| | | int wid = tv_1.GetId(); |
| | | int h=xtreeview::GetSelectedItem(wid); |
| | | msxml::IXMLDOMElement e = xtreeview::GetItemData(wid,h); |
| | | |
| | | string t = e.SelectSingleNode("@type").text; |
| | | m_sType=t+""; |
| | | string txt = e.SelectSingleNode("@code").text; |
| | | if (txt == "") |
| | | txt = e.SelectSingleNode("@name").text; |
| | | m_sTypeTxt= txt+""; |
| | | HTREEITEM h=tv_1.GetSelectedItem(); |
| | | KXMLDOMElement e = tv_1.GetItemData(h); |
| | | |
| | | xstring t = e.selectSingleNode(L"@type").text(); |
| | | m_sType=t+L""; |
| | | xstring txt = e.selectSingleNode(L"@code").text(); |
| | | if (txt == L"") |
| | | txt = e.selectSingleNode(L"@name").text(); |
| | | m_sTypeTxt= txt+L""; |
| | | |
| | | PIndex= 1; |
| | | OnRetrieve(); |
| | |
| | | return 1; |
| | | } |
| | | |
| | | int createSubTree(int wid,int h, msxml::IXMLDOMElement ele) |
| | | int createSubTree(HTREEITEM h, KXMLDOMElement ele) |
| | | { |
| | | msxml::IXMLDOMNodeList nlist=ele.SelectNodes("item"); |
| | | KXMLDOMNodeList nlist=ele.selectNodes(L"item"); |
| | | int i; |
| | | int s=nlist.length; |
| | | int s=nlist.length(); |
| | | if (s>0) |
| | | for (i=0; i<s; i++) |
| | | { |
| | | msxml::IXMLDOMElement e=nlist.item(i); |
| | | string name=e.SelectSingleNode("@name").text; |
| | | int hw=xtreeview::InsertChildItem(wid,h,name,trust(e as int),15); |
| | | createSubTree(wid,hw, e); |
| | | KXMLDOMElement* e = new KXMLDOMElement(nlist.item(i)); |
| | | xstring name = e->selectSingleNode(L"@name").text(); |
| | | HTREEITEM hw = tv_1.InsertChildItem(h, name, (LPARAM)e, 15); |
| | | createSubTree(hw, *e); |
| | | } |
| | | return 1; |
| | | } |
| | | |
| | | int OnCreateTree(string sType) |
| | | { |
| | | int wid = tv_1.GetId(); |
| | | while (xtreeview::GetRootItem(wid)>0) |
| | | xtreeview::DeleteItem(wid,xtreeview::GetRootItem(wid)); |
| | | |
| | | xml x = new xml; |
| | | x.setNativePointer(x.CreateInstance()); |
| | | xaserverarg arg = new xaserverarg; |
| | | arg.setNativePointer(arg.CreateInstance()); |
| | | arg.AddArg("sType",sType); |
| | | if(getUrl("/sale/data/"+GetEntityName(1)+"/pref/list/tree",arg.GetString(),x)!=1) |
| | | int OnCreateTree(xstring sType) |
| | | { |
| | | trace(x.GetXmlDoc().text); |
| | | |
| | | while (tv_1.GetRootItem()>0) |
| | | tv_1.DeleteItem(tv_1.GetRootItem()); |
| | | |
| | | xml x ; |
| | | |
| | | xaserverarg arg ; |
| | | ; |
| | | arg.AddArg(L"sType",sType); |
| | | if(getUrl(L"/sale/data/"+GetEntityName(1)+L"/pref/list/tree",arg.GetString(),x)!=1) |
| | | { |
| | | trace(x.text()); |
| | | return -1; |
| | | }else |
| | | { |
| | | msxml::IXMLDOMNodeList nlist=x.GetXmlDoc().SelectNodes("root/item"); |
| | | int len = nlist.length; |
| | | KXMLDOMNodeList nlist=x.selectNodes(L"root/item"); |
| | | int len = nlist.length(); |
| | | if (len >0) |
| | | { |
| | | int i; |
| | | for (i=0;i <len; i++) |
| | | { |
| | | msxml::IXMLDOMElement e = nlist.item(i); |
| | | string name = e.SelectSingleNode("@name").text; |
| | | int h = xtreeview::InsertChildItem(wid,0,name,trust(e as int),15); |
| | | createSubTree(wid,h,e); |
| | | xtreeview::ExpandItem(wid,h); |
| | | KXMLDOMElement* e = new KXMLDOMElement(nlist.item(i)); |
| | | xstring name = e->selectSingleNode(L"@name").text(); |
| | | HTREEITEM hw = tv_1.InsertChildItem(0, name, (LPARAM)e, 15); |
| | | |
| | | createSubTree(hw, *e); |
| | | tv_1.ExpandItem(hw); |
| | | } |
| | | xtreeview::ExpandItem(wid,0); |
| | | tv_1.ExpandItem(0); |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | //xcombobox下拉 |
| | | int OnSelectDdlb(ref TNotifyEvent evt,int p) |
| | | int OnSelectDdlb(TEvent* evt, int p) |
| | | { |
| | | changeddlb=1; |
| | | int wid = ddlb_1.GetId(); |
| | | |
| | | int CB_GETCURSEL = 0x0147; |
| | | int nIndex = win32::SendMessage(wid,CB_GETCURSEL,0,0); |
| | | msxml::IXMLDOMElement e = ddlb_1.GetElement(); |
| | | msxml::IXMLDOMElement e2 = e.selectSingleNode("item["+(nIndex+1).toString()+"]"); |
| | | string text=e2.selectSingleNode("@element").text; |
| | | int nIndex = SendMessageW(ddlb_1.GetHWND(), CB_GETCURSEL, 0, 0); |
| | | KXMLDOMElement e = ddlb_1.GetElement();//GetitemData(wid,nIndex);//ddlb_1.GetElement(); |
| | | KXMLDOMElement e2 = e.selectSingleNode(L"item[" + xstring((nIndex + 1)) + L"]"); |
| | | xstring text = e2.selectSingleNode(L"@element").text(); |
| | | OnCreateTree(text); |
| | | changeddlb=0; |
| | | return 1; |
| | |
| | | } |
| | | } |
| | | |
| | | msxml::IXMLDOMElement e = listwin::dw_list.GetRowElement(row); |
| | | string sguid = e.SelectSingleNode("@guid").text; |
| | | string sName = e.selectSingleNode("Name").text+""; |
| | | KXMLDOMElement e = listwin::dw_list.GetRowElement(row); |
| | | xstring sguid = e.selectSingleNode(L"@guid").text(); |
| | | xstring sName = e.selectSingleNode(L"Name").text()+(xstring)L""; |
| | | int MB_YESNO = 0x00000004; |
| | | int IDYES = 6; |
| | | if(win32::MessageBox(GetHWND(),"确认要删除客户 "+sName+" 的信息吗?","提示",MB_YESNO)!=IDYES) return 1; |
| | | xml x = new xml; |
| | | x.setNativePointer(x.CreateInstance()); |
| | | xaserverarg arg = new xaserverarg; |
| | | arg.setNativePointer(arg.CreateInstance()); |
| | | arg.AddArg("guid",sguid); |
| | | if (url::post("/sale/data/"+GetEntityName(1)+"/entity/delete",arg.GetString(),x) != 1) |
| | | if(MessageBox(GetHWND(),L"确认要删除客户 "+sName+L" 的信息吗?",L"提示",MB_YESNO)!=IDYES) return 1; |
| | | xml x ; |
| | | |
| | | xaserverarg arg ; |
| | | ; |
| | | arg.AddArg(L"guid",sguid); |
| | | if (xurl::post(L"/sale/data/"+GetEntityName(1)+L"/entity/delete",arg.GetString(),x) != 1) |
| | | { |
| | | string error = x.GetXmlDoc().text; |
| | | xstring error = x.text(); |
| | | trace(error); |
| | | } |
| | | else |
| | |
| | | return 1; |
| | | } |
| | | |
| | | int OnRClick(ref TNotifyEvent evt,int p) |
| | | int OnRClick(TEvent* evt, int p) |
| | | { |
| | | return 1; |
| | | } |
| | |
| | | //设置层级弹出窗与保存 |
| | | int OnLevelCustomer() |
| | | { |
| | | xaserverarg arg = new xaserverarg; |
| | | arg.setNativePointer(arg.CreateInstance()); |
| | | OpenWindow("dev:xpage[maint.Level.Customer3.vx]", cast(arg as int)); |
| | | xaserverarg arg ; |
| | | ; |
| | | OpenWindow(L"dev:xpage[maint.Level.Customer3.vx]", arg); |
| | | |
| | | xml ux = new xml; |
| | | ux.setNativePointer(ux.CreateInstance()); |
| | | ux.LoadXml("<Partys/>"); |
| | | msxml::IXMLDOMElement ele = ux.GetXmlDoc().documentElement; |
| | | xml ux ; |
| | | |
| | | if(arg.GetArgString("ok")=="true") |
| | | ux.loadXML(L"<Partys/>"); |
| | | KXMLDOMElement ele = ux.documentElement(); |
| | | |
| | | if(arg.GetArgString(L"ok")==L"true") |
| | | { |
| | | xml x = new xml; |
| | | x.setNativePointer(x.CreateInstance()); |
| | | x.LoadXml(arg.GetArgString("arg")); |
| | | msxml::IXMLDOMElement uele = x.GetXmlDoc().documentElement; |
| | | string ParentPartyID = uele.selectSingleNode("//ParentPartyID").text; |
| | | string ParentPartyName = ""; |
| | | string GroupPartyID = uele.selectSingleNode("//GroupPartyID").text; |
| | | string GroupPartyName = ""; |
| | | xml x ; |
| | | |
| | | if( uele.selectSingleNode("//ParentPartyID/@_displaystring")) |
| | | ParentPartyName = uele.selectSingleNode("//ParentPartyID/@_displaystring").text; |
| | | if(uele.selectSingleNode("//GroupPartyID/@_displaystring")) |
| | | GroupPartyName = uele.selectSingleNode("//GroupPartyID/@_displaystring").text; |
| | | x.loadXML(arg.GetArgString(L"arg")); |
| | | KXMLDOMElement uele = x.documentElement(); |
| | | xstring ParentPartyID = uele.selectSingleNode(L"//ParentPartyID").text(); |
| | | xstring ParentPartyName = L""; |
| | | xstring GroupPartyID = uele.selectSingleNode(L"//GroupPartyID").text(); |
| | | xstring GroupPartyName = L""; |
| | | |
| | | if( uele.selectSingleNode(L"//ParentPartyID/@_displaystring")) |
| | | ParentPartyName = uele.selectSingleNode(L"//ParentPartyID/@_displaystring").text(); |
| | | if(uele.selectSingleNode(L"//GroupPartyID/@_displaystring")) |
| | | GroupPartyName = uele.selectSingleNode(L"//GroupPartyID/@_displaystring").text(); |
| | | |
| | | int row = dw_list.GetNextSelectRow(1); |
| | | while(row > 0) |
| | | { |
| | | dw_list.SetItemString(row,"ParentPartyID",ParentPartyID); |
| | | dw_list.SetItemDisplayString(row,"ParentPartyID",ParentPartyName); |
| | | dw_list.SetItemString(row,"GroupPartyID",GroupPartyID); |
| | | dw_list.SetItemDisplayString(row,"GroupPartyID",GroupPartyName); |
| | | dw_list.SetItemString(row,L"ParentPartyID",ParentPartyID); |
| | | dw_list.SetItemDisplayString(row,L"ParentPartyID",ParentPartyName); |
| | | dw_list.SetItemString(row,L"GroupPartyID",GroupPartyID); |
| | | dw_list.SetItemDisplayString(row,L"GroupPartyID",GroupPartyName); |
| | | ele.appendChild(dw_list.GetRowElement(row).cloneNode(-1)); |
| | | row = dw_list.GetNextSelectRow(row + 1); |
| | | } |
| | | dw_list.RedrawEx(); |
| | | arg.AddArg("content",ele.xml); |
| | | if (getUrl("/sale/data/CustomerV3/level/update",arg.GetString(),x)!=1) |
| | | dw_list.Redraw(); |
| | | arg.AddArg(L"content",ele.xml()); |
| | | if (getUrl(L"/sale/data/CustomerV3/level/update",arg.GetString(),x)!=1) |
| | | { |
| | | trace(x.GetXmlDoc().text); |
| | | alert("设置错误!"); |
| | | trace(x.text()); |
| | | alert(L"设置错误!"); |
| | | return -1; |
| | | }else |
| | | { |
| | | alert("设置成功!"); |
| | | alert(L"设置成功!"); |
| | | } |
| | | } |
| | | return 1; |
| | | } |
| | | |
| | | int PreOnCmdDispatch(string comdid) |
| | | int PreOnCmdDispatch(xstring comdid) |
| | | { |
| | | if(comdid.find("action:LogOff",0)>=0) return OnLogOff(); |
| | | if(comdid.find("action:bill.delete",0)>=0) return OnDeleteRow(); |
| | | //if(comdid=="action:search1") return GridSearch(); |
| | | if(comdid=="action:bill.refresh") |
| | | if(comdid.find(L"action:LogOff",0)>=0) return OnLogOff(); |
| | | if(comdid.find(L"action:bill.delete",0)>=0) return OnDeleteRow(); |
| | | //if(comdid==L"action:search1") return GridSearch(); |
| | | if(comdid==L"action:bill.refresh") |
| | | { |
| | | return OnRetrieve(); |
| | | } |
| | | if(comdid=="action:level.customer") |
| | | if(comdid==L"action:level.customer") |
| | | { |
| | | return OnLevelCustomer(); |
| | | } |
| | |
| | | return 1; |
| | | } |
| | | |
| | | int OnRowChangedEx(ref TNotifyEvent evt,int p) |
| | | int OnRowChangedEx(TEvent* evt, int p) |
| | | { |
| | | alert("999"); |
| | | ref DWNMHDR hdr =cast(evt.pnmh as ref DWNMHDR); |
| | | DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; |
| | | int row = hdr.row; |
| | | msxml::IXMLDOMElement ele = listwin::dw_list.GetRowElement(row); |
| | | string entity = ele.selectSingleNode("CustomerID").text; |
| | | xml x = new xml; |
| | | x.setNativePointer(xml::CreateInstance()); |
| | | xaserverarg arg = new xaserverarg; |
| | | arg.setNativePointer(arg.CreateInstance()); |
| | | arg.AddArg("EntityID",entity); |
| | | if (getUrl("/sale/data/CustomerV3/entity/customeritem",arg.GetString(),x)!=1) |
| | | KXMLDOMElement ele = listwin::dw_list.GetRowElement(row); |
| | | xstring entity = ele.selectSingleNode(L"CustomerID").text(); |
| | | xml x ; |
| | | |
| | | xaserverarg arg ; |
| | | ; |
| | | arg.AddArg(L"EntityID",entity); |
| | | if (getUrl(L"/sale/data/CustomerV3/entity/customeritem",arg.GetString(),x)!=1) |
| | | { |
| | | trace(x.GetXmlDoc().text); |
| | | trace(x.text()); |
| | | return -1; |
| | | }else |
| | | { |
| | |
| | | int PostOnAttachEvent() |
| | | { |
| | | //获得树的选择事件 |
| | | AttachEvent("tv_1", "TVN_SELCHANGED",OnTreeSelChanged); |
| | | AttachEvent("cbx_1","CBN_SELCHANGE",OnSelectDdlb); |
| | | AttachEvent("pages","PAGE_CLICK",OnChangePages); |
| | | AttachEvent("dw_list","DWV_RCLICKED",OnRClick);//鼠标右键 |
| | | //AttachEvent("dw_list","DWV_CLICKED",OnClick);//鼠标右键 |
| | | AttachEvent("dw_list","DWV_ROWFOCUSCHANGED",OnRowChangedEx); |
| | | AttachEvent(L"tv_1", L"TVN_SELCHANGED", (FEvent)&levelCustomerv3::OnTreeSelChanged); |
| | | AttachEvent(L"cbx_1",L"CBN_SELCHANGE", (FEvent)&levelCustomerv3::OnSelectDdlb); |
| | | AttachEvent(L"pages",L"PAGE_CLICK", (FEvent)&levelCustomerv3::OnChangePages); |
| | | AttachEvent(L"dw_list",L"DWV_RCLICKED", (FEvent)&levelCustomerv3::OnRClick);//鼠标右键 |
| | | //AttachEvent(L"dw_list",L"DWV_CLICKED",OnClick);//鼠标右键 |
| | | AttachEvent(L"dw_list",L"DWV_ROWFOCUSCHANGED", (FEvent)&levelCustomerv3::OnRowChangedEx); |
| | | |
| | | return 1; |
| | | } |
| | |
| | | int onload() |
| | | { |
| | | PIndex=1; |
| | | listwin::m_QueryTxt =""; //查询条件 |
| | | m_sType=""; //type |
| | | m_sTypeTxt=""; //选中树的data |
| | | listwin::m_QueryTxt =L""; //查询条件 |
| | | m_sType=L""; //type |
| | | m_sTypeTxt=L""; //选中树的data |
| | | |
| | | listwin::onload(); |
| | | |
| | | tv_1 = this.GetControl("tv_1"); |
| | | ddlb_1 = this.GetControl("cbx_1"); |
| | | tv_1 = GetControl(L"tv_1"); |
| | | ddlb_1 = GetControl(L"cbx_1"); |
| | | |
| | | changeddlb = 0; |
| | | OnCreateTree("Source"); |
| | | dw_goods = GetControl("dw_goods"); |
| | | dw_goods.openUrl("/sale/view/CustomerV3/template/customer/customeritem"); |
| | | OnCreateTree(L"Source"); |
| | | dw_goods = GetControl(L"dw_goods"); |
| | | dw_goods.openUrl(L"/sale/view/CustomerV3/template/customer/customeritem"); |
| | | |
| | | return 1; |
| | | } |
| | |
| | | { |
| | | listwin::onloaded(); |
| | | |
| | | string EntityID; |
| | | xstring EntityID; |
| | | int row = dw_list.GetRow(); |
| | | if(row<0 || row>dw_list.GetRowCount()) return ""; |
| | | msxml::IXMLDOMElement ele = dw_list.GetRowElement(row); |
| | | string id = listwin::m_configDoc.selectSingleNode("//entity/EntityID[1]").text; |
| | | if(row<0 || row>dw_list.GetRowCount()) return (xstring)L""; |
| | | KXMLDOMElement ele = dw_list.GetRowElement(row); |
| | | xstring id = listwin::m_configDoc.selectSingleNode(L"//entity/EntityID[1]").text(); |
| | | if(ele.selectSingleNode(id)) |
| | | EntityID = ele.selectSingleNode(id).text; |
| | | EntityID = ele.selectSingleNode(id).text(); |
| | | |
| | | return 1; |
| | | } |
| | | |
| | | }; |
| | | ] |
| | |
| | | use "xcontrol.vframe.vbusiness.vd" |
| | | use "xbase.vframe.vbusiness.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 MaintLevelCustomerWin : public xframe |
| | | |
| | | #include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" |
| | | #include "viewobject/view.base.hpp" |
| | | |
| | | using xml = KXMLDOMDocument; |
| | | class __declspec(dllexport) MaintLevelCustomerWin : public xframe |
| | | { |
| | | public: |
| | | xdwtable dw_arg; |
| | | xaserverarg arg; |
| | | |
| | | |
| | | public: |
| | | MaintLevelCustomerWin(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} |
| | | public: |
| | | static MaintLevelCustomerWin* CreateInstance(void* implPtr, void* hWnd) |
| | | { |
| | | MaintLevelCustomerWin* pWin = new MaintLevelCustomerWin(implPtr, (HWND)hWnd); |
| | | return pWin; |
| | | } |
| | | //命令发布函数 |
| | | int OnCmdDispatch(string comdid) |
| | | int OnCmdDispatch(xstring comdid) |
| | | { |
| | | if(comdid=="xmOk") |
| | | if(comdid==L"xmOk") |
| | | { |
| | | xml x = new xml; |
| | | x.setNativePointer(x.CreateInstance()); |
| | | xml x ; |
| | | |
| | | dw_arg.AcceptText(); |
| | | dw_arg.DwUpdateAllTo(x.GetXmlDoc()); |
| | | dw_arg.DwUpdateAllTo(x); |
| | | if(arg) |
| | | { |
| | | arg.AddArg("arg",x.GetXml()); |
| | | arg.AddArg("ok","true"); |
| | | arg.AddArg(L"arg",x.xml()); |
| | | arg.AddArg(L"ok",L"true"); |
| | | } |
| | | CloseWindow(); |
| | | |
| | | return 1; |
| | | } |
| | | else if(comdid=="xmCancel") |
| | | else if(comdid==L"xmCancel") |
| | | { |
| | | if(arg)arg.AddArg("ok","false"); |
| | | if(arg)arg.AddArg(L"ok",L"false"); |
| | | CloseWindow(); |
| | | 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)&MaintLevelCustomerWin::OnXCommand); |
| | | return 1; |
| | | } |
| | | |
| | | int onload() |
| | | { |
| | | dw_arg = GetControl("dw_arg"); |
| | | SetArg(); |
| | | dw_arg = GetControl(L"dw_arg"); |
| | | |
| | | if(GetParam())arg = GetParam(); |
| | | if(GetWinParam())arg = GetArg(); |
| | | |
| | | string dw = "/sale/view/CustomerV3/template/customer/level.maint"; |
| | | xstring dw = L"/sale/view/CustomerV3/template/customer/level.maint"; |
| | | dw_arg.openUrl(dw); |
| | | |
| | | dw_arg.SetColHeaderHeight(0); |
| | |
| | | } |
| | | |
| | | }; |
| | | ] |
| | |
| | | use "xcontrol.vframe.vbusiness.vd" |
| | | use "xbase.vframe.vbusiness.vd" |
| | | use "base.view.vd" |
| | | use "datastore_bind.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 AssignAdjustWin : public xframe |
| | | #include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" |
| | | #include "viewobject/view.base.hpp" |
| | | |
| | | using xml = KXMLDOMDocument; |
| | | class __declspec(dllexport) AssignAdjustWin : public xframe |
| | | { |
| | | public: |
| | | xdwgrid dw_list; |
| | | xnode m_agentNode; //Agent Condition |
| | | msxml::IXMLDOMElement rptEle; |
| | | string argStr; |
| | | string searchStr; |
| | | KXMLDOMElement rptEle; |
| | | xstring argStr; |
| | | xstring searchStr; |
| | | int hWndRetrieveTip; |
| | | bool dataretrieveing; |
| | | |
| | | public: |
| | | AssignAdjustWin(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} |
| | | public: |
| | | static AssignAdjustWin* CreateInstance(void* implPtr, void* hWnd) |
| | | { |
| | | AssignAdjustWin* pWin = new AssignAdjustWin(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 OnSave() |
| | | { |
| | | xml x = new xml; |
| | | x.setNativePointer(xml::CreateInstance()); |
| | | xml x ; |
| | | |
| | | dw_list.AcceptText(); |
| | | dw_list.DwUpdateAllToEx(x.GetXmlDoc()); |
| | | xaserverarg arg = new xaserverarg; |
| | | arg.setNativePointer(xaserverarg::CreateInstance()); |
| | | dw_list.DwUpdateAllToEx(x); |
| | | xaserverarg arg ; |
| | | |
| | | xml x0 = ViewObject::MakeXml(); |
| | | x0.LoadXml("<data/>"); |
| | | msxml::IXMLDOMNodeList t = x.GetXmlDoc().selectNodes("data/node()[(@update.new='1') or (@update.modify='1') or (@update.delete='1') ]"); |
| | | msxml::IXMLDOMElement e1= x0.GetXmlDoc().documentElement; |
| | | |
| | | string val0 = x.GetXml(); |
| | | for(int i=0; i < t.length; i++) |
| | | xml x0; |
| | | x0.loadXML(L"<data/>"); |
| | | KXMLDOMNodeList t = x.selectNodes(L"data/node()[(@update.new='1') or (@update.modify='1') or (@update.delete='1') ]"); |
| | | KXMLDOMElement e1= x0.documentElement(); |
| | | |
| | | xstring val0 = x.xml(); |
| | | for(int i=0; i < t.length(); i++) |
| | | { |
| | | msxml::IXMLDOMElement e= t.item(i); |
| | | KXMLDOMElement e= t.item(i); |
| | | e1.appendChild(e); |
| | | } |
| | | |
| | | x = ViewObject::RetrieveData(rptEle.getAttribute("update"),"content",x0.GetXml()); |
| | | string str = x.GetXmlDoc().documentElement.getAttribute("text"); |
| | | if(str == "true") |
| | | x = ViewObject::RetrieveData(rptEle.getAttribute(L"update"),L"content",x0.xml()); |
| | | xstring str = x.documentElement().getAttribute(L"text"); |
| | | if(str == L"true") |
| | | { |
| | | dw_list.ResetUpdateStatus(); |
| | | alert("保存成功!"); |
| | | alert(L"保存成功!"); |
| | | }else |
| | | { |
| | | alert("保存失败!"); |
| | | alert(L"保存失败!"); |
| | | } |
| | | return 1; |
| | | } |
| | | |
| | | //焦点激活处理函数 |
| | | int OnSetFocus(ref TEvent evt,int param) |
| | | int OnSetFocus(TEvent* evt, LPARAM param) |
| | | { |
| | | //重置工具条 |
| | | SetAgent(); |
| | |
| | | { |
| | | dw_list.AcceptText(); |
| | | int row = dw_list.GetNextSelectRow(1); |
| | | string SalespersonID = dw_list.GetItemString(row, "SalespersonID"); |
| | | string Sales = dw_list.GetItemDisplayString(row, "SalespersonID"); |
| | | xstring SalespersonID = dw_list.GetItemString(row, L"SalespersonID"); |
| | | xstring Sales = dw_list.GetItemDisplayString(row, L"SalespersonID"); |
| | | while(row > 0 && row <= dw_list.GetRowCount()) |
| | | { |
| | | row = dw_list.GetNextSelectRow(row + 1); |
| | | dw_list.SetItemString(row, "SalespersonID", SalespersonID); |
| | | dw_list.SetItemDisplayString(row, "SalespersonID", Sales); |
| | | dw_list.SetItemString(row, L"SalespersonID", SalespersonID); |
| | | dw_list.SetItemDisplayString(row, L"SalespersonID", Sales); |
| | | |
| | | } |
| | | dw_list.Redraw(); |
| | |
| | | |
| | | int OnSearch() |
| | | { |
| | | xaserverarg arg=new xaserverarg; |
| | | arg.setNativePointer(arg.CreateInstance()); |
| | | arg.AddArg("text", searchStr); |
| | | OpenWindow("dev:xpage[search.dialog.vx]", cast(arg as int)); |
| | | string str = arg.GetArgString("text"); |
| | | xaserverarg arg; |
| | | ; |
| | | arg.AddArg(L"text", searchStr); |
| | | OpenWindow(L"dev:xpage[search.dialog.vx]", arg); |
| | | xstring str = arg.GetArgString(L"text"); |
| | | if(str != searchStr) |
| | | { |
| | | searchStr = str; |
| | | dw_list.Filter("*",searchStr); |
| | | dw_list.Filter(L"*",searchStr); |
| | | return 1; |
| | | } |
| | | return 1; |
| | | } |
| | | |
| | | //命令发布函数 |
| | | int OnCmdDispatch(string comdid) |
| | | int OnCmdDispatch(xstring comdid) |
| | | { |
| | | if(comdid=="xmSave")return OnSave(); |
| | | if(comdid=="xmMultiDeal")return OnMultiDeal(); |
| | | if(comdid=="xmSearch") return OnSearch(); |
| | | if(comdid=="xmAnalysis") |
| | | if(comdid==L"xmSave")return OnSave(); |
| | | if(comdid==L"xmMultiDeal")return OnMultiDeal(); |
| | | if(comdid==L"xmSearch") return OnSearch(); |
| | | if(comdid==L"xmAnalysis") |
| | | { |
| | | //hCursor = xutil::SetCursorWait(); |
| | | string str = dw_list.DataAnalysis(""); |
| | | xaserverarg arg=new xaserverarg; |
| | | arg.setNativePointer(arg.CreateInstance()); |
| | | arg.AddArg("html", str); |
| | | int obj = cast(dw_list as int); |
| | | arg.AddArg("obj",obj.toString()); |
| | | OpenWindow("dev:xpage[data.vanalysis.vx]", cast(arg as int)); |
| | | xstring str = dw_list.DataAnalysis(L""); |
| | | xaserverarg arg; |
| | | ; |
| | | arg.AddArg(L"html", str); |
| | | |
| | | OpenWindow(L"dev:xpage[data.vanalysis.vx]", arg); |
| | | //xutil::RestoreCursor(hCursor); |
| | | return 1; |
| | | } |
| | | if(comdid=="xmQuery") |
| | | if(comdid==L"xmQuery") |
| | | { |
| | | if(rptEle) |
| | | { |
| | | string argUrl = rptEle.getAttribute("arg"); |
| | | if(argUrl !="") |
| | | xstring argUrl = rptEle.getAttribute(L"arg"); |
| | | if(argUrl !=L"") |
| | | { |
| | | xaserverarg ar = new xaserverarg; |
| | | ar.setNativePointer(ar.CreateInstance()); |
| | | ar.AddArg("argurl",argUrl); |
| | | if(argStr !="") |
| | | ar.AddArg("arg",argStr); |
| | | OpenWindow("dev:xpage[view.total.arg.vx]",cast(ar as int)); |
| | | string arstr = ar.GetArgString("arg"); |
| | | if(arstr != "" && ar.GetArgString("action")=="ok") |
| | | xaserverarg ar ; |
| | | |
| | | ar.AddArg(L"argurl",argUrl); |
| | | if(argStr !=L"") |
| | | ar.AddArg(L"arg",argStr); |
| | | OpenWindow(L"dev:xpage[view.total.arg.vx]",ar); |
| | | xstring arstr = ar.GetArgString(L"arg"); |
| | | if(arstr != L"" && ar.GetArgString(L"action")==L"ok") |
| | | { |
| | | argStr = arstr; |
| | | OnRetrieve(rptEle.getAttribute("data"),argStr); |
| | | OnRetrieve(rptEle.getAttribute(L"data"),argStr); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | argStr=""; |
| | | OnRetrieve(rptEle.getAttribute("data"),argStr); |
| | | argStr=L""; |
| | | OnRetrieve(rptEle.getAttribute(L"data"),argStr); |
| | | } |
| | | } |
| | | 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)&AssignAdjustWin::OnXCommand); |
| | | //获取焦点事件,用于重置工具条 |
| | | AttachEvent("WM_SETFOCUS",OnSetFocus); |
| | | AttachEvent(L"WM_SETFOCUS", (FEvent)&AssignAdjustWin::OnSetFocus); |
| | | |
| | | AttachEvent("cb_report","CBN_SELCHANGE",OnCombboChanged); |
| | | AttachEvent(L"cb_report",L"CBN_SELCHANGE", (FEvent)&AssignAdjustWin::OnCombboChanged); |
| | | return 1; |
| | | } |
| | | |
| | | int OnCombboChanged(ref TCommandEvent evt,int lParam) |
| | | int OnCombboChanged(TEvent* evt, LPARAM lParam) |
| | | { |
| | | int h = xcombobox::GetCurSel(evt.hCtrl); |
| | | int h = xcombobox::GetCurSel(evt->command.hCtrl); |
| | | if(h > -1) ShowList(h); |
| | | return 1; |
| | | } |
| | | |
| | | int SwitchReport(msxml::IXMLDOMElement e) |
| | | int SwitchReport(KXMLDOMElement e) |
| | | { |
| | | rptEle = e; |
| | | string dwname = e.getAttribute("template"); |
| | | xstring dwname = e.getAttribute(L"template"); |
| | | dw_list.openUrl(dwname); |
| | | dw_list.Redraw(); |
| | | return 1; |
| | |
| | | |
| | | int ShowList(int h) |
| | | { |
| | | msxml::IXMLDOMElement xframeElement = GetElement(); |
| | | msxml::IXMLDOMElement e = xframeElement.selectSingleNode("//xcombobox[@name='cb_report']/item["+(h+1).toString()+"]"); |
| | | KXMLDOMElement xframeElement = GetElement(); |
| | | KXMLDOMElement e = xframeElement.selectSingleNode(L"//xcombobox[@name='cb_report']/item["+(h+1).toString()+L"]"); |
| | | if(e) SwitchReport(e); |
| | | win32::PostMessage(GetHWND(),0x401,"xmQuery",0); |
| | | PostMessage(GetHWND(),0x401,(LPARAM)L"xmQuery",0); |
| | | return 1; |
| | | } |
| | | |
| | | int ShowRetrieveingTip() |
| | | { |
| | | dataretrieveing = true; |
| | | xwin pwin = OpenWindow("dev:xpage[TestRetrieveing.vx]",0); |
| | | xwin pwin = OpenWindow(L"dev:xpage[TestRetrieveing.vx]",0); |
| | | hWndRetrieveTip =pwin.GetHWND(); |
| | | return 1; |
| | | } |
| | | int CloseRetrieveTip() |
| | | { |
| | | dataretrieveing = false; |
| | | win32::SendMessage(hWndRetrieveTip,0x401,"RetrieveFinished",0); |
| | | SendMessage(hWndRetrieveTip,0x401, (LPARAM)L"RetrieveFinished",0); |
| | | hWndRetrieveTip = 0; |
| | | |
| | | return 1; |
| | | } |
| | | |
| | | int OnRetrieve(string dataurl, string argstr) |
| | | int OnRetrieve(xstring dataurl, xstring argstr) |
| | | { |
| | | if(!rptEle) return 0; |
| | | dw_list.Reset(); |
| | | |
| | | xml x = new xml; |
| | | x.setNativePointer(xml::CreateInstance()); |
| | | xaserverarg arg = new xaserverarg; |
| | | arg.setNativePointer(arg.CreateInstance()); |
| | | arg.AddArg("arg",argstr); |
| | | if (url::get(dataurl,arg.GetString(),x)!=1) |
| | | xml x ; |
| | | |
| | | xaserverarg arg ; |
| | | ; |
| | | arg.AddArg(L"arg",argstr); |
| | | if (xurl::get(dataurl,arg.GetString(),x)!=1) |
| | | { |
| | | |
| | | trace("错误信息="+x.GetXmlDoc().text); |
| | | trace(L"错误信息=L"+(xstring)x.text()); |
| | | dw_list.Redraw(); |
| | | return -1; |
| | | }else |
| | |
| | | int onload() |
| | | { |
| | | rptEle = 0; |
| | | dw_list = GetControl("dw_list"); |
| | | dw_list = GetControl(L"dw_list"); |
| | | OnAttachEvent(); |
| | | |
| | | hWndRetrieveTip = 0; |
| | |
| | | return 1; |
| | | } |
| | | }; |
| | | ] |