| | |
| | | use "frame.vd" |
| | | use "publiccode.vd" |
| | | use "xcontrol.vd" |
| | | use "xtreeview.vd" |
| | | #include <wobject/xstring.hpp> |
| | | #include <xcontrol/xtreeview.hpp> |
| | | #include <xcontrol/xdwgrid.hpp> |
| | | #include <wobject/xdouble.hpp> |
| | | #include <xcontrol/xlayersheet.hpp> |
| | | |
| | | class SimpleMenuConfig : public frame |
| | | #include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" |
| | | #include "viewobject/view.base.hpp" |
| | | |
| | | using xml = KXMLDOMDocument; |
| | | |
| | | class __declspec(dllexport) SimpleMenuConfig : public xframe |
| | | { |
| | | public: |
| | | xdwgrid dw_list; |
| | | xtreeview tv_gs; |
| | | |
| | | xnode m_agentNode; |
| | | public: |
| | | SimpleMenuConfig(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} |
| | | public: |
| | | static SimpleMenuConfig* CreateInstance(void* implPtr, void* hWnd) |
| | | { |
| | | SimpleMenuConfig* pWin = new SimpleMenuConfig(implPtr, (HWND)hWnd); |
| | | return pWin; |
| | | } |
| | | int AddRow() |
| | | { |
| | | dw_list.InsertRow(0); |
| | |
| | | int i=0; |
| | | for(i=1; i<=dw_list.GetRowCount();i++) |
| | | { |
| | | string seq = dw_list.GetItemString(i, "SeqNo"); |
| | | if(seq != i.toString()) |
| | | dw_list.SetItemString(i, "SeqNo", i.toString()); |
| | | xstring seq = dw_list.GetItemString(i, L"SeqNo"); |
| | | if(seq != xstring(i)) |
| | | dw_list.SetItemString(i, L"SeqNo", xstring(i)); |
| | | } |
| | | |
| | | xml x=new xml; |
| | | x.setNativePointer(xml::CreateInstance()); |
| | | xaserverarg arg=new xaserverarg; |
| | | arg.setNativePointer(arg.CreateInstance()); |
| | | dw_list.DwUpdateAllToEx(x.GetXmlDoc()); |
| | | arg.AddArg("content", x.GetXml()); |
| | | if(getUrl("/workflow/action/ItemPictureMenu.dbmap/bill.update", arg.GetString(), x) != 1) |
| | | alert("保存失败!"); |
| | | xml x; |
| | | |
| | | xaserverarg arg; |
| | | |
| | | dw_list.DwUpdateAllToEx(x); |
| | | arg.AddArg(L"content", x.xml()); |
| | | if(getUrl(L"/workflow/action/ItemPictureMenu.dbmap/bill.update", arg.GetString(), x) != 1) |
| | | alert(L"保存失败!"); |
| | | else |
| | | { |
| | | string str = x.GetXml(); |
| | | xstring str = x.xml(); |
| | | //alert(str); |
| | | if(str.find("失败", 0) > 0) |
| | | alert("保存失败!"); |
| | | if(str.find(L"失败", 0) > 0) |
| | | alert(L"保存失败!"); |
| | | else |
| | | { |
| | | //alert("保存成功!"); |
| | | //alert(L"保存成功!"); |
| | | dw_list.ResetUpdateStatus(); |
| | | dw_list.DwUpdateAllToEx(x.GetXmlDoc()); |
| | | int hItem = xtreeview::GetSelectedItem(tv_gs.GetId()); |
| | | if(hItem > 0) |
| | | dw_list.DwUpdateAllToEx(x); |
| | | HTREEITEM hItem =tv_gs.GetSelectedItem(); |
| | | if(hItem) |
| | | { |
| | | msxml::IXMLDOMElement e = x.GetXmlDoc().documentElement; |
| | | int p = trust(e as int); |
| | | xtreeview::SetItemData(tv_gs.GetId(), hItem, p); |
| | | KXMLDOMElement e = x.documentElement(); |
| | | tv_gs.SetItemData(hItem, e); |
| | | |
| | | while(xtreeview::GetChildItem(tv_gs.GetId(), hItem) > 0) |
| | | xtreeview::DeleteItem(tv_gs.GetId(), xtreeview::GetChildItem(tv_gs.GetId(), hItem)); |
| | | while(tv_gs.GetChildItem( hItem)) |
| | | tv_gs.DeleteItem(tv_gs.GetChildItem( hItem)); |
| | | |
| | | msxml::IXMLDOMNodeList li = x.GetXmlDoc().selectNodes("item/item"); |
| | | int s = li.length; |
| | | KXMLDOMNodeList li = x.selectNodes(L"item/item"); |
| | | int s = li.length(); |
| | | for(i=0;i<s;i++) |
| | | { |
| | | msxml::IXMLDOMElement ele = li.item(i); |
| | | int pa = trust(ele as int); |
| | | string name = ele.selectSingleNode("Name").text; |
| | | int cItem = xtreeview::InsertChildItem(tv_gs.GetId(), hItem, name, pa, 15); |
| | | if(ele.selectSingleNode("item")) |
| | | xtreeview::SetItemChild1(tv_gs.GetId(), cItem, 1); |
| | | KXMLDOMElement ele = li.item(i); |
| | | xstring name = ele.selectSingleNode(L"Name").text(); |
| | | HTREEITEM cItem =tv_gs.InsertChildItem( hItem, name, ele, 15); |
| | | if(ele.selectSingleNode(L"item")) |
| | | tv_gs.SetItemChild1(cItem, 1); |
| | | } |
| | | } |
| | | |
| | |
| | | return 1; |
| | | } |
| | | |
| | | int OnCmdDispatch(string comdid) |
| | | int OnCmdDispatch(xstring comdid) |
| | | { |
| | | int hCursor = xutil::SetCursorWait(); |
| | | if(comdid == "AddRow") AddRow(); |
| | | else if(comdid == "InsertRow") InsertRow(); |
| | | else if(comdid == "DeleteRow") DeleteRow(); |
| | | else if(comdid == "Save") Save(); |
| | | else if(comdid == "UpRow") UpRow(); |
| | | else if(comdid == "DownRow") DownRow(); |
| | | HCURSOR hCursor = xutil::SetCursorWait(); |
| | | if(comdid == L"AddRow") AddRow(); |
| | | else if(comdid == L"InsertRow") InsertRow(); |
| | | else if(comdid == L"DeleteRow") DeleteRow(); |
| | | else if(comdid == L"Save") Save(); |
| | | else if(comdid == L"UpRow") UpRow(); |
| | | else if(comdid == L"DownRow") DownRow(); |
| | | xutil::RestoreCursor(hCursor); |
| | | return 0; |
| | | } |
| | | |
| | | int SetAgent() |
| | | { |
| | | string xfNodeAgentArea = "agentarea"; |
| | | xstring xfNodeAgentArea = L"agentarea"; |
| | | xnode anode = GetAgentNode(xfNodeAgentArea); |
| | | msxml::IXMLDOMElement xframeElement = GetElement(); |
| | | msxml::IXMLDOMElement agent = xframeElement.selectSingleNode("agent/"+xfNodeAgentArea+"/*"); |
| | | if(agent) |
| | | if (m_agentNode) |
| | | { |
| | | string s = agent.xml; |
| | | SetAgentNodeContent(anode,s); |
| | | SetAgentNode(anode, m_agentNode); |
| | | } |
| | | else |
| | | { |
| | | KXMLDOMElement xframeElement = GetElement(); |
| | | KXMLDOMElement agent = xframeElement.selectSingleNode(L"agent/" + xfNodeAgentArea + L"[1]/*"); |
| | | if (agent) |
| | | { |
| | | xstring s = agent.xml(); |
| | | m_agentNode = SetAgentNode(anode, s); |
| | | } |
| | | } |
| | | return 1; |
| | | } |
| | | |
| | | int OnSetFocus(ref TEvent evt,int p) |
| | | int OnSetFocus(TEvent* evt, LPARAM p) |
| | | { |
| | | SetAgent() ; |
| | | return 1; |
| | | } |
| | | |
| | | int OnXCommand(ref TXCommandEvent evt,int p) |
| | | int OnXCommand(TEvent* evt, LPARAM param) |
| | | { |
| | | return OnCmdDispatch(evt.pStrID); |
| | | } |
| | | return OnCmdDispatch(evt->xcommand.pStrID); |
| | | } |
| | | |
| | | int OnTreeSelChanged(ref TNotifyEvent evt,int p) |
| | | int OnTreeSelChanged(TEvent* evt, LPARAM p) |
| | | { |
| | | ref NMTREEVIEW nmtv = cast(evt.pnmh as NMTREEVIEW); |
| | | int hItem = nmtv.itemNew.hItem; |
| | | msxml::IXMLDOMElement e = trust(xtreeview::GetItemData(tv_gs.GetId(), hItem) as msxml::IXMLDOMElement); |
| | | //trace("%s", e.xml); |
| | | //string id = e.selectSingleNode("MenuID").text; |
| | | |
| | | NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh; |
| | | HTREEITEM hItem = nmtv.itemNew.hItem; |
| | | KXMLDOMElement e = tv_gs.GetItemData(hItem); |
| | | //trace(L"%s", e.xml); |
| | | //xstring id = e.selectSingleNode(L"MenuID").text(); |
| | | dw_list.AcceptText(); |
| | | dw_list.Retrieve(e); |
| | | dw_list.Redraw(); |
| | | return 1; |
| | | } |
| | | |
| | | int OnTreeMoveNode(ref TNotifyEvent evt,int p) |
| | | int OnTreeMoveNode(TEvent* evt, LPARAM p) |
| | | { |
| | | ref TVNNMHDR nmtv = trust(evt.pnmh as ref TVNNMHDR); |
| | | int xfrom = nmtv.FromItem; |
| | | int xto = nmtv.ToItem; |
| | | TVNNMHDR& nmtv = *(TVNNMHDR*)evt->notify.pnmh; |
| | | HTREEITEM xfrom = nmtv.FromItem; |
| | | HTREEITEM xto = nmtv.ToItem; |
| | | |
| | | int ret = xwin::MessageBox(this.GetHWND(), "确定移动节点!","提示:",1); |
| | | int ret = MessageBox(GetHWND(), L"确定移动节点!",L"提示:",1); |
| | | //trace(ret); |
| | | if(ret == 2) |
| | | { |
| | | xtreeview::DeleteItem(tv_gs.GetId(), xto); |
| | | tv_gs.DeleteItem(xto); |
| | | return -1; |
| | | } |
| | | KXMLDOMElement fid = tv_gs.GetItemData(xto); |
| | | HTREEITEM xpto =tv_gs.GetParentItem(xto); |
| | | KXMLDOMElement tid = tv_gs.GetItemData(xto); |
| | | //trace(L"%s-------------------------%s",fid.xml,tid.xml); |
| | | xml x ; |
| | | |
| | | msxml::IXMLDOMElement fid = trust(xtreeview::GetItemData(tv_gs.GetId(), xfrom) as msxml::IXMLDOMElement); |
| | | int xpto = xtreeview::GetParentItem(tv_gs.GetId(), xto); |
| | | msxml::IXMLDOMElement tid = trust(xtreeview::GetItemData(tv_gs.GetId(), xpto) as msxml::IXMLDOMElement); |
| | | //trace("%s-------------------------%s",fid.xml,tid.xml); |
| | | xml x = new xml; |
| | | x.setNativePointer(xml::CreateInstance()); |
| | | xaserverarg arg=new xaserverarg; |
| | | arg.setNativePointer(arg.CreateInstance()); |
| | | xaserverarg arg; |
| | | |
| | | |
| | | string id1 = fid.selectSingleNode("@guid").text; |
| | | string id2 = tid.selectSingleNode("@guid").text; |
| | | //trace("%s-------------------------%s",id1,id2); |
| | | string str = "update ItemPictureMenu set parentid='"+id2+"' where menuid='"+id1+"' "; |
| | | str += " select 1 for xml path('root')"; |
| | | xstring id1 = fid.selectSingleNode(L"@guid").text(); |
| | | xstring id2 = tid.selectSingleNode(L"@guid").text(); |
| | | //trace(L"%s-------------------------%s",id1,id2); |
| | | xstring str = L"update ItemPictureMenu set parentid='"+id2+L"' where menuid='"+id1+L"' "; |
| | | str += L" select 1 for xml path('root')L"; |
| | | |
| | | arg.AddArg("sql", str); |
| | | arg.AddArg(L"sql", str); |
| | | if(getSql(arg.GetString(),x)!=1) |
| | | { |
| | | trace("error:"+x.GetXml()); |
| | | alert("移动节点出错!"); |
| | | xtreeview::DeleteItem(tv_gs.GetId(), xto); |
| | | trace(L"error:"+(xstring)x.xml()); |
| | | alert(L"移动节点出错!"); |
| | | tv_gs.DeleteItem(xto); |
| | | return 0; |
| | | } |
| | | //trace("================"); |
| | | //trace(L"================L"); |
| | | // |
| | | int xpfrom = xtreeview::GetParentItem(tv_gs.GetId(), xfrom); |
| | | trace("%d", xpfrom); |
| | | msxml::IXMLDOMElement fe = trust(xtreeview::GetItemData(tv_gs.GetId(), xpfrom) as msxml::IXMLDOMElement); |
| | | //trace("%s-------------------------%s",fe.xml,tid.xml); |
| | | msxml::IXMLDOMElement fe1 = fe.selectSingleNode("item[@guid='"+id1+"']"); |
| | | HTREEITEM xpfrom =tv_gs.GetParentItem(xfrom); |
| | | //trace(L"%d", xpfrom); |
| | | KXMLDOMElement fe = tv_gs.GetItemData(xpfrom); |
| | | //trace(L"%s-------------------------%s",fe.xml,tid.xml); |
| | | KXMLDOMElement fe1 = fe.selectSingleNode(L"item[@guid='"+id1+L"']"); |
| | | fe.removeChild(fe1); |
| | | tid.appendChild(fid); |
| | | |
| | | xtreeview::DeleteItem(tv_gs.GetId(), xfrom); |
| | | tv_gs.DeleteItem(xfrom); |
| | | return 1; |
| | | } |
| | | |
| | | int OnInitial() |
| | | { |
| | | int rItem = xtreeview::GetRootItem(tv_gs.GetId()); |
| | | xtreeview::ExpandItemEx(tv_gs.GetId(), rItem); |
| | | xtreeview::ItemFocus(tv_gs.GetId(), rItem); |
| | | HTREEITEM rItem =tv_gs.GetRootItem(); |
| | | tv_gs.ExpandItemEx( rItem); |
| | | tv_gs.ItemFocus(rItem); |
| | | return 1; |
| | | } |
| | | |
| | | int OnAttachEvent() |
| | | { |
| | | AttachEvent("WM_XCOMMAND",OnXCommand); |
| | | AttachEvent("WM_SETFOCUS",OnSetFocus); |
| | | AttachEvent("tv_gs","TVN_SELCHANGED",OnTreeSelChanged); |
| | | AttachEvent("tv_gs", "TVN_ENDDRAG",OnTreeMoveNode); |
| | | AttachEvent(L"WM_XCOMMAND", (FEvent)&SimpleMenuConfig::OnXCommand); |
| | | AttachEvent(L"WM_SETFOCUS", (FEvent)&SimpleMenuConfig::OnSetFocus); |
| | | AttachEvent(L"tv_gs",L"TVN_SELCHANGED", (FEvent)&SimpleMenuConfig::OnTreeSelChanged); |
| | | AttachEvent(L"tv_gs", L"TVN_ENDDRAG", (FEvent)&SimpleMenuConfig::OnTreeMoveNode); |
| | | return 1; |
| | | } |
| | | |
| | | int onload() |
| | | { |
| | | dw_list = GetControl("dw_list"); |
| | | dw_list.openUrl("/sale/view/SimpleProduct/template/Simple/Menu"); |
| | | dw_list.SetColumnState("SeqNo", false); |
| | | dw_list = GetControl(L"dw_list"); |
| | | dw_list.openUrl(L"/sale/view/SimpleProduct/template/Simple/Menu"); |
| | | dw_list.SetColumnState(L"SeqNo", false); |
| | | |
| | | tv_gs = GetControl("tv_gs"); |
| | | tv_gs = GetControl(L"tv_gs"); |
| | | |
| | | SetAgent(); |
| | | OnAttachEvent(); |