LiFan
2024-07-17 3680fd01aaa3238767302138fb85a97b228bb39d
updae
已修改11个文件
1955 ■■■■ 文件已修改
jrj/project/business/SystemSettings/Developer.Synch.cpp 299 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/SystemSettings/Flow3.cpp 424 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/SystemSettings/FlowTermImport.cpp 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/SystemSettings/FlowTermSelect.cpp 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/SystemSettings/LogList.cpp 172 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/SystemSettings/SysLoginRecord.cpp 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/SystemSettings/TestRetrieveing.cpp 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/SystemSettings/UserPassDlg.cpp 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/SystemSettings/level.Customer.v3.cpp 322 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/SystemSettings/maint.Level.Customer3.cpp 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/SystemSettings/view.assignadjust.cpp 201 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/SystemSettings/Developer.Synch.cpp
@@ -1,45 +1,60 @@
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;
@@ -51,30 +66,30 @@
            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;
@@ -84,35 +99,35 @@
                }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;            
@@ -120,103 +135,103 @@
        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;
@@ -224,34 +239,34 @@
            
        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();
@@ -262,7 +277,7 @@
        {    
            if(nCount >99)
            {
                alert("同时同步的数量不能大于100个!");
                alert(L"同时同步的数量不能大于100个!");
                return 1;
            }
            nItems[nCount] = hItem; 
@@ -290,17 +305,17 @@
        }
        //命令发布函数
        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);
@@ -310,13 +325,16 @@
            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
@@ -326,52 +344,52 @@
        }    
        
        //命令处理事件
        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);
            }
@@ -379,19 +397,19 @@
            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;
        }
@@ -399,8 +417,8 @@
        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;
@@ -408,8 +426,7 @@
        
        int onloaded()
        {
            OnSetTree(0, "Projects/projects.xhw");
            OnSetTree(0, L"Projects/projects.xhw");
            return 1;
        }        
    };
]
jrj/project/business/SystemSettings/Flow3.cpp
@@ -1,12 +1,18 @@
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;
@@ -17,133 +23,139 @@
        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;
        }
@@ -174,7 +186,7 @@
        }
        
        //焦点激活处理函数
        int OnSetFocus(ref TEvent evt,int param)
        int OnSetFocus(TEvent* evt, LPARAM param)
        {
            //重置工具条
            SetAgent();
@@ -184,80 +196,80 @@
            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();
@@ -271,40 +283,40 @@
            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;
                }
@@ -316,14 +328,15 @@
            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);
@@ -331,70 +344,70 @@
            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;
        }
@@ -402,18 +415,18 @@
        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);
                }
@@ -424,28 +437,28 @@
        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();    
            
@@ -461,4 +474,3 @@
            return 1;
        }        
    };
]
jrj/project/business/SystemSettings/FlowTermImport.cpp
@@ -1,56 +1,71 @@
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;
            }    
            
@@ -60,9 +75,9 @@
                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);
@@ -73,14 +88,14 @@
        }
                
        //命令发布函数
        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;
@@ -89,33 +104,34 @@
        }
        
        //命令处理事件
        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    
            {
@@ -128,18 +144,18 @@
        
        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);
@@ -159,4 +175,3 @@
            return 1;
        }        
    };
]
jrj/project/business/SystemSettings/FlowTermSelect.cpp
@@ -1,70 +1,85 @@
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();
@@ -72,14 +87,14 @@
        }
                
        //命令发布函数
        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;
@@ -88,33 +103,34 @@
        }
        
        //命令处理事件
        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    
            {
@@ -127,20 +143,20 @@
        
        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);
@@ -158,4 +174,3 @@
            return 1;
        }        
    };
]
jrj/project/business/SystemSettings/LogList.cpp
@@ -1,41 +1,56 @@
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();
@@ -43,63 +58,62 @@
        }
        //命令发布函数
        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;
@@ -107,16 +121,16 @@
        
        
        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;
@@ -125,16 +139,16 @@
        
            
        //命令处理事件
        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;
@@ -145,32 +159,33 @@
        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);
@@ -180,13 +195,13 @@
        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();    
@@ -196,8 +211,7 @@
        int onloaded()
        {
            SetAgent();
            OnCmdDispatch("xmQuery");
            OnCmdDispatch(L"xmQuery");
            return 1;
        }        
    };
]
jrj/project/business/SystemSettings/SysLoginRecord.cpp
@@ -1,77 +1,90 @@
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);
@@ -80,10 +93,9 @@
        }
        int onloaded()
        {
                //alert("xxx");
                //alert(L"xxx");
                OnAttachEvent();
                //OnRetrieve();
                return 1;
            }            
    };
]
jrj/project/business/SystemSettings/TestRetrieveing.cpp
@@ -1,25 +1,40 @@
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;
@@ -28,17 +43,18 @@
        }
        
        //命令处理事件
        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()
@@ -49,4 +65,3 @@
        }
        
    };
]
jrj/project/business/SystemSettings/UserPassDlg.cpp
@@ -1,38 +1,54 @@
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();
@@ -40,53 +56,53 @@
        }
        //命令发布函数
        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;
@@ -95,26 +111,27 @@
        }
        
        //命令处理事件
        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();    
            
@@ -128,4 +145,3 @@
            return 1;
        }        
    };
]
jrj/project/business/SystemSettings/level.Customer.v3.cpp
@@ -1,45 +1,60 @@
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);
@@ -49,22 +64,23 @@
        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();
        }
@@ -72,20 +88,20 @@
    }
    //树选择
    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();
@@ -93,53 +109,55 @@
        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);
            }
        }    
        
@@ -147,15 +165,15 @@
    }
            
    //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;
@@ -171,20 +189,20 @@
            }
        }
            
        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
@@ -203,7 +221,7 @@
        return 1;
    }
    int OnRClick(ref TNotifyEvent evt,int p)
    int OnRClick(TEvent* evt, int p)
    {
        return 1;
    }            
@@ -214,66 +232,66 @@
    //设置层级弹出窗与保存
    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();
        }
@@ -281,21 +299,20 @@
        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
        {
@@ -310,12 +327,12 @@
    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;
    }
@@ -323,19 +340,19 @@
    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;
    }
@@ -344,16 +361,15 @@
    {
        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;
    }
};
]
jrj/project/business/SystemSettings/maint.Level.Customer3.cpp
@@ -1,35 +1,50 @@
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;
            }
@@ -37,24 +52,26 @@
        }
        
        //命令处理事件
        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);
@@ -69,4 +86,3 @@
        }
        
    };
]
jrj/project/business/SystemSettings/view.assignadjust.cpp
@@ -1,37 +1,49 @@
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;
@@ -39,40 +51,40 @@
                
        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();
@@ -83,13 +95,13 @@
            {
                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();
@@ -98,63 +110,62 @@
                
        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;
@@ -163,32 +174,33 @@
        }
        
        //命令处理事件
        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;
@@ -196,43 +208,43 @@
        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    
@@ -248,7 +260,7 @@
        int onload()
        {
            rptEle = 0;
            dw_list = GetControl("dw_list");
            dw_list = GetControl(L"dw_list");
            OnAttachEvent();    
            
            hWndRetrieveTip = 0;
@@ -264,4 +276,3 @@
            return 1;
        }        
    };
]