xj qian
2024-06-28 24979676af0d645c28fc05157ed61fc3fafbee3b
update message proc and edit proc
已修改10个文件
936 ■■■■ 文件已修改
jrj/project/business/HR/AdministrativeDepartment.cpp 294 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/HR/AdministrativeDepartmentFolder.cpp 164 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/HR/BlankExcelTemplate.cpp 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/HR/ManpowerFile.cpp 242 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/HR/ManpowerFileWindow.cpp 127 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/SO/Product.Select.SO.cpp 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/SO/delivery.base.maint.so.cpp 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/SO/maint.Document.SO3.v3.cpp 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/SO/paymentterm.base.maint.so.cpp 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/quote.enquiry.cpp 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/HR/AdministrativeDepartment.cpp
@@ -1,102 +1,115 @@
use "xcontrol.vframe.vbusiness.vd"//hxsoft.com -> Developer -> wlib -> vframe
use "xbase.vframe.vbusiness.vd"//hxsoft.com -> Developer -> wlib -> vframe
use "saleorder.view.vd"
unit trade
[
    class ViewAdministrativeDepartmentList : public listwin
#include <wobject/xstring.hpp>
#include <xcontrol/xtreeview.hpp>
#include <xcontrol/xdwgrid.hpp>
#include <xcontrol/xcell.hpp>
#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
#include "viewobject/view.base.hpp"
using xml = KXMLDOMDocument;
    class  __declspec(dllexport) ViewAdministrativeDepartmentList : public listwin
    {
    public:
        xdwgrid        dw_list;
        xtreeview    tv_folder;//hxsoft.com -> Developer -> wface -> vcontrol
        string rows;
        string urlTree;
        string myDataUrl;
        xstring rows;
        xstring urlTree;
        xstring myDataUrl;
        int changeddlb;
        xnode    m_agentNode;    //Agent Condition
    public:
        ViewAdministrativeDepartmentList(void* implPtr, HWND hWnd) :listwin(implPtr, hWnd) {}
    public:
        static ViewAdministrativeDepartmentList* CreateInstance(void* implPtr, void* hWnd)
        {
            ViewAdministrativeDepartmentList* pWin = new ViewAdministrativeDepartmentList(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 ExpandCatChildFolder(int hItem, msxml::IXMLDOMElement ele, int image)
        int ExpandCatChildFolder(HTREEITEM hItem, KXMLDOMElement ele, int image)
        {
            /*在具体应用时可以用DOMDocument的Load方法来装载XML文档
            用IXMLDOMNode 的selectNodes(查询的结果有多个,得到存放搜索结果的链表)
            或selectSingleNode(查询的结果有一个,在有多个的情况下返回找到的第一个节点)方法进行查询,
            用createNode和appendChild方法来创建节点和追加节点,
            用IXMLDOMElement的setAttribute和getAttribute方法来设置和获得节点的属性。*/
            msxml::IXMLDOMNodeList nlist = ele.SelectNodes("item");
            int len = nlist.length;
            KXMLDOMNodeList nlist = ele.selectNodes(L"item");
            int len = nlist.length();
            if (len > 0)
                tv_folder.SetItemChild(hItem, 1);
            for (int i = 0; i < len; i++)
            {
                msxml::IXMLDOMElement e = nlist.item(i);
                string name = e.getAttribute("name");
                int h = tv_folder.InsertChildItem(hItem, name, trust(e as int), image);//trust(e as int)将e放入树结构里面的data属性中
                KXMLDOMElement& e = *new KXMLDOMElement(nlist.item(i));
                xstring name = e.getAttribute(L"name");
                HTREEITEM h = tv_folder.InsertChildItem(hItem, name, (LPARAM)&e, image);//trust(e as int)将e放入树结构里面的data属性中
                ExpandCatChildFolder(h, e, 35);
            }
            return 1;
        }
        //展开文件夹明细
        int ExpandFolderItem(int hItem, string parentid)
        int ExpandFolderItem(HTREEITEM hItem, xstring parentid)
        {
            xml x = ViewObject::RetrieveData(urlTree, "status", "有效", "parentid", parentid);//获取后台数据
            xml x = ViewObject::RetrieveData(urlTree, L"status", L"有效", L"parentid", parentid);//获取后台数据
            if (!x) {
                return 0;
            }
            msxml::IXMLDOMNodeList nlist = x.GetXmlDoc().SelectNodes("data/Item");
            int len = nlist.length;
            KXMLDOMNodeList nlist = x.selectNodes(L"data/Item");
            int len = nlist.length();
            for (int i = 0; i < len; i++)
            {
                msxml::IXMLDOMElement e = nlist.item(i);
                string name = e.selectSingleNode("name").text;
                int h = tv_folder.InsertChildItem(hItem, name, trust(e as int), 35);
                KXMLDOMElement& e = *new KXMLDOMElement(nlist.item(i));
                xstring name = e.selectSingleNode(L"name").text();
                HTREEITEM h = tv_folder.InsertChildItem(hItem, name, (LPARAM)&e, 35);
                ExpandCatChildFolder(h, e, 35);
            }
            return 1;
        }
        //查找当前树项的顶级目录
        int LookupTopFolder(int hItem)
        HTREEITEM LookupTopFolder(HTREEITEM hItem)
        {
            int hRoot = tv_folder.GetRootItem();
            HTREEITEM hRoot = tv_folder.GetRootItem();
            while (tv_folder.GetParentItem(hItem)) hItem = tv_folder.GetParentItem(hItem);
            return hItem;
        }
        //树展开
        int OnTreeExpanding(ref TNotifyEvent evt, int p)
        int OnTreeExpanding(TEvent* evt, int p)
        {
            ref NMTREEVIEW nmtv = evt.pnmh;
            int hItem = nmtv.itemNew.hItem;
            int hTopItem = LookupTopFolder(hItem);
            string name = tv_folder.GetItemLabel(hTopItem);
            int child = tv_folder.GetChildItem(hItem);
            NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh;
            HTREEITEM hItem = nmtv.itemNew.hItem;
            HTREEITEM hTopItem = LookupTopFolder(hItem);
            xstring name = tv_folder.GetItemLabel(hTopItem);
            HTREEITEM child = tv_folder.GetChildItem(hItem);
            msxml::IXMLDOMElement e = tv_folder.GetItemData(hItem);
            string parentid = "";
            if (name != "部门结构")
                parentid = e.selectSingleNode("adid").text;
            KXMLDOMElement e = tv_folder.GetItemData(hItem);
            xstring parentid = L"";
            if (name != L"部门结构")
                parentid = e.selectSingleNode(L"adid").text();
            trace(parentid);
            if (!child) {
                ExpandFolderItem(hItem, parentid);
@@ -107,26 +120,26 @@
        //查询节点的列表数据
        int OnPreRetrieve()
        {
            int hItem = tv_folder.GetSelectedItem();
            HTREEITEM hItem = tv_folder.GetSelectedItem();
            if (hItem <= 0) return 1;
            //int     hCursor = xutil::SetCursorWait();
            msxml::IXMLDOMElement e = cast(tv_folder.GetItemData(hItem) as msxml::IXMLDOMElement);
            string name = e.getAttribute("name");
            KXMLDOMElement& e = *(KXMLDOMElement*)tv_folder.GetItemData(hItem);
            xstring name = e.getAttribute(L"name");
            xml x = 0;
            string parentid = "";
            if (name != "部门结构")
                parentid = e.selectSingleNode("adid").text;
            xstring parentid = L"";
            if (name != L"部门结构")
                parentid = e.selectSingleNode(L"adid").text();
            trace(parentid);
            x = ViewObject::RetrieveData(myDataUrl, "parentid", parentid);
            x = ViewObject::RetrieveData(myDataUrl, L"parentid", parentid);
            if (x)
            {
                //trace(x.GetXml());
                //trace(x.xml());
                dw_list.Retrieve(x);
                dw_list.Redraw();
            }
            else {
                dw_list.ResetEx();
                dw_list.Reset();
                dw_list.Redraw();
            }
            dw_list.SetReadOnly(true);
@@ -134,20 +147,20 @@
            return 1;
        }
        int OnTreeSelChanged(ref TNotifyEvent evt, int p)
        int OnTreeSelChanged(TEvent* evt, int p)
        {
            if (changeddlb)
                return 1;
            int hItem = tv_folder.GetSelectedItem();
            HTREEITEM hItem = tv_folder.GetSelectedItem();
            if (hItem <= 0)
                return 1;
            int child = tv_folder.GetChildItem(hItem);
            HTREEITEM child = tv_folder.GetChildItem(hItem);
            if (!child) {
                int     hCursor = xutil::SetCursorWait();
                msxml::IXMLDOMElement e = cast(tv_folder.GetItemData(hItem) as msxml::IXMLDOMElement);
                if (!e.getAttribute("name")) {
                    string adid = e.selectSingleNode("adid").text;
                    string parentid = adid;
                HCURSOR     hCursor = xutil::SetCursorWait();
                KXMLDOMElement& e = *(KXMLDOMElement*)tv_folder.GetItemData(hItem);
                if (!e.getAttribute(L"name")) {
                    xstring adid = e.selectSingleNode(L"adid").text();
                    xstring parentid = adid;
                    ExpandFolderItem(hItem, parentid);
                }
            }
@@ -155,7 +168,7 @@
        }
        //焦点激活处理函数
        int OnSetFocus(ref TEvent evt, int param)
        int OnSetFocus(TEvent* evt, LPARAM p)
        {
            //重置工具条
            SetAgent();
@@ -164,18 +177,18 @@
        int OnAdd()
        {
            int hItem = tv_folder.GetSelectedItem();
            HTREEITEM hItem = tv_folder.GetSelectedItem();
            if (hItem <= 0)
                return 1;
            int hCursor = xutil::SetCursorWait();
            msxml::IXMLDOMElement e = cast(tv_folder.GetItemData(hItem) as msxml::IXMLDOMElement);
            string parentid = "";//父级id
            if (!e.getAttribute("name"))
                parentid = e.selectSingleNode("adid").text;
            xaserverarg arg = new xaserverarg;
            arg.setNativePointer(arg.CreateInstance());
            arg.AddArg("parentid", parentid);
            OpenWindow("dev:xpage[AdministrativeDepartmentFolder.vx]", cast(arg as int));
            HCURSOR hCursor = xutil::SetCursorWait();
            KXMLDOMElement& e = *(KXMLDOMElement*)tv_folder.GetItemData(hItem);
            xstring parentid = L"";//父级id
            if (!e.getAttribute(L"name"))
                parentid = e.selectSingleNode(L"adid").text();
            xaserverarg arg;
            arg.AddArg(L"parentid", parentid);
            OpenWindow(L"dev:xpage[AdministrativeDepartmentFolder.vx]",arg);
            return 1;
        }
@@ -187,32 +200,32 @@
            if(hItem <=0)
                return 1;
            int hCursor = xutil::SetCursorWait();
            msxml::IXMLDOMElement e = cast(tv_folder.GetItemData(hItem) as msxml::IXMLDOMElement);
            KXMLDOMElement e = cast(tv_folder.GetItemData(hItem) as KXMLDOMElement);
            if(e.getAttribute("name"))
            if(e.getAttribute(L"name"))
                return 1;*/
            int row = dw_list.GetRow();
            if (row < 1)
                return 1;
            string parentid = "", adid = "";
            /*msxml::IXMLDOMElement ele = dw_list.GetRowElement(row);
            adid = ele.selectSingleNode("adid").text;*/
            adid = dw_list.GetItemString(row, "adid");
            parentid = dw_list.GetItemString(row, "parentid");
            xstring parentid = L"", adid = L"";
            /*KXMLDOMElement ele = dw_list.GetRowElement(row);
            adid = ele.selectSingleNode(L"adid").text();*/
            adid = dw_list.GetItemString(row, L"adid");
            parentid = dw_list.GetItemString(row, L"parentid");
            xaserverarg arg = new xaserverarg;
            arg.setNativePointer(arg.CreateInstance());
            /*string parentid = "", adid = "";//父级id
            xaserverarg arg;
            /*xstring parentid = L"", adid = L"";//父级id
            if(!e.getAttribute("name")){
            if(!e.getAttribute(L"name")){
                parentid = e.selectSingleNode("adid").text;
                adid = e.selectSingleNode("adid").text;
                parentid = e.selectSingleNode(L"adid").text();
                adid = e.selectSingleNode(L"adid").text();
            }*/
            arg.AddArg("parentid", parentid);
            arg.AddArg("adid", adid);
            OpenWindow("dev:xpage[AdministrativeDepartmentFolder.vx]", cast(arg as int));
            arg.AddArg(L"parentid", parentid);
            arg.AddArg(L"adid", adid);
            OpenWindow(L"dev:xpage[AdministrativeDepartmentFolder.vx]",arg);
            return 1;
        }
@@ -222,32 +235,32 @@
            if(hItem <=0) return 1;
            int     hCursor = xutil::SetCursorWait();
            msxml::IXMLDOMElement e = cast(tv_folder.GetItemData(hItem) as msxml::IXMLDOMElement);
            string name = e.getAttribute("name");
            string adid = "";
            if(name != "部门结构")
                adid = e.selectSingleNode("adid").text;*/
            KXMLDOMElement e = cast(tv_folder.GetItemData(hItem) as KXMLDOMElement);
            xstring name = e.getAttribute(L"name");
            xstring adid = L"";
            if(name != L"部门结构")
                adid = e.selectSingleNode(L"adid").text();*/
            int row = dw_list.GetRow();
            if (row < 1)
                return 1;
            string adid = "";
            /*msxml::IXMLDOMElement ele = dw_list.GetRowElement(row);
            adid = ele.selectSingleNode("adid").text;*/
            adid = dw_list.GetItemString(row, "adid");
            xstring adid = L"";
            /*KXMLDOMElement ele = dw_list.GetRowElement(row);
            adid = ele.selectSingleNode(L"adid").text();*/
            adid = dw_list.GetItemString(row, L"adid");
            xml x = new xml;
            x.setNativePointer(xml::CreateInstance());
            xaserverarg arg = new xaserverarg;
            arg.setNativePointer(arg.CreateInstance());
            arg.AddArg("adid", adid);
            if (getUrl("/sale/data/AdministrativeDepartment/ad_delete", arg.GetString(), x) != 1)
            xaserverarg arg;
            arg.AddArg(L"adid", adid);
            if (getUrl(L"/sale/data/AdministrativeDepartment/ad_delete", arg.GetString(), x) != 1)
            {
                string error = x.GetXmlDoc().text;
                alert("err:" + error);
                xstring error = x.text();
                alert(L"err:" + error);
                return 1;
            }
            alert(x.GetXmlDoc().text);
            alert(x.text());
            dw_list.DeleteRow(row);
            return 1;
        }
@@ -259,38 +272,38 @@
        }
        //命令发布函数
        int OnCmdDispatch(string comdid)
        int OnCmdDispatch(xstring comdid)
        {
            if (comdid == "xmUpdate")
            if (comdid == L"xmUpdate")
                return OnUpdate();
            else if (comdid == "xmAdd")
            else if (comdid == L"xmAdd")
                return OnAdd();
            else if (comdid == "xmDelete")
            else if (comdid == L"xmDelete")
                return OnDelete();
            else if (comdid == "xmRefresh")
            else if (comdid == L"xmRefresh")
                return OnRefresh();
            return 0;
        }
        //命令处理事件
        int OnXCommand(ref TXCommandEvent evt, int param)
        int OnXCommand(TEvent* evt, LPARAM p)
        {
            return OnCmdDispatch(evt.pStrID);
            return OnCmdDispatch(evt->xcommand.pStrID);
        }
        int OnAttachEvent()
        {
            AttachEvent("tv_folder", "TVN_SELCHANGED", OnTreeSelChanged); //树选择
            AttachEvent("tv_folder", "TVN_ITEMEXPANDING", OnTreeExpanding); //树展开
            AttachEvent(L"tv_folder", L"TVN_SELCHANGED", (FEvent)&ViewAdministrativeDepartmentList::OnTreeSelChanged); //树选择
            AttachEvent(L"tv_folder", L"TVN_ITEMEXPANDING", (FEvent)&ViewAdministrativeDepartmentList::OnTreeExpanding); //树展开
            //AttachEvent("dw_list","DWV_ROWFOCUSCHANGED",OnRowChanged);
            //AttachEvent("cbx_1","CBN_SELCHANGE",OnSelectDdlb);
            //AttachEvent("cbx_datashow","CBN_SELCHANGE",OnSelectDataShowDdlb);
            //AttachEvent(L"dw_list",L"DWV_ROWFOCUSCHANGED",OnRowChanged);
            //AttachEvent(L"cbx_1",L"CBN_SELCHANGE",OnSelectDdlb);
            //AttachEvent(L"cbx_datashow",L"CBN_SELCHANGE",OnSelectDataShowDdlb);
            //绑定工具条点击事件
            AttachEvent("WM_XCOMMAND", OnXCommand);
            AttachEvent(L"WM_XCOMMAND", (FEvent)&ViewAdministrativeDepartmentList::OnXCommand);
            //获取焦点事件,用于重置工具条
            AttachEvent("WM_SETFOCUS", OnSetFocus);
            AttachEvent(L"WM_SETFOCUS", (FEvent)&ViewAdministrativeDepartmentList::OnSetFocus);
        }
        /*
@@ -298,13 +311,13 @@
        int  OnRetrieve()
        {
            xml x = new xml;
            x.setNativePointer(xml::CreateInstance());
            xaserverarg arg = new xaserverarg;
            arg.setNativePointer(arg.CreateInstance());
            //arg.AddArg("xxx","xxx");
            xaserverarg arg;
            //arg.AddArg(L"xxx",L"xxx");
            if (getUrl(myDataUrl,arg.GetString(),x)!=1)
            {
                trace(x.GetXmlDoc().text);
                trace(x.text());
                return -1;
            }else
            {
@@ -316,20 +329,20 @@
        */
        //展开子文件
        int  ExpandChildFolder(int hItem, msxml::IXMLDOMElement pElement)
        int  ExpandChildFolder(HTREEITEM hItem, KXMLDOMElement pElement)
        {
            msxml::IXMLDOMNodeList nlist = pElement.SelectNodes("Item");
            int len = nlist.length;
            KXMLDOMNodeList nlist = pElement.selectNodes(L"Item");
            int len = nlist.length();
            for (int i = 0; i < len; i++)
            {
                msxml::IXMLDOMElement e = nlist.item(i);
                string name = e.getAttribute("name");
                string sImage = e.getAttribute("image");
                string child = e.getAttribute("child");
                KXMLDOMElement& e = *new KXMLDOMElement(nlist.item(i));
                xstring name = e.getAttribute(L"name");
                xstring sImage = e.getAttribute(L"image");
                xstring child = e.getAttribute(L"child");
                int image = 18;
                if (sImage) image = sImage.toInt();
                int h = tv_folder.InsertChildItem(tv_folder.GetId(), hItem, name, trust(e as int), image);
                if (child != "no")
                HTREEITEM h = tv_folder.InsertChildItem(hItem, name, (LPARAM) & e, image);
                if (child != L"no")
                    tv_folder.SetItemChild(h, 1);
                ExpandChildFolder(h, e);
            }
@@ -339,8 +352,8 @@
        //初始化文件夹
        int  InitialFolder()
        {
            msxml::IXMLDOMElement xframeElement = GetElement();
            msxml::IXMLDOMElement e = xframeElement.selectSingleNode("//xtree[@name='tv_folder']/initial");
            KXMLDOMElement xframeElement = GetElement();
            KXMLDOMElement e = xframeElement.selectSingleNode(L"//xtree[@name='tv_folder']/initial");
            if (e)
                ExpandChildFolder(0, e);
            return 1;
@@ -348,14 +361,14 @@
        int onload()
        {
            dw_list = GetControl("dw_list");
            dw_list.openUrl("/sale/view/AdministrativeDepartment/template/adlist");
            dw_list.SetColumnState("adid", false);
            dw_list.SetColumnState("parentid", false);
            dw_list = GetControl(L"dw_list");
            dw_list.openUrl(L"/sale/view/AdministrativeDepartment/template/adlist");
            dw_list.SetColumnState(L"adid", false);
            dw_list.SetColumnState(L"parentid", false);
            myDataUrl = "/sale/data/AdministrativeDepartment/ad_list";
            urlTree = "/sale/data/AdministrativeDepartment/ad_sidelist";
            tv_folder = GetControl("tv_folder");
            myDataUrl = L"/sale/data/AdministrativeDepartment/ad_list";
            urlTree = L"/sale/data/AdministrativeDepartment/ad_sidelist";
            tv_folder = GetControl(L"tv_folder");
            tv_folder.SetLineAtRoot(true);
            InitialFolder();
            OnAttachEvent();
@@ -369,5 +382,4 @@
            return 1;
        }
    };
]
    };
jrj/project/business/HR/AdministrativeDepartmentFolder.cpp
@@ -1,42 +1,55 @@
use "xcontrol.vframe.vbusiness.vd"
use "xbase.vframe.vbusiness.vd"
#include <wobject/xstring.hpp>
#include <xcontrol/xtreeview.hpp>
#include <xcontrol/xdwgrid.hpp>
#include <xcontrol/xcell.hpp>
unit trade
[
    class AdministrativeDepartmentFolderView : public xframe
#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
#include "viewobject/view.base.hpp"
using xml = KXMLDOMDocument;
    class  __declspec(dllexport) AdministrativeDepartmentFolderView : public xframe
    {
    public:
        //xdwgrid    dw_list;
        xdwtable dw_base;//新增弹窗时使用
        string adid;
        string name;
        string parentid;
        string getsingle_url;
        xstring adid;
        xstring name;
        xstring parentid;
        xstring getsingle_url;
        xnode    m_agentNode;    //Agent Condition
    public:
        AdministrativeDepartmentFolderView(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
    public:
        static AdministrativeDepartmentFolderView* CreateInstance(void* implPtr, void* hWnd)
        {
            AdministrativeDepartmentFolderView* pWin = new AdministrativeDepartmentFolderView(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 p)
        {
            //重置工具条
            //SetAgent();
@@ -46,89 +59,89 @@
        int OnSave()
        {
            xml x = new xml;
            x.setNativePointer(xml::CreateInstance());
            dw_base.AcceptText();
            dw_base.DwUpdateAllTo(x.GetXmlDoc());
            xaserverarg arg = new xaserverarg;
            dw_base.DwUpdateAllTo(x);
            xaserverarg arg;
            arg.setNativePointer(xaserverarg::CreateInstance());
            arg.AddArg("content", x.GetXml());
            //trace(x.GetXml());
            if (getUrl("/sale/data/AdministrativeDepartment/ad_update", arg.GetString(), x) != 1)
            arg.AddArg(L"content", x.xml());
            //trace(x.xml());
            if (getUrl(L"/sale/data/AdministrativeDepartment/ad_update", arg.GetString(), x) != 1)
            {
                string error = x.GetXmlDoc().text;
                alert("err:" + error);
                xstring error = x.text();
                alert(L"err:" + error);
                return 1;
            }
            //trace("返回信息"+x.GetXml());
            string str = x.GetXmlDoc().documentElement.getAttribute("text");
            if (str == "true")
            //trace(L"返回信息"+x.xml());
            xstring str = x.documentElement().getAttribute(L"text");
            if (str == L"true")
            {
                dw_base.ResetUpdateStatus();
                CloseWindow();
                alert("保存成功!");
                alert(L"保存成功!");
            }
            else
            {
                alert("保存失败!");
                alert(L"保存失败!");
            }
            return 1;
        }
        //命令发布函数
        int OnCmdDispatch(string comdid)
        int OnCmdDispatch(xstring comdid)
        {
            if (comdid == "xmSave")
            if (comdid == L"xmSave")
                return OnSave();
            else if (comdid == "xmClose")
            else if (comdid == L"xmClose")
                CloseWindow();
            return 0;
        }
        //命令处理事件
        int OnXCommand(ref TXCommandEvent evt, int param)
        int OnXCommand(TEvent* evt, LPARAM p)
        {
            return OnCmdDispatch(evt.pStrID);
            return OnCmdDispatch(evt->xcommand.pStrID);
        }
        int OnAttachEvent()
        {
            //绑定工具条点击事件
            AttachEvent("WM_XCOMMAND", OnXCommand);
            AttachEvent(L"WM_XCOMMAND", (FEvent)&AdministrativeDepartmentFolderView::OnXCommand);
            //获取焦点事件,用于重置工具条
            AttachEvent("WM_SETFOCUS", OnSetFocus);
            AttachEvent(L"WM_SETFOCUS", (FEvent)&AdministrativeDepartmentFolderView::OnSetFocus);
        }
        int  OnParentRetrieve()
        {
            xml x = new xml;
            x.setNativePointer(xml::CreateInstance());
            xaserverarg arg = new xaserverarg;
            arg.setNativePointer(arg.CreateInstance());
            arg.AddArg("adid", parentid);
            xaserverarg arg;
            arg.AddArg(L"adid", parentid);
            if (getUrl(getsingle_url, arg.GetString(), x) != 1)
            {
                trace(x.GetXmlDoc().text);
                trace(x.text());
                return -1;
            }
            else
            {
                string parent_name = "";
                string parent_adid = "";
                string parent_level = "";
                msxml::IXMLDOMNodeList nlist = x.GetXmlDoc().SelectNodes("data/Item");
                int len = nlist.length;
                xstring parent_name = L"";
                xstring parent_adid = L"";
                xstring parent_level = L"";
                KXMLDOMNodeList nlist = x.selectNodes(L"data/Item");
                int len = nlist.length();
                for (int i = 0; i < len; i++)
                {
                    msxml::IXMLDOMElement e = nlist.item(i);
                    parent_name = e.selectSingleNode("name").text;
                    parent_adid = e.getAttribute("guid");
                    parent_level = e.selectSingleNode("level").text;
                    KXMLDOMElement e = nlist.item(i);
                    parent_name = e.selectSingleNode(L"name").text();
                    parent_adid = e.getAttribute(L"guid");
                    parent_level = e.selectSingleNode(L"level").text();
                }
                xdwtable dw_obj = dw_base.FindDwTable("Item");
                dw_obj.SetItemString(1, "parent_name", parent_name);
                if (adid == "") {
                    dw_obj.SetItemString(1, "parentid", parent_adid);
                    dw_obj.SetItemString(1, "level", (parent_level.toInt() + 1).toString());
                xdwtable dw_obj = dw_base.FindDwTable(L"Item");
                dw_obj.SetItemString(1, L"parent_name", parent_name);
                if (adid == L"") {
                    dw_obj.SetItemString(1, L"parentid", parent_adid);
                    dw_obj.SetItemString(1, L"level", xstring((parent_level.toInt() + 1)));
                }
                //dw_base.Retrieve(x);
@@ -140,13 +153,13 @@
        int  OnRetrieve()
        {
            xml x = new xml;
            x.setNativePointer(xml::CreateInstance());
            xaserverarg arg = new xaserverarg;
            arg.setNativePointer(arg.CreateInstance());
            arg.AddArg("adid", adid);
            xaserverarg arg;
            arg.AddArg(L"adid", adid);
            if (getUrl(getsingle_url, arg.GetString(), x) != 1)
            {
                trace(x.GetXmlDoc().text);
                trace(x.text());
                return -1;
            }
            else
@@ -160,21 +173,21 @@
        int onload()
        {
            dw_base = GetControl("dw_base");
            dw_base.openUrl("/sale/view/AdministrativeDepartment/template/adwin");
            getsingle_url = "/sale/data/AdministrativeDepartment/ad_getsingle";
            xaserverarg arg = new xaserverarg;
            arg.setNativePointer(arg.CreateInstance());
            arg = GetParam();
            adid = "";
            parentid = "";
            if (GetParam()) {
                parentid = arg.GetArgString("parentid");
                adid = arg.GetArgString("adid");
            dw_base = GetControl(L"dw_base");
            dw_base.openUrl(L"/sale/view/AdministrativeDepartment/template/adwin");
            getsingle_url = L"/sale/data/AdministrativeDepartment/ad_getsingle";
            xaserverarg arg;
            adid = L"";
            parentid = L"";
            if (GetWinParam()) {
                parentid = arg.GetArgString(L"parentid");
                adid = arg.GetArgString(L"adid");
            }
            if (adid != "")
            if (adid != L"")
                OnRetrieve();
            if (parentid != "")
            if (parentid != L"")
                OnParentRetrieve();
            OnAttachEvent();
            dw_base.SetColHeaderHeight(0);
@@ -190,5 +203,4 @@
            return 1;
        }
    };
]
    };
jrj/project/business/HR/BlankExcelTemplate.cpp
@@ -1,38 +1,51 @@
use "xcontrol.vframe.vbusiness.vd"
use "xbase.vframe.vbusiness.vd"
#include <wobject/xstring.hpp>
#include <xcontrol/xtreeview.hpp>
#include <xcontrol/xdwgrid.hpp>
#include <xcontrol/xcell.hpp>
unit trade
[
    class BlankExcelTemplateView : public xframe
#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
#include "viewobject/view.base.hpp"
using xml = KXMLDOMDocument;
    class __declspec(dllexport) BlankExcelTemplateView : public xframe
    {
    public:
        xdwgrid    dw_list;
        //xdwtable dw_base;//新增弹窗时使用
        xnode    m_agentNode;    //Agent Condition
    public:
        BlankExcelTemplateView(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
    public:
        static BlankExcelTemplateView* CreateInstance(void* implPtr, void* hWnd)
        {
            BlankExcelTemplateView* pWin = new BlankExcelTemplateView(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 p)
        {
            //重置工具条
            SetAgent();
@@ -42,65 +55,65 @@
        int OnSave()
        {
            xml x = new xml;
            x.setNativePointer(xml::CreateInstance());
            dw_list.AcceptText();
            dw_list.DwUpdateAllToEx(x.GetXmlDoc());
            xaserverarg arg = new xaserverarg;
            dw_list.DwUpdateAllToEx(x);
            xaserverarg arg;
            arg.setNativePointer(xaserverarg::CreateInstance());
            arg.AddArg("content", x.GetXml().replace(" 00:00:00", "").replace("0000-00-00", ""));
            //trace(x.GetXml().replace(" 00:00:00", "").replace("0000-00-00", ""));//运行界面打印
            if (getUrl("/sale/data/ManpowerFile/multiUpdate", arg.GetString(), x) != 1) {
                string error = x.GetXmlDoc().text;
                alert("err:" + error);
            arg.AddArg(L"content", x.xml().replace(L" 00:00:00", L"").replace(L"0000-00-00", L""));
            //trace(x.xml().replace(L" 00:00:00", L"").replace(L"0000-00-00", L""));//运行界面打印
            if (getUrl(L"/sale/data/ManpowerFile/multiUpdate", arg.GetString(), x) != 1) {
                xstring error = x.text();
                alert(L"err:" + error);
                return 1;
            }
            string str = x.GetXmlDoc().documentElement.getAttribute("text");
            if (str == "true")
            xstring str = x.documentElement().getAttribute(L"text");
            if (str == L"true")
            {
                dw_list.ResetUpdateStatus();//更改更新状态,防止多保存
                alert("保存成功!");
                alert(L"保存成功!");
            }
            else
            {
                alert("保存失败!");
                alert(L"保存失败!");
            }
            return 1;
        }
        //命令发布函数
        int OnCmdDispatch(string comdid)
        int OnCmdDispatch(xstring comdid)
        {
            if (comdid == "xmSave")
            if (comdid == L"xmSave")
                return OnSave();
            return 0;
        }
        //命令处理事件
        int OnXCommand(ref TXCommandEvent evt, int param)
        int OnXCommand(TEvent* evt, LPARAM p)
        {
            return OnCmdDispatch(evt.pStrID);
            return OnCmdDispatch(evt->xcommand.pStrID);
        }
        int OnAttachEvent()
        {
            //绑定工具条点击事件
            AttachEvent("WM_XCOMMAND", OnXCommand);
            AttachEvent(L"WM_XCOMMAND", (FEvent)&BlankExcelTemplateView::OnXCommand);
            //获取焦点事件,用于重置工具条
            AttachEvent("WM_SETFOCUS", OnSetFocus);
            AttachEvent(L"WM_SETFOCUS", (FEvent)&BlankExcelTemplateView::OnSetFocus);
        }
        /*//加载数据
        int  OnRetrieve()
        {
            xml x = new xml;
            x.setNativePointer(xml::CreateInstance());
            xaserverarg arg = new xaserverarg;
            arg.setNativePointer(arg.CreateInstance());
            arg.AddArg("xxx","xxx");
            if (getUrl("",arg.GetString(),x)!=1)
            xaserverarg arg;
            arg.AddArg(L"xxx",L"xxx");
            if (getUrl(L"",arg.GetString(),x)!=1)
            {
                trace(x.GetXmlDoc().text);
                trace(x.text());
                return -1;
            }else
            {
@@ -113,8 +126,8 @@
        int onload()
        {
            dw_list = GetControl("dw_list");
            dw_list.openUrl("/sale/view/ManpowerFile/template/list");
            dw_list = GetControl(L"dw_list");
            dw_list.openUrl(L"/sale/view/ManpowerFile/template/list");
            OnAttachEvent();
@@ -127,5 +140,4 @@
            return 1;
        }
    };
]
    };
jrj/project/business/HR/ManpowerFile.cpp
@@ -1,71 +1,84 @@
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 <xcontrol/xcell.hpp>
unit trade
[
    class ViewManpowerFileList : public xframe
#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
#include "viewobject/view.base.hpp"
using xml = KXMLDOMDocument;
    class  __declspec(dllexport)  ViewManpowerFileList : public xframe
    {
    public:
        xdwgrid    dw_list;//hxsoft.com -> Developer -> wface -> vcontrol
        int hSignWin;
        xdwtable dw_arg;
        xnode    m_agentNode;    //Agent Condition
        string urlTree;
        xstring urlTree;
        xtreeview tv_folder;
        //展开子文件
        int  ExpandChildFolder(int hItem, msxml::IXMLDOMElement pElement)
    public:
        ViewManpowerFileList(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
    public:
        static ViewManpowerFileList* CreateInstance(void* implPtr, void* hWnd)
        {
            msxml::IXMLDOMNodeList nlist = pElement.SelectNodes("Item");
            int len = nlist.length;
            ViewManpowerFileList* pWin = new ViewManpowerFileList(implPtr, (HWND)hWnd);
            return pWin;
        }
        //展开子文件
        int  ExpandChildFolder(HTREEITEM hItem,KXMLDOMElement pElement)
        {
            KXMLDOMNodeList nlist = pElement.selectNodes(L"Item");
            int len = nlist.length();
            for (int i = 0; i < len; i++)
            {
                msxml::IXMLDOMElement e = nlist.item(i);
                string name = e.getAttribute("name");
                string sImage = e.getAttribute("image");
                string child = e.getAttribute("child");
                KXMLDOMElement& e = *new KXMLDOMElement(nlist.item(i));
                xstring name = e.getAttribute(L"name");
                xstring sImage = e.getAttribute(L"image");
                xstring child = e.getAttribute(L"child");
                int image = 15;
                if (sImage) image = sImage.toInt();
                int h = tv_folder.InsertChildItem(tv_folder.GetId(), hItem, name, trust(e as int), image);
                if (child != "no") tv_folder.SetItemChild(h, 1);
                HTREEITEM h = tv_folder.InsertChildItem( hItem, name, (LPARAM)&e, image);
                if (child != L"no") tv_folder.SetItemChild(h, 1);
                ExpandChildFolder(h, e);
            }
            return 1;
        }
        int  InitialFolder()
        {
            msxml::IXMLDOMElement xframeElement = GetElement();
            msxml::IXMLDOMElement e = xframeElement.selectSingleNode("//xtree[@name='tv_folder']/initial");
            KXMLDOMElement xframeElement = GetElement();
            KXMLDOMElement e = xframeElement.selectSingleNode(L"//xtree[@name='tv_folder']/initial");
            if (e)
                ExpandChildFolder(0, e);
            return 1;
        }
        int ExpandCatChildFolder(int hItem, msxml::IXMLDOMElement ele, int image)
        int ExpandCatChildFolder(HTREEITEM hItem, KXMLDOMElement ele, int image)
        {
            msxml::IXMLDOMNodeList nlist = ele.SelectNodes("item");
            int len = nlist.length;
            KXMLDOMNodeList nlist = ele.selectNodes(L"item");
            int len = nlist.length();
            if (len > 0) tv_folder.SetItemChild(hItem, 1);
            for (int i = 0; i < len; i++)
            {
                msxml::IXMLDOMElement e = nlist.item(i);
                string name = e.getAttribute("name");
                int h = tv_folder.InsertChildItem(hItem, name, trust(e as int), image);
                KXMLDOMElement& e = *new KXMLDOMElement(nlist.item(i));
                xstring name = e.getAttribute(L"name");
                HTREEITEM h = tv_folder.InsertChildItem(hItem, name, (LPARAM)&e, image);
                ExpandCatChildFolder(h, e, 35);
            }
            return 1;
        }
        int ExpandFolderItem(int hItem)
        int ExpandFolderItem(HTREEITEM hItem)
        {
            xml x = ViewObject::RetrieveData(urlTree);
            if (!x) return 0;
            msxml::IXMLDOMNodeList nlist = x.GetXmlDoc().SelectNodes("/data/item");
            int len = nlist.length;
            KXMLDOMNodeList nlist = x.selectNodes(L"/data/item");
            int len = nlist.length();
            for (int i = 0; i < len; i++)
            {
                msxml::IXMLDOMElement e = nlist.item(i);
                string name = e.getAttribute("name");
                int h = tv_folder.InsertChildItem(hItem, name, trust(e as int), 35);
                KXMLDOMElement& e = *new KXMLDOMElement(nlist.item(i));
                xstring name = e.getAttribute(L"name");
                HTREEITEM h = tv_folder.InsertChildItem(hItem, name, (LPARAM)&e, 35);
                ExpandCatChildFolder(h, e, 35);
            }
            return 1;
@@ -73,27 +86,27 @@
        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 p)
        {
            //重置工具条
            SetAgent();
@@ -102,7 +115,7 @@
        int OnOpenAddWindow()
        {
            OpenWindow("dev:xpage[ManpowerFileWindow.vx]");
            OpenWindow(L"dev:xpage[ManpowerFileWindow.vx]");
            return 1;
        }
@@ -111,15 +124,15 @@
            int row = dw_list.GetRow();
            if (row < 1)
                return 1;
            msxml::IXMLDOMElement ele = dw_list.GetRowElement(row);
            string mfid = ele.selectSingleNode("mfid").text;//获取节点的值
            OpenWindow("dev:xpage[ManpowerFileWindow.vx]", cast(mfid as int));
            KXMLDOMElement ele = dw_list.GetRowElement(row);
            xstring mfid = ele.selectSingleNode(L"mfid").text();//获取节点的值
            OpenWindow(L"dev:xpage[ManpowerFileWindow.vx]",mfid);
            return 1;
        }
        int OnExchangeFileWindow()
        {
            xwin xw = OpenWindow("dev:xpage[BlankExcelTemplate.vx]", 0);
            xwin xw = OpenWindow(L"dev:xpage[BlankExcelTemplate.vx]", 0);
            hSignWin = xw.GetHWND();
            return 1;
        }
@@ -128,26 +141,26 @@
        {
            int MB_OKCANCEL = 1;
            int IDOK = 1;
            int ret = win32::MessageBox(GetHWND(), "确认删除?", "提示", MB_OKCANCEL);
            int ret = MessageBoxW(GetHWND(), L"确认删除?", L"提示", MB_OKCANCEL);
            if (ret == IDOK)
            {
                int row = dw_list.GetRow();
                if (row < 1)
                    return 1;
                msxml::IXMLDOMElement ele = dw_list.GetRowElement(row);
                string mfid = ele.selectSingleNode("mfid").text;//查看
                KXMLDOMElement ele = dw_list.GetRowElement(row);
                xstring mfid = ele.selectSingleNode(L"mfid").text();//查看
                xml x = new xml;
                x.setNativePointer(xml::CreateInstance());
                xaserverarg arg = new xaserverarg;//放置参数
                arg.setNativePointer(arg.CreateInstance());
                arg.AddArg("mfid", mfid);
                if (getUrl("/sale/data/ManpowerFile/delete", arg.GetString(), x) != 1)
                xaserverarg arg;//放置参数
                arg.AddArg(L"mfid", mfid);
                if (getUrl(L"/sale/data/ManpowerFile/delete", arg.GetString(), x) != 1)
                {
                    string error = x.GetXmlDoc().text;
                    alert("err:" + error);
                    xstring error = x.text();
                    alert(L"err:" + error);
                    return 1;
                }
                alert(x.GetXmlDoc().text);
                alert(x.text());
                OnRefresh();
            }
            return 1;
@@ -161,50 +174,50 @@
        //分析
        int OnAnalysis()
        {
            int hCursor = xutil::SetCursorWait();
            string str = dw_list.DataAnalysis("");
            xaserverarg arg = new xaserverarg;
            arg.setNativePointer(arg.CreateInstance());
            arg.AddArg("html", str);
            HCURSOR hCursor = xutil::SetCursorWait();
            xstring str = dw_list.DataAnalysis(L"");
            xaserverarg arg;
            arg.AddArg(L"html", str);
            int obj = cast(dw_list as int);
            arg.AddArg("obj", obj.toString());
            OpenWindow("dev:xpage[data.vanalysis.vx]", cast(arg as int));
            arg.AddArg(L"obj", obj.toString());
            OpenWindow(L"dev:xpage[data.vanalysis.vx]", cast(arg as int));
            xutil::RestoreCursor(hCursor);
            return 1;
        }
        string GetQueryArg()
        xstring GetQueryArg()
        {
            dw_arg.AcceptText();
            xml x = new xml;
            x.setNativePointer(xml::CreateInstance());
            dw_arg.DwUpdateAllTo(x.GetXmlDoc());
            dw_arg.DwUpdateAllTo(x);
            return x.GetXml();
            return x.xml();
        }
        int  OnRetrieveEx1()
        {
            int hItem = tv_folder.GetSelectedItem();
            HTREEITEM hItem = tv_folder.GetSelectedItem();
            if (hItem <= 0) return 1;
            int hCursor = xutil::SetCursorWait();
            msxml::IXMLDOMElement e1 = cast(tv_folder.GetItemData(hItem) as msxml::IXMLDOMElement);
            string no = e1.getAttribute("no");
            HCURSOR hCursor = xutil::SetCursorWait();
            KXMLDOMElement& e1 = *(KXMLDOMElement*)tv_folder.GetItemData(hItem);
            xstring no = e1.getAttribute(L"no");
            xml x = new xml;
            x.setNativePointer(xml::CreateInstance());
            xaserverarg arg = new xaserverarg;
            arg.setNativePointer(arg.CreateInstance());
            //arg.AddArg("QueryTxt",GetControl("sle_search").GetText());
            arg.AddArg("QueryArg", GetQueryArg());
            arg.AddArg("MStatus", no);
            xaserverarg arg;
            //arg.AddArg(L"QueryTxt",GetControl(L"sle_search").GetText());
            arg.AddArg(L"QueryArg", GetQueryArg());
            arg.AddArg(L"MStatus", no);
            arg.AddArg("QueryName", GetControl("QueryName").GetText());
            arg.AddArg(L"QueryName", GetControl(L"QueryName").GetText());
            //trace(arg.GetString());
            if (getUrl("/sale/data/ManpowerFile/list", arg.GetString(), x) != 1)
            if (getUrl(L"/sale/data/ManpowerFile/list", arg.GetString(), x) != 1)
            {
                trace(x.GetXmlDoc().text);
                trace(x.text());
                return -1;
            }
            else
@@ -219,36 +232,36 @@
        }
        //命令发布函数
        int OnCmdDispatch(string comdid)
        int OnCmdDispatch(xstring comdid)
        {
            if (comdid == "xmAddHumanDocument")
            if (comdid == L"xmAddHumanDocument")
                return OnOpenAddWindow();
            else if (comdid == "xmUpdateHumanDocument")
            else if (comdid == L"xmUpdateHumanDocument")
                return OnOpenUpdateWindow();
            else if (comdid == "xmRefresh" || comdid == "xmSearch")
            else if (comdid == L"xmRefresh" || comdid == L"xmSearch")
                return OnRetrieveEx1();
            else if (comdid == "xmExchangeFile")
            else if (comdid == L"xmExchangeFile")
                return OnExchangeFileWindow();
            else if (comdid == "xmDelete")
            else if (comdid == L"xmDelete")
                return OnDelete();
            else if (comdid == "xmAnalysis")
            else if (comdid == L"xmAnalysis")
                return OnAnalysis();
            return 0;
        }
        //命令处理事件
        int OnXCommand(ref TXCommandEvent evt, int param)
        int OnXCommand(TEvent* evt, LPARAM p)
        {
            return OnCmdDispatch(evt.pStrID);
            return OnCmdDispatch(evt->xcommand.pStrID);
        }
        int OnDoubleClicked(ref TNotifyEvent evt, int p)
        int OnDoubleClicked(TEvent* evt, LPARAM p)
        {
            return OnCmdDispatch("xmUpdateHumanDocument");
            return OnCmdDispatch(L"xmUpdateHumanDocument");
        }
        int OnTreeSelChanged(ref TNotifyEvent evt, int p)
        int OnTreeSelChanged(TEvent* evt, LPARAM p)
        {
            return OnRetrieveEx1();
        }
@@ -256,11 +269,11 @@
        int OnAttachEvent()
        {
            //绑定工具条点击事件
            AttachEvent("WM_XCOMMAND", OnXCommand);
            AttachEvent(L"WM_XCOMMAND", (FEvent)&ViewManpowerFileList::OnXCommand);
            //获取焦点事件,用于重置工具条
            AttachEvent("WM_SETFOCUS", OnSetFocus);
            AttachEvent("dw_list", "DWV_DOUBLECLICKED", OnDoubleClicked);//行双击
            AttachEvent("tv_folder", "TVN_SELCHANGED", OnTreeSelChanged); //树选择
            AttachEvent(L"WM_SETFOCUS", (FEvent)&ViewManpowerFileList::OnSetFocus);
            AttachEvent(L"dw_list", L"DWV_DOUBLECLICKED", (FEvent)&ViewManpowerFileList::OnDoubleClicked);//行双击
            AttachEvent(L"tv_folder", L"TVN_SELCHANGED", (FEvent)&ViewManpowerFileList::OnTreeSelChanged); //树选择
        }
        //数据传输函数
@@ -268,17 +281,17 @@
        {
            //int  hCursor = xutil::SetCursorWait();//鼠标位置
            xml x = new xml;
            x.setNativePointer(xml::CreateInstance());
            xaserverarg arg = new xaserverarg;//放置参数
            arg.setNativePointer(arg.CreateInstance());
            //arg.AddArg("QueryTxt",GetControl("sle_search").GetText());//添加所需要传到后台的参数
            arg.AddArg("QueryArg", GetQueryArg());
            arg.AddArg("MStatus", "");
            arg.AddArg("QueryName", GetControl("QueryName").GetText());
            //trace("查看arg="+arg.GetString());//运行界面打印
            if (getUrl("/sale/data/ManpowerFile/list", arg.GetString(), x) != 1)///sale/data/ManpowerFile/doclist后台接口
            xaserverarg arg;//放置参数
            //arg.AddArg(L"QueryTxt",GetControl(L"sle_search").GetText());//添加所需要传到后台的参数
            arg.AddArg(L"QueryArg", GetQueryArg());
            arg.AddArg(L"MStatus", L"");
            arg.AddArg(L"QueryName", GetControl(L"QueryName").GetText());
            //trace(L"查看arg=L"+arg.GetString());//运行界面打印
            if (getUrl(L"/sale/data/ManpowerFile/list", arg.GetString(), x) != 1)///sale/data/ManpowerFile/doclist后台接口
            {
                trace(x.GetXmlDoc().text);
                trace(x.text());
                return -1;
            }
            else
@@ -291,10 +304,10 @@
        int onload()
        {
            //【1】控制页面中name="dw_list"的内容
            dw_list = GetControl("dw_list");
            //【1】控制页面中name=L"dw_list"的内容
            dw_list = GetControl(L"dw_list");
            //【2】加载sale根目录下view下的ManpowerFile.vface文件中的template/list url 前端页面
            dw_list.openUrl("/sale/view/ManpowerFile/template/list");
            dw_list.openUrl(L"/sale/view/ManpowerFile/template/list");
            //【3】绑定事件
            OnAttachEvent();
            //【4】加载后台数据
@@ -302,17 +315,17 @@
            //【6】设为只读
            dw_list.SetReadOnly(true);
            dw_arg = GetControl("dw_arg");
            dw_arg.openUrl("/sale/view/ManpowerFile/template/QueryArg");
            dw_arg = GetControl(L"dw_arg");
            dw_arg.openUrl(L"/sale/view/ManpowerFile/template/QueryArg");
            dw_arg.SetColHeaderHeight(0);
            dw_arg.SetRowSelectorWidth(0);
            dw_arg.SetHScrollState(false);
            dw_arg.SetVScrollState(false);
            dw_arg.SetItemString(1, "DateType", "不设定");
            dw_arg.SetItemString(1, L"DateType", L"不设定");
            OnRetrieve();
            urlTree = "/sale/data/ManpowerFile/folder";
            tv_folder = GetControl("tv_folder");
            urlTree = L"/sale/data/ManpowerFile/folder";
            tv_folder = GetControl(L"tv_folder");
            tv_folder.SetLineAtRoot(true);
            InitialFolder();
@@ -322,11 +335,10 @@
        int onloaded()
        {
            SetAgent();
            int hItem = tv_folder.GetRootItem();
            HTREEITEM hItem = tv_folder.GetRootItem();
            ExpandFolderItem(hItem);
            tv_folder.ExpandItem(hItem);
            tv_folder.ItemFocus(hItem);
            return 1;
        }
    };
]
    };
jrj/project/business/HR/ManpowerFileWindow.cpp
@@ -1,23 +1,31 @@
use "xcontrol.vframe.vbusiness.vd"
use "xbase.vframe.vbusiness.vd"
use "xcontrol.vframe.vbusiness.vd"
use "xbase.vframe.vbusiness.vd"
use "vbind.vbind.wface.vd"
use "publiccode.vutil.vbusiness.vd"
use "multi.vbind.vbind.wface.vd"
#include <wobject/xstring.hpp>
#include <xcontrol/xtreeview.hpp>
#include <xcontrol/xdwgrid.hpp>
#include <xcontrol/xcell.hpp>
unit trade
[
    class ViewManpowerFileWiondow : public xframe
#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
#include "viewobject/view.base.hpp"
using xml = KXMLDOMDocument;
    class __declspec(dllexport) ViewManpowerFileWiondow : public xframe
    {
    public:
        //xdwgrid    dw_list;//新建列表时使用
        xdwtable dw_base;//新增弹窗时使用
        string mfid;
        xstring mfid;
        xnode    m_agentNode;    //Agent Condition
    public:
        ViewManpowerFileWiondow(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
    public:
        static ViewManpowerFileWiondow* CreateInstance(void* implPtr, void* hWnd)
        {
            ViewManpowerFileWiondow* pWin = new ViewManpowerFileWiondow(implPtr, (HWND)hWnd);
            return pWin;
        }
        /*int SetAgent()
        {
            string xfNodeAgentArea  = "agentarea";
            xstring xfNodeAgentArea  = L"agentarea";
            xnode anode = GetAgentNode(xfNodeAgentArea);
            if(m_agentNode)
            {
@@ -26,10 +34,10 @@
            else
            {
                msxml::IXMLDOMElement xframeElement =  GetElement();
                msxml::IXMLDOMElement agent = xframeElement.selectSingleNode("agent/"+xfNodeAgentArea+"[1]/*");
                msxml::IXMLDOMElement agent = xframeElement.selectSingleNode(L"agent/"+xfNodeAgentArea+L"[1]/*");
                if(agent)
                {
                    string s = agent.xml;
                    xstring s = agent.xml;
                    m_agentNode =  SetAgentNodeContent (anode,s);
                }
            }
@@ -37,7 +45,7 @@
        }*/
        //焦点激活处理函数
        int OnSetFocus(ref TEvent evt, int param)
        int OnSetFocus(TEvent* evt, LPARAM p)
        {
            //重置工具条
            SetAgent();
@@ -48,77 +56,77 @@
        int OnSave()
        {
            xml x = new xml;
            x.setNativePointer(xml::CreateInstance());
            dw_base.AcceptText();
            dw_base.DwUpdateAllTo(x.GetXmlDoc());
            xaserverarg arg = new xaserverarg;
            dw_base.DwUpdateAllTo(x);
            xaserverarg arg;
            arg.setNativePointer(xaserverarg::CreateInstance());
            arg.AddArg("content", x.GetXml());
            //trace(x.GetXml());
            if (url::get("/sale/data/ManpowerFile/update", arg.GetString(), x) != 1)
            arg.AddArg(L"content", x.xml());
            //trace(x.xml());
            if (xurl::get(L"/sale/data/ManpowerFile/update", arg.GetString(), x) != 1)
            {
                string error = x.GetXmlDoc().text;
                alert("err:" + error);
                xstring error = x.text();
                alert(L"err:" + error);
                return 1;
            }
            //trace("返回值="+x.GetXml());
            string str = x.GetXmlDoc().documentElement.getAttribute("text");
            if (str == "true")
            //trace(L"返回值=L"+x.xml());
            xstring str = x.documentElement().getAttribute(L"text");
            if (str == L"true")
            {
                dw_base.ResetUpdateStatus();
                CloseWindow();
                alert("保存成功!");
                alert(L"保存成功!");
            }
            else
            {
                alert("保存失败!");
                alert(L"保存失败!");
            }
            return 1;
        }
        //命令发布函数
        int OnCmdDispatch(string comdid)
        int OnCmdDispatch(xstring comdid)
        {
            if (comdid == "xmClose") {//关闭窗口
            if (comdid == L"xmClose") {//关闭窗口
                CloseWindow();
                return 1;
            }
            else if (comdid == "xmSave") {//保存窗口
            else if (comdid == L"xmSave") {//保存窗口
                return OnSave();
            }
            return 0;
        }
        //命令处理事件
        int OnXCommand(ref TXCommandEvent evt, int param)
        int OnXCommand(TEvent* evt, LPARAM p)
        {
            return OnCmdDispatch(evt.pStrID);
            return OnCmdDispatch(evt->xcommand.pStrID);
        }
        int OnAttachEvent()
        {
            //绑定工具条点击事件
            AttachEvent("WM_XCOMMAND", OnXCommand);
            AttachEvent(L"WM_XCOMMAND", (FEvent)&ViewManpowerFileWiondow::OnXCommand);
            //获取焦点事件,用于重置工具条
            AttachEvent("WM_SETFOCUS", OnSetFocus);
            AttachEvent("dw_base", "DWV_ITEMCHANGING", OnItemChanging);
            AttachEvent(L"WM_SETFOCUS", (FEvent)&ViewManpowerFileWiondow::OnSetFocus);
            AttachEvent(L"dw_base", L"DWV_ITEMCHANGING", (FEvent)&ViewManpowerFileWiondow::OnItemChanging);
        }
        int OnItemChanging(ref TNotifyEvent evt, int p)
        int OnItemChanging(TEvent* evt, LPARAM p)
        {
            ref DWNMHDR  hdr = trust(evt.pnmh as ref DWNMHDR);
            string colname = hdr.colname;
            string value = hdr.data;
            DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
            xstring colname = hdr.colname;
            xstring value = hdr.data;
            int row = hdr.row;
            if (value == "") return 1;
            string cellType = dw_base.GetColumnProp(colname, "celltype");
            if (value == L"") return 1;
            xstring cellType = dw_base.GetColumnProp(colname, L"celltype");
            //alert(cellType);
            if (cellType == "xs:decimal" || cellType == "xs:integer")
            if (cellType == L"xs:decimal" || cellType == L"xs:integer")
            {
                if (value.isNumber() == false)
                {
                    alert(value + "不是数字!");
                    alert(value + L"不是数字!");
                    hdr.idFrom = -1;
                    return 1;
                }
@@ -128,18 +136,18 @@
        int  OnRetrieve()
        {
            xml x = new xml;
            x.setNativePointer(xml::CreateInstance());
            xaserverarg arg = new xaserverarg;
            arg.setNativePointer(arg.CreateInstance());
            arg.AddArg("mfid", mfid);
            if (getUrl("/sale/data/ManpowerFile/getsingle", arg.GetString(), x) != 1)
            xaserverarg arg;
            arg.AddArg(L"mfid", mfid);
            if (getUrl(L"/sale/data/ManpowerFile/getsingle", arg.GetString(), x) != 1)
            {
                trace("错误信息=" + x.GetXmlDoc().text);
                trace(L"错误信息=L" + xstring(x.text()));
                return -1;
            }
            else
            {
                //trace("返回信息="+x.GetXml());
                //trace(L"返回信息=L"+x.xml());
                dw_base.Retrieve(x);
                dw_base.Redraw();
            }
@@ -148,12 +156,12 @@
        int onload()
        {
            dw_base = GetControl("dw_base");
            dw_base.openUrl("/sale/view/ManpowerFile/template/win");
            mfid = "";
            if (GetParam())
                mfid = GetParam();
            if (mfid != "")
            dw_base = GetControl(L"dw_base");
            dw_base.openUrl(L"/sale/view/ManpowerFile/template/win");
            mfid = L"";
            if (GetWinParam())
                mfid = GetParamString();
            if (mfid != L"")
            {
                OnRetrieve();
            }
@@ -174,5 +182,4 @@
            return 1;
        }
    };
]
    };
jrj/project/business/SO/Product.Select.SO.cpp
@@ -1043,7 +1043,8 @@
                if (selectname != name)
                {
                    KXMLDOMElement e1 = cast(tv_folder.GetItemData(hItem) as KXMLDOMElement);
                    KXMLDOMElement& e1 = *(KXMLDOMElement*)tv_folder.GetItemData(hItem);
                    xstring str = e1.getAttribute(L"no");
                    if (str.find(L"Customer1:") == 0 || str.find(L"Customer:") == 0 || str.find(L"SO:") == 0 || str.find(L"Quote:") == 0)
                    {
@@ -1298,7 +1299,7 @@
            xbind bindcart = new xbind;
            bindcart.bindEx(dwc_list, g_xdoc_shoppingcart, L"");
            dw_list.SetDataObject(ProductLibraryView::GetMaintListForm3(L"").GetXmlDoc());
            dw_list.SetDataObject(ProductLibraryView::GetMaintListForm3(L"").xml());
            dw_list = GetControl(L"dw_list");
            dw_list.SetReadOnly(true);
jrj/project/business/SO/delivery.base.maint.so.cpp
@@ -184,7 +184,7 @@
            dw_cell.setNativePointer(dw_1.QueryItem(L"ixcell"));
            OnAttachEvent();
            if (GetParam())OnInit();
            if (GetWinParam())OnInit();
            return 1;
        }
jrj/project/business/SO/maint.Document.SO3.v3.cpp
@@ -122,7 +122,7 @@
            xstring name = d.mid(d.find(L"|##@@|",0)+6, d.length());
            */
        
            xaserver::__CreateDirectory(L"C:/Temp");
            xaserver::CreateDirectory(L"C:/Temp");
            if (arg)
            {
                if (arg.GetArgString(L"process") == L"data")
@@ -241,7 +241,7 @@
            xstring name = ele.getAttribute(L"caption");
            
            xaserver::__CreateDirectory(L"C:/Temp");
            xaserver::CreateDirectory(L"C:/Temp");
            xstring str = file.left(2);
            xstring ext = L"";
            if (name.find(L".") >= 0) ext = name.mid(name.find(L"."), name.length());
jrj/project/business/SO/paymentterm.base.maint.so.cpp
@@ -399,7 +399,7 @@
            OnAttachEvent();
            if (GetParam())OnInit();
            if (GetWinParam())OnInit();
            return 1;
        }
jrj/project/business/quote.enquiry.cpp
@@ -12,7 +12,7 @@
#include "viewobject/view.base.hpp"
#include "viewobject/quote.view.hpp"
using xml = KXMLDOMDocument;
using xml = KXMLDOMDocument;xxxx
class __declspec(dllexport) QuoteFileView : public xframe
{