xj qian
2024-07-18 bbe8987042e7216227bc9fe87e0ac60abaebdbf3
Merge branch 'master' of http://116.62.18.175:6699/r/mis-prj
已修改13个文件
2122 ■■■■ 文件已修改
jrj/ext-jrj/ext-jrj.vcxproj 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/ext-jrj/ext-jrj.vcxproj.filters 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/Quote/CustomerItemNoList.cpp 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/Quote/Product.Select.cpp 815 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/Quote/QuoteFilePurch.cpp 128 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/Quote/QuoteFilePurched.cpp 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/Quote/QuoteSupplierItem.cpp 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/Quote/TONewSelectDlg.cpp 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/Quote/TOSelectDlg.cpp 203 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/Quote/XmShare.Quote.v3.cpp 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/Quote/trade.document.saveas.cpp 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/Quote/trade.document.selectdlg.cpp 194 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/Quote/xmQuoteBillList.cpp 146 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/ext-jrj/ext-jrj.vcxproj
@@ -742,22 +742,19 @@
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\project\business\Quote\CustomerItemNoList.cpp">
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\project\business\Quote\Product.Select.cpp">
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\project\business\Quote\QuoteFilePurch.cpp">
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\project\business\Quote\QuoteFilePurched.cpp">
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\project\business\Quote\QuoteSupplierItem.cpp">
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\project\business\Quote\TONewSelectDlg.cpp">
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\project\business\Quote\TOSelectDlg.cpp">
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
@@ -769,10 +766,10 @@
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\project\business\Quote\xmQuoteBillList.cpp">
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\project\business\Quote\XmShare.Quote.v3.cpp">
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\project\business\SO3.list.cpp" />
    <ClCompile Include="..\project\business\SO3.maint.cpp">
jrj/ext-jrj/ext-jrj.vcxproj.filters
@@ -1118,9 +1118,6 @@
    <ClCompile Include="..\project\business\Quote\TOSelectDlg.cpp">
      <Filter>project\business\Quote</Filter>
    </ClCompile>
    <ClCompile Include="..\project\business\Quote\TONewSelectDlg.cpp">
      <Filter>project\business\Quote</Filter>
    </ClCompile>
    <ClCompile Include="..\project\business\Quote\QuoteSupplierItem.cpp">
      <Filter>project\business\Quote</Filter>
    </ClCompile>
jrj/project/business/Quote/CustomerItemNoList.cpp
@@ -1,43 +1,58 @@
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 trade
[
    class CustomerItemNoList :  public xframe
#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
#include "viewobject/view.base.hpp"
using xml = KXMLDOMDocument;
    class __declspec(dllexport)  CustomerItemNoList :  public xframe
    {
    public:
        xdwgrid    dw_list;
        xnode    m_agentNode;    //Agent Condition
        int hObject = 0;
    
        string GoodsNo;
        xstring GoodsNo;
        
    public:
        CustomerItemNoList(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
    public:
        static CustomerItemNoList* CreateInstance(void* implPtr, void* hWnd)
        {
            CustomerItemNoList* pWin = new CustomerItemNoList(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 OnRowChanged(ref TNotifyEvent evt,int p)
        int OnRowChanged(TEvent* evt, int p)
        {
            ref DWNMHDR  hdr = trust(evt.pnmh as ref DWNMHDR);
            DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
            int row = hdr.row;
            SetAgent();
            return 1;
@@ -45,7 +60,7 @@
        //焦点激活处理函数
        int OnSetFocus(ref TEvent evt,int param)
        int OnSetFocus(TEvent* evt, LPARAM param)
        {
            //重置工具条
            SetAgent();
@@ -56,21 +71,21 @@
        
            
        //命令发布函数
        int OnCmdDispatch(string comdid)
        int OnCmdDispatch(xstring comdid)
        {
            if(comdid=="xmImport")
            if(comdid==L"xmImport")
            {
                
                Doubleclick();
                return 1;
            }
            if(comdid=="xmClose")
            if(comdid==L"xmClose")
            {
                
                CloseWindow();
                return 1;
            }
            if(comdid=="xmSearch")
            if(comdid==L"xmSearch")
            {
                
                OnRetrieve(GoodsNo);
@@ -81,53 +96,54 @@
        
        int Doubleclick()
        {
            xaserverarg arg = GetParam();
            arg.AddArg("items","");
            string str = "";
            xaserverarg arg = GetArg();
            arg.AddArg(L"items",L"");
            xstring str = L"";
            int row =  dw_list.GetNextSelectRow(1);
            while(row > 0 && row <= dw_list.GetRowCount())
            {
                msxml::IXMLDOMElement ele = dw_list.GetRowElement(row);
                KXMLDOMElement ele = dw_list.GetRowElement(row);
            
                str += ele.xml;
                str += ele.xml();
                row =  dw_list.GetNextSelectRow(row + 1);
            }
            if(str != "")
                arg.AddArg("items","<data>"+str+"</data>");
            if(str != L"")
                arg.AddArg(L"items",L"<data>"+str+L"</data>");
            trace(str);
            arg.AddArg("action","ok");
            arg.AddArg(L"action",L"ok");
            CloseWindow();
            return 1;
        }
        
        //命令处理事件
        int OnXCommand(ref TXCommandEvent evt,int param)
        int OnXCommand(TEvent* evt, LPARAM param)
        {
            return OnCmdDispatch(evt.pStrID);
            return OnCmdDispatch(evt->xcommand.pStrID);
        }
            
        int OnAttachEvent()
        {
            //绑定工具条点击事件
            AttachEvent("WM_XCOMMAND",OnXCommand);
            AttachEvent(L"WM_XCOMMAND", (FEvent)&CustomerItemNoList::OnXCommand);
            //获取焦点事件,用于重置工具条
            AttachEvent("WM_SETFOCUS",OnSetFocus);
            AttachEvent("dw_list","DWV_DOUBLECLICKED",Doubleclick);
            AttachEvent(L"WM_SETFOCUS", (FEvent)&CustomerItemNoList::OnSetFocus);
            AttachEvent(L"dw_list",L"DWV_DOUBLECLICKED", (FEvent)&CustomerItemNoList::Doubleclick);
            return 1;
            
        }
        
        
        int  OnRetrieve(string GoodsNo)
        int  OnRetrieve(xstring GoodsNo)
        {
            xml x = new xml;
            x.setNativePointer(xml::CreateInstance());
            xaserverarg arg = new xaserverarg;
            arg.setNativePointer(arg.CreateInstance());
            arg.AddArg("GoodsNo",GoodsNo);
            xml x ;
            
            if (getUrl("/sale/data/ProductLibrary3/GetCustomerItemNoList",arg.GetString(),x)!=1)
            xaserverarg arg ;
            arg.AddArg(L"GoodsNo",GoodsNo);
            if (getUrl(L"/sale/data/ProductLibrary3/GetCustomerItemNoList",arg.GetString(),x)!=1)
            {
                trace(x.GetXmlDoc().text);
                trace(x.text());
                return -1;
            }else    
            {
@@ -141,15 +157,16 @@
            
        int onload()
        {
            dw_list = GetControl("dw_list");
            dw_list.openUrl("/sale/view/Quote3/template/Quote/CustomerItemNoList");
            SetArg();
            dw_list = GetControl(L"dw_list");
            dw_list.openUrl(L"/sale/view/Quote3/template/Quote/CustomerItemNoList");
        
            
            if(GetParam())
            if(GetWinParam())
            {
                xaserverarg arg = GetParam();
                GoodsNo=arg.GetArgString("GoodsNo");
                OnRetrieve(arg.GetArgString("GoodsNo"));
                xaserverarg arg = GetArg();
                GoodsNo=arg.GetArgString(L"GoodsNo");
                OnRetrieve(arg.GetArgString(L"GoodsNo"));
            }
            OnRetrieve(GoodsNo);
            OnAttachEvent();    
@@ -162,5 +179,4 @@
            
            return 1;
        }        
    };
]
    };
jrj/project/business/Quote/Product.Select.cpp
@@ -1,17 +1,29 @@
use "xcontrol.vframe.vbusiness.vd"
use "xbase.vframe.vbusiness.vd"
use "multi.vbind.vbind.wface.vd"
use "productlibrary.vd"
use "shoppingcart.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 ProductSelectWin :  public xwin
#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
#include "viewobject/view.base.hpp"
using xml = KXMLDOMDocument;
class __declspec(dllexport)  ProductSelectWin :  public xwin
    {
    public:
        int hObject = 0;
        string CustomerID;
        string m_customer;
        xstring CustomerID;
        xstring m_customer;
    public:
        ProductSelectWin(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd) {}
    public:
        static ProductSelectWin* CreateInstance(void* implPtr, void* hWnd)
        {
            ProductSelectWin* pWin = new ProductSelectWin(implPtr, (HWND)hWnd);
            return pWin;
        }
        //产品库产品列表
        xdwgrid    dw_list;
        //购物车产品列表
@@ -26,24 +38,24 @@
        xnode    m_agentNode;    //Agent Condition
        xtreeview tv_folder;    
        string     agentFor;
        xstring     agentFor;
    
        string    impStr;
        xstring    impStr;
    
        int FillGoodsCarList()
        {
            xcombobox xc = GetControl("frame:cbx_goodscar");
            xcombobox xc = GetControl(L"frame:cbx_goodscar");
            if(!xc) return 0;
            xml  x = ShoppingCartView::GetRoleList(CustomerID);    
            if(!x) return 0;
            xc.SetText("==选择购物车==");
            xc.SetText(L"==选择购物车==L");
                
            msxml::IXMLDOMNodeList nlist = x.GetXmlDoc().SelectNodes("//item");
            int len = nlist.length;
            KXMLDOMNodeList nlist = x.selectNodes(L"//item");
            int len = nlist.length();
            for (int i = 0; i < len; i++)
            {    
                msxml::IXMLDOMElement e = nlist.item(i);
                string name = e.getAttribute("name");
                KXMLDOMElement e = nlist.item(i);
                xstring name = e.getAttribute(L"name");
                xcombobox::AddItem(xc.GetId(),name);                
            }
            return 1;
@@ -51,106 +63,106 @@
        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;
        }
        msxml::IXMLDOMElement OnGetCarListRowElement(int row=0)
        KXMLDOMElement OnGetCarListRowElement(int row=0)
        {
            if(row < 1) row = dwc_list.GetRow();
            if(row < 1 || row > dwc_list.GetRowCount()) return 0;
            msxml::IXMLDOMElement e = g_xdoc_shoppingcart.getRowElement("data/Item", row);
            KXMLDOMElement e = g_xdoc_shoppingcart.getRowElement(L"data/Item", row);
            return e;
        }    
    
        int OnShowImage(string skuid)
        int OnShowImage(xstring skuid)
        {
            imageview im = GetControl("im1");
            imageview im = GetControl(L"im1");
            //im.RemoveImage();
            im.ResetEx();
            
            xml xp=new xml;
            xp.setNativePointer(xml::CreateInstance());
            xaserverarg arg_pic=new xaserverarg;
            xaserverarg arg_pic;
            arg_pic.setNativePointer(arg_pic.CreateInstance());    
            arg_pic.AddArg("SKUID",skuid);
            if(url::get("/sale/data/ProductLibrary3/pref/picture/imagelistSKU",arg_pic.GetString(),xp)!=1)
            arg_pic.AddArg(L"SKUID",skuid);
            if(xurl::get(L"/sale/data/ProductLibrary3/pref/picture/imagelistSKU",arg_pic.GetString(),xp)!=1)
            {
                trace("xxx",xp.GetXml());
                trace(L"xxx",xp.xml());
            }else
            {
                //imageElement = xp.GetXmlDoc().documentElement;
                msxml::IXMLDOMNodeList  nlistp=  xp.GetXmlDoc().selectNodes("ImageList/image");
                int lenp = nlistp.length;
                //imageElement = xp.documentElement();
                KXMLDOMNodeList  nlistp=  xp.selectNodes(L"ImageList/image");
                int lenp = nlistp.length();
                for(int ip=0;ip<lenp;ip++)
                {
                    msxml::IXMLDOMElement xitem = nlistp.item(ip);
                    string picname = xitem.selectSingleNode("PicPath").text;
                    string goodno = xitem.selectSingleNode("GoodsNo").text;
                    if(picname == "/business/products/Thumbs//")
                        picname = "/business/products/Thumbs/00/00000000-0000-0000-0000-000000000000.jpg";
                    im.AddImages(picname, "");
                    KXMLDOMElement xitem = nlistp.item(ip);
                    xstring picname = xitem.selectSingleNode(L"PicPath").text();
                    xstring goodno = xitem.selectSingleNode(L"GoodsNo").text();
                    if(picname == L"/business/products/Thumbs//")
                        picname = L"/business/products/Thumbs/00/00000000-0000-0000-0000-000000000000.jpg";
                    im.AddImages(picname, L"");
                }
                im.Redraw();
                //win32::SendMessage(im.GetId(),0x000f,0,1);
                //win32::InvalidateRect(im.GetId(),cast(0 as ref xrect),true);
                //SendMessage(im.GetId(),0x000f,0,1);
                //InvalidateRect(im.GetId(),cast(0 as ref xrect),true);
            }
            return 1;
        }
                    
        int OnShowImage(string skuid, string customerItemNo)
        int OnShowImage(xstring skuid, xstring customerItemNo)
        {
            imageview im = GetControl("im1");
            imageview im = GetControl(L"im1");
            //im.RemoveImage();
            im.ResetEx();
            
            xml xp=new xml;
            xp.setNativePointer(xml::CreateInstance());
            xaserverarg arg_pic=new xaserverarg;
            arg_pic.setNativePointer(arg_pic.CreateInstance());
            arg_pic.AddArg("SKUID",skuid);
            arg_pic.AddArg("CustomerID",m_customer);
            arg_pic.AddArg("CustomerItemNo",customerItemNo);
            
            if(url::get("/sale/data/ProductLibrary3/pref/picture/customer/imagelistSKU",arg_pic.GetString(),xp)!=1)
            xaserverarg arg_pic;
            arg_pic.setNativePointer(arg_pic.CreateInstance());
            arg_pic.AddArg(L"SKUID",skuid);
            arg_pic.AddArg(L"CustomerID",m_customer);
            arg_pic.AddArg(L"CustomerItemNo",customerItemNo);
            if(xurl::get(L"/sale/data/ProductLibrary3/pref/picture/customer/imagelistSKU",arg_pic.GetString(),xp)!=1)
            {
                trace("error:" + xp.GetXml());
                trace(L"error:" + xp.xml());
            }else
            {
                //imageElement = xp.GetXmlDoc().documentElement;
                msxml::IXMLDOMNodeList  nlistp=  xp.GetXmlDoc().selectNodes("ImageList/image");
                int lenp = nlistp.length;
                //imageElement = xp.documentElement();
                KXMLDOMNodeList  nlistp=  xp.selectNodes(L"ImageList/image");
                int lenp = nlistp.length();
                for(int ip=0;ip<lenp;ip++)
                {
                    msxml::IXMLDOMElement xitem = nlistp.item(ip);
                    string picname = xitem.selectSingleNode("PicPath").text;
                    string goodno = xitem.selectSingleNode("GoodsNo").text;
                    if(picname == "/business/products/Thumbs//")
                        picname = "/business/products/Thumbs/00/00000000-0000-0000-0000-000000000000.jpg";
                    im.AddImages(picname, "");
                    KXMLDOMElement xitem = nlistp.item(ip);
                    xstring picname = xitem.selectSingleNode(L"PicPath").text();
                    xstring goodno = xitem.selectSingleNode(L"GoodsNo").text();
                    if(picname == L"/business/products/Thumbs//")
                        picname = L"/business/products/Thumbs/00/00000000-0000-0000-0000-000000000000.jpg";
                    im.AddImages(picname, L"");
                }
                im.Redraw();
            }
@@ -161,27 +173,27 @@
        {
            int hItem = tv_folder.GetSelectedItem();
            int hTopItem = LookupTopFolder(hItem);
            string name = tv_folder.GetItemLabel(hTopItem);
            xstring name = tv_folder.GetItemLabel(hTopItem);
            msxml::IXMLDOMElement e= tv_folder.GetItemData(hItem);
            string guid =  e.getAttribute("guid");
            if(guid=="") return 1;
            xaserverarg arg = new xaserverarg;
            arg.setNativePointer(arg.CreateInstance());
            arg.AddArg("guid", e.getAttribute("guid"));
            if(name=="个人产品")
                arg.AddArg("FolderID", e.getAttribute("guid"));
            KXMLDOMElement e= tv_folder.GetItemData(hItem);
            xstring guid =  e.getAttribute(L"guid");
            if(guid==L"") return 1;
            xaserverarg arg ;
            arg.AddArg(L"guid", e.getAttribute(L"guid"));
            if(name==L"个人产品")
                arg.AddArg(L"FolderID", e.getAttribute(L"guid"));
            else
                arg.AddArg("CategoryID", e.getAttribute("guid"));
            string No = e.getAttribute("CategoryNo");
            if(No=="") No = e.getAttribute("no");
            string Name = e.getAttribute("CName");
            if(Name=="") Name = e.getAttribute("cname");
            arg.AddArg("No",No);
            arg.AddArg("CName",Name);
                arg.AddArg(L"CategoryID", e.getAttribute(L"guid"));
            xstring No = e.getAttribute(L"CategoryNo");
            if(No==L"") No = e.getAttribute(L"no");
            xstring Name = e.getAttribute(L"CName");
            if(Name==L"") Name = e.getAttribute(L"cname");
            arg.AddArg(L"No",No);
            arg.AddArg(L"CName",Name);
            int p = arg;
            OpenWindow("dev:xpage[Quick.Input.NewProduct.vx]",p);
            //if(arg.GetArgString("data.modify")=="1")RetrieveData();
            OpenWindow(L"dev:xpage[Quick.Input.NewProduct.vx]",p);
            //if(arg.GetArgString(L"data.modify")==L"1")RetrieveData();
            return 1;
        }
            
@@ -190,12 +202,12 @@
            ref DWNMHDR  hdr = trust(evt.pnmh as ref DWNMHDR);
            int row = hdr.row;
                
            htmlctrl xs = GetControl("html_detail");
            string html = makeHtml(row);
            htmlctrl xs = GetControl(L"html_detail");
            xstring html = makeHtml(row);
            xs.SetContent(html);
            xs.Redraw();
            
            string id = g_xdoc_product.getData(0,"data/Item",row,"@guid");
            xstring id = g_xdoc_product.getData(0,L"data/Item",row,L"@guid");
            OnShowImage(id);
                    
            return 1;
@@ -206,14 +218,14 @@
            ref DWNMHDR  hdr = trust(evt.pnmh as ref DWNMHDR);
            int row = hdr.row;
                
            htmlctrl xs = GetControl("html_detail");
            string html = makeGoodscarHtml(row);
            htmlctrl xs = GetControl(L"html_detail");
            xstring html = makeGoodscarHtml(row);
            xs.SetContent(html);
            xs.Redraw();
            if(m_customer)
            {
                string id = g_xdoc_shoppingcart.getData(0,"data/Item",row,"SKUID");
                string customerItemNo = g_xdoc_shoppingcart.getData(0,"data/Item",row,"CustomerItemNo");
                xstring id = g_xdoc_shoppingcart.getData(0,L"data/Item",row,L"SKUID");
                xstring customerItemNo = g_xdoc_shoppingcart.getData(0,L"data/Item",row,L"CustomerItemNo");
                OnShowImage(id,customerItemNo);
            }
                
@@ -225,8 +237,8 @@
            int IDOK = 1;
            int MB_OKCANCEL  = 1;
            int MB_ICONQUESTION  = 32;
            if(win32::MessageBox(GetHWND(),"确认删除指定的项,删除后将不能恢复?","提示",MB_OKCANCEL|MB_ICONQUESTION)!=IDOK) return 1;
            string id = g_xdoc_product.getData(0,"data/Item",row,"@guid");
            if(MessageBox(GetHWND(),L"确认删除指定的项,删除后将不能恢复?",L"提示",MB_OKCANCEL|MB_ICONQUESTION)!=IDOK) return 1;
            xstring id = g_xdoc_product.getData(0,L"data/Item",row,L"@guid");
        
            if(ProductLibraryView::DeleteItem(id)==1)    dw_list.DeleteRow(0);    
            return 1;
@@ -240,256 +252,256 @@
        
        int OnCkbCLick(ref TEvent evt,int p)
        {    
            xcheckbox cbx_1 = GetControl("frame:cbx1");
            xcheckbox cbx_1 = GetControl(L"frame:cbx1");
            int state=cbx_1.GetCheck(cbx_1.GetId());    
            return SetSelectState(dw_list,state);
        }
            
        int OnCkbCLick2(ref TEvent evt,int p)
        {    
            xcheckbox cbx_2 = GetControl("frame:cbx2");
            xcheckbox cbx_2 = GetControl(L"frame:cbx2");
            int state=cbx_2.GetCheck(cbx_2.GetId());        
            return SetSelectState(dwc_list,state);
        }    
            
        xml  GetGoodsPropList(string guid)
        xml  GetGoodsPropList(xstring guid)
        {
            xml x=new xml;
            x.setNativePointer(xml::CreateInstance());
            xaserverarg arg = new xaserverarg;
            arg.setNativePointer(arg.CreateInstance());
            arg.AddArg("guid", guid);
            if(url::get("/sale/data/SO/goods/goodsprop/list", arg.GetString(),x)!=1)
            xaserverarg arg ;
            arg.AddArg(L"guid", guid);
            if(xurl::get(L"/sale/data/SO/goods/goodsprop/list", arg.GetString(),x)!=1)
            {
                string error = x.GetXmlDoc().text;
                xstring error = x.text();
                alert(error);
            }
            return x;
        }
        
                    
        xml  GetGoodsPropListEx(string guid)
        xml  GetGoodsPropListEx(xstring guid)
        {
            xml x=new xml;
            x.setNativePointer(xml::CreateInstance());
            string fields="<data>";
            xstring fields=L"<data>";
            
            /*
            fields +="<field name='HighestPrice' label='最高价'/>";
            fields +="<field name='LowestPrice' label='最低价'/>";
            fields +=L"<field name='HighestPrice' label='最高价'/>";
            fields +=L"<field name='LowestPrice' label='最低价'/>";
            
            fields +="<field name='BulkPrice' label='散货价'/>";
            fields +="<field name='CardPrice' label='纸卡价'/>";
            fields +="<field name='BuyPrice' label='采购价'/>";
            fields +="<field name='SupplierID' label='货源'/>";
            fields +=L"<field name='BulkPrice' label='散货价'/>";
            fields +=L"<field name='CardPrice' label='纸卡价'/>";
            fields +=L"<field name='BuyPrice' label='采购价'/>";
            fields +=L"<field name='SupplierID' label='货源'/>";
            */
            
            fields +="<field name='Packing' label='包装方式'/>";
            fields +="<field name='PackingRate' label='每箱数量'/>";
            fields +="<field name='VolumeDesc' label='包装尺码'/>";
            fields +="<field name='GWPerPkg' label='毛重'/>";
            fields +="<field name='NWPerPkg' label='净重'/>";
            //fields +="<field name='DeveloperID' label='开发人员'/>";
            fields +="<field name='AttributeValue_1' label='产品属性'/>";
            //fields +="<field name='Remark' label='备注'/>";
            fields +=L"<field name='Packing' label='包装方式'/>";
            fields +=L"<field name='PackingRate' label='每箱数量'/>";
            fields +=L"<field name='VolumeDesc' label='包装尺码'/>";
            fields +=L"<field name='GWPerPkg' label='毛重'/>";
            fields +=L"<field name='NWPerPkg' label='净重'/>";
            //fields +=L"<field name='DeveloperID' label='开发人员'/>";
            fields +=L"<field name='AttributeValue_1' label='产品属性'/>";
            //fields +=L"<field name='Remark' label='备注'/>";
            
            fields += "</data>";
            x.LoadXml(fields);
            fields += L"</data>";
            x.loadXML(fields);
            
            return x;
        }
            
        string makeHtml(int row)
        xstring makeHtml(int row)
        {
            string id = g_xdoc_product.getData(0,"data/Item",row,"@guid");
            xstring id = g_xdoc_product.getData(0,L"data/Item",row,L"@guid");
            xml x = GetGoodsPropList(id);
            xml x1 = GetGoodsPropListEx(id);
            
            string html="<html><style> .text{ font-weight:400} .label { font-weight:400;}</style><body style='margin:2;background-color1:#ccdccc none #f0f0f0 none'>";
            html += "<div ><span style='font-weight:700;width:50;font-size:10pt'  >编号:</span><span  style='width:90;font-size:10pt'>" + dw_list.GetItemString(row,"No")+
                        "</span> <span style='font-weight:700;width:50;font-size:10pt' >类项:</span><span  style='width:90;font-size:10pt'>" + dw_list.GetItemString(row,"RefNo")+
            xstring html=L"<html><style> .text(){ font-weight:400} .label { font-weight:400;}</style><body style='margin:2;background-color1:#ccdccc none #f0f0f0 none'>";
            html += L"<div ><span style='font-weight:700;width:50;font-size:10pt'  >编号:</span><span  style='width:90;font-size:10pt'>" + dw_list.GetItemString(row,L"No")+
                        "</span> <span style='font-weight:700;width:50;font-size:10pt' >类项:</span><span  style='width:90;font-size:10pt'>" + dw_list.GetItemString(row,L"RefNo")+
                        "</span></div>";
            html +=  "<div ><span style='font-weight:700;width:50;font-size:10pt'  >货号:</span><span  style='width:90;font-size:10pt'>" + dw_list.GetItemString(row,"GoodsNo")+
            html +=  L"<div ><span style='font-weight:700;width:50;font-size:10pt'  >货号:</span><span  style='width:90;font-size:10pt'>" + dw_list.GetItemString(row,L"GoodsNo")+
                        "</span></div>" ;
            html +=  "<div ><span style='font-weight:700;width:50;font-size:10pt'  >品名:</span><span  style='width:90;font-size:10pt'>" + dw_list.GetItemString(row,"CName")+
            html +=  L"<div ><span style='font-weight:700;width:50;font-size:10pt'  >品名:</span><span  style='width:90;font-size:10pt'>" + dw_list.GetItemString(row,L"CName")+
                        "</span></div>" ;
            if(dw_list.GetItemString(row,"CSpec")!="")
                html +=  "<div ><span style='font-weight:700;width:50;font-size:10pt'  >规格:</span><span  style='width:90;font-size:10pt'>" + dw_list.GetItemString(row,"CSpec")+
            if(dw_list.GetItemString(row,L"CSpec")!=L"")
                html +=  L"<div ><span style='font-weight:700;width:50;font-size:10pt'  >规格:</span><span  style='width:90;font-size:10pt'>" + dw_list.GetItemString(row,L"CSpec")+
                            "</span></div>" ;
            
            msxml::IXMLDOMNodeList fieldsEx = x1.GetXmlDoc().selectNodes("data/field");
            string ls_detail="";
            string ls_item ="";
            string name;
            string label;
            int len = fieldsEx.length;
            KXMLDOMNodeList fieldsEx = x1.selectNodes(L"data/field");
            xstring ls_detail=L"";
            xstring ls_item =L"";
            xstring name;
            xstring label;
            int len = fieldsEx.length();
            int i= 0;
            
            for(i=0;i<len; true)
            {
                int cnt  = 0;
                ls_item = "";
                ls_item = L"";
                while(cnt < 2)
                {
                    name = fieldsEx.item(i).selectSingleNode("@name").text;
                    label  = fieldsEx.item(i).selectSingleNode("@label").text;
                    ls_item += "<td>" + label + "</td>" + "<td style='text-align:center'>" + g_xdoc_product.getData(0,"data/Item",row,name) + "</td>" ;
                    name = fieldsEx.item(i).selectSingleNode(L"@name").text();
                    label  = fieldsEx.item(i).selectSingleNode(L"@label").text();
                    ls_item += L"<td>" + label + L"</td>" + L"<td style='text-align:center'>" + g_xdoc_product.getData(0,L"data/Item",row,name) + L"</td>" ;
                    cnt++;
                    i++;
                    if(i ==len)break;
                }
                ls_detail += "<tr>" + ls_item + "</tr>";
                ls_detail += L"<tr>" + ls_item + L"</tr>";
            }
            html +=  "<div style='margin-left:8px;margin-right:16px;'>" +
                        +"<table><colgroup span='1' width='70'/><colgroup span='1' width='120'/><colgroup span='1' width='70'/><colgroup span='1' width='120'/>"
            html +=  L"<div style='margin-left:8px;margin-right:16px;'>" +
                        +L"<table><colgroup span='1' width='70'/><colgroup span='1' width='120'/><colgroup span='1' width='70'/><colgroup span='1' width='120'/>"
                        + ls_detail
                        +"</table>"
                        +"</div>" ;
                        +L"</table>"
                        +L"</div>" ;
                        
            string ls_star="";
            msxml::IXMLDOMNodeList fields  = x.GetXmlDoc().selectNodes("data/field");
            len = fields.length;
            xstring ls_star=L"";
            KXMLDOMNodeList fields  = x.selectNodes(L"data/field");
            len = fields.length();
            
            ls_detail = "";
            ls_detail = L"";
            if(len > 0) 
                html +=  "<div ><span style='font-weight:700;width:50;font-size:10pt'  >技术要求:</span></div>" ;
                html +=  L"<div ><span style='font-weight:700;width:50;font-size:10pt'  >技术要求:</span></div>" ;
            for(i=0;i<len; true)
            {
                ls_item="";
                ls_item=L"";
                
                int count = 0;
                while(count < 2)
                {
                    name = fields.item(i).selectSingleNode("@name").text;
                    label  = fields.item(i).selectSingleNode("@label").text;
                    name = fields.item(i).selectSingleNode(L"@name").text();
                    label  = fields.item(i).selectSingleNode(L"@label").text();
                
                    if(name=="QualityTerm" || name=="PackTerm" || label=="质量" || label=="包装质量" || label=="技术要求")
                    if(name==L"QualityTerm" || name==L"PackTerm" || label==L"质量" || label==L"包装质量" || label==L"技术要求")
                    {
                        i++;
                        if(i >= len)count = 2;
                        continue;
                    }
                    else if(g_xdoc_product.getData(0,"data/Item",row,name)=="")
                    else if(g_xdoc_product.getData(0,L"data/Item",row,name)==L"")
                    {
                        msxml::IXMLDOMNodeList options = fields.item(i).selectNodes("item");
                        int tlen = options.length;
                        string terms = "" ;
                        KXMLDOMNodeList options = fields.item(i).selectNodes(L"item");
                        int tlen = options.length();
                        xstring terms = L"" ;
                        for(int k=0; k<tlen; k++)
                        {
                            if(options.item(k).text)
                            if(options.item(k).text())
                            {
                                if(k>0) terms += ", ";
                                terms += "[" + options.item(k).text +"]";
                                if(k>0) terms += L", L";
                                terms += L"[" + options.item(k).text() +L"]";
                            }
                        }
                        ls_star += "<div ><span style='font-weight:700;width:50;font-size:10pt'  >" + label +"*:</span><span  style='width:90;font-size:10pt'>" + terms + "</span></div>" ;
                        ls_star += L"<div ><span style='font-weight:700;width:50;font-size:10pt'  >" + label +L"*:</span><span  style='width:90;font-size:10pt'>" + terms + L"</span></div>" ;
                    }else
                    {
                        ls_item = "<td>" + label + "</td>" + "<td>" + g_xdoc_product.getData(0,"data/Item",row,name) + "</td>" ;
                        ls_item = L"<td>" + label + L"</td>" + L"<td>" + g_xdoc_product.getData(0,L"data/Item",row,name) + L"</td>" ;
                        count++;
                    }
                    i++;
                    if(i >= len)count = 2;
                }
                ls_item = "<tr>" + ls_item + "</tr>";
                ls_item = L"<tr>" + ls_item + L"</tr>";
                ls_detail += ls_item;
            }
            
            html +=  "<div style='margin-left:8px;margin-right:16px;'>" +
                        +"<table><colgroup span='1' width='70'/><colgroup span='1' width='120'/><colgroup span='1' width='70'/><colgroup span='1' width='120'/>"
            html +=  L"<div style='margin-left:8px;margin-right:16px;'>" +
                        +L"<table><colgroup span='1' width='70'/><colgroup span='1' width='120'/><colgroup span='1' width='70'/><colgroup span='1' width='120'/>"
                        + ls_detail
                        +"</table>"
                        +"</div>" ;
            if(dw_list.GetItemString(row,"QualityTerm")!="")
                        +L"</table>"
                        +L"</div>" ;
            if(dw_list.GetItemString(row,L"QualityTerm")!=L"")
            {
                html +=  "<div style='height:12px'/>";
                html +=  "<div ><span style='font-weight:700;width:50;font-size:10pt'  >质量:</span></div>" ;
                html +=  "<div ><span style='margin-left:8px;margin-right:16px;font-weight:400;font-size:10pt'  >" + dw_list.GetItemString(row,"QualityTerm") +  "</span></div>" ;
                html +=  L"<div style='height:12px'/>";
                html +=  L"<div ><span style='font-weight:700;width:50;font-size:10pt'  >质量:</span></div>" ;
                html +=  L"<div ><span style='margin-left:8px;margin-right:16px;font-weight:400;font-size:10pt'  >" + dw_list.GetItemString(row,L"QualityTerm") +  L"</span></div>" ;
            }
            
            if(dw_list.GetItemString(row,"PackTerm")!="")
            if(dw_list.GetItemString(row,L"PackTerm")!=L"")
            {
                html +=  "<div style='height:12px'/>";
                html +=  "<div ><span style='font-weight:700;width:50;font-size:10pt'  >包装质量:</span></div>" ;
                html +=  "<div ><span style='margin-left:8px;margin-right:16px;font-weight:400;font-size:10pt' >" + dw_list.GetItemString(row,"PackTerm") +  "</span></div>" ;
                html +=  L"<div style='height:12px'/>";
                html +=  L"<div ><span style='font-weight:700;width:50;font-size:10pt'  >包装质量:</span></div>" ;
                html +=  L"<div ><span style='margin-left:8px;margin-right:16px;font-weight:400;font-size:10pt' >" + dw_list.GetItemString(row,L"PackTerm") +  L"</span></div>" ;
            }
            
            if(g_xdoc_product.getData(0,"data/Item",row,"Remark") != "" && id == "23A8BBA2-DEF1-4C00-978E-646151A6082E")
            if(g_xdoc_product.getData(0,L"data/Item",row,L"Remark") != L"" && id == L"23A8BBA2-DEF1-4C00-978E-646151A6082E")
            {
                html +=  "<div ><span style='font-weight:700;width:50;font-size:10pt'  >备注:</span></div>" ;
                html +=  "<div ><span style='margin-left:8px;margin-right:16px;font-weight:400;font-size:10pt' >" + g_xdoc_product.getData(0,"data/Item",row,"Remark") +  "</span></div>" ;
                html +=  L"<div ><span style='font-weight:700;width:50;font-size:10pt'  >备注:</span></div>" ;
                html +=  L"<div ><span style='margin-left:8px;margin-right:16px;font-weight:400;font-size:10pt' >" + g_xdoc_product.getData(0,L"data/Item",row,L"Remark") +  L"</span></div>" ;
            }
            html +=  "<div style='height:24px'/>";
            html +=  L"<div style='height:24px'/>";
            
            //星标项
            html += ls_star;
            //显示图片            
            /*string picname = "1FA9E331-F95C-4E51-B80C-73FB9B911D8D.jpg";//dw_list.GetItemString(row,"ImgName"); //ItemID+".jpg";
            string str = picname.mid(0,2);
            /*xstring picname = L"1FA9E331-F95C-4E51-B80C-73FB9B911D8D.jpg";//dw_list.GetItemString(row,L"ImgName"); //ItemID+L".jpg";
            xstring str = picname.mid(0,2);
            str = str.upper();
            string serversrc ="http://192.168.7.241:1001/business/products/chanpin/"+str+"/"+picname;
            html +=  "<div ><span style='font-weight:700;width:50;font-size:10pt'  >ͼƬ:</span>";
            html +=  "<control visible='layer' controlclass='ximage'  data='' src='"+ serversrc +"'/></div>";
            xstring serversrc =L"http://192.168.7.241:1001/business/products/chanpin/"+str+L"/"+picname;
            html +=  L"<div ><span style='font-weight:700;width:50;font-size:10pt'  >ͼƬ:</span>";
            html +=  L"<control visible='layer' controlclass='ximage'  data='' src='"+ serversrc +L"'/></div>";
            */
            html += "</body></html>";
            html += L"</body></html>";
            return html;
        }
        
        string makeGoodscarHtml(int row)
        xstring makeGoodscarHtml(int row)
        {
            string No = dwc_list.GetItemString(row,"RefNo");//获取属性值id
            xstring No = dwc_list.GetItemString(row,L"RefNo");//获取属性值id
            xml x = GetGoodsPropList(No);
            
            string html="<html><style> .text{ font-weight:400} .label { font-weight:400;}</style><body style='margin:2;background-color1:#ccdccc none #f0f0f0 none'>";
            html += "<div ><span style='font-weight:700;width:50;font-size:10pt'  >编号:</span><span  style='width:90;font-size:10pt'>" + dwc_list.GetItemString(row,"No")+
            xstring html=L"<html><style> .text(){ font-weight:400} .label { font-weight:400;}</style><body style='margin:2;background-color1:#ccdccc none #f0f0f0 none'>";
            html += L"<div ><span style='font-weight:700;width:50;font-size:10pt'  >编号:</span><span  style='width:90;font-size:10pt'>" + dwc_list.GetItemString(row,L"No")+
                        "</span></div>";
            html +=  "<div ><span style='font-weight:700;width:50;font-size:10pt'  >品名:</span><span  style='width:90;font-size:10pt'>" + dwc_list.GetItemString(row,"CName")+
            html +=  L"<div ><span style='font-weight:700;width:50;font-size:10pt'  >品名:</span><span  style='width:90;font-size:10pt'>" + dwc_list.GetItemString(row,L"CName")+
                        "</span></div>" ;
            html +=  "<div ><span style='font-weight:700;width:50;font-size:10pt'  >规格:</span><span  style='width:90;font-size:10pt'>" + dwc_list.GetItemString(row,"CSpec")+
            html +=  L"<div ><span style='font-weight:700;width:50;font-size:10pt'  >规格:</span><span  style='width:90;font-size:10pt'>" + dwc_list.GetItemString(row,L"CSpec")+
                        "</span></div>" ;
            
            msxml::IXMLDOMNodeList fields = x.GetXmlDoc().selectNodes("data/field");
            int len = fields.length;
            html += "<table>" +
            KXMLDOMNodeList fields = x.selectNodes(L"data/field");
            int len = fields.length();
            html += L"<table>" +
                "<colgroup span='1' width='80'/>" +
                "<colgroup span='1' width='120'/>" +
                "<colgroup span='1' width='420'/>" ;
            html += "<tr>" ;
            html += "<td style='text-align:center'>编号</td><td style='text-align:center'>项目</td><td style='text-align:center'>内容</td>" ;
            html +="</tr>";
            html += L"<tr>" ;
            html += L"<td style='text-align:center'>编号</td><td style='text-align:center'>项目</td><td style='text-align:center'>内容</td>" ;
            html +=L"</tr>";
            for(int i=0;i<len; i++)
            {
                string name = fields.item(i).selectSingleNode("@name").text;
                string label  = fields.item(i).selectSingleNode("@label").text;
                html += "<tr>" ;
                xstring name = fields.item(i).selectSingleNode(L"@name").text();
                xstring label  = fields.item(i).selectSingleNode(L"@label").text();
                html += L"<tr>" ;
                if(i==0)
                    html += "<td rowspan='" + len.toString() + "'>" + No + "</td><td >"+ label +  "</td><td >"+"</td>" ;
                    html += L"<td rowspan='" + len.toString() + L"'>" + No + L"</td><td >"+ label +  L"</td><td >"+L"</td>" ;
                else
                    html += "<td >"+ label +  "</td><td >"+ g_xdoc_shoppingcart.getData(0,"data/Item",row,name)+"</td>" ;
                html +="</tr>";
                    html += L"<td >"+ label +  L"</td><td >"+ g_xdoc_shoppingcart.getData(0,L"data/Item",row,name)+L"</td>" ;
                html +=L"</tr>";
            }
            
            html += "<tr>" ;
            html += "<td rowspan='3'>" + g_xdoc_shoppingcart.getData(0,"data/Item",row,"PackCode") + "</td><td >包装方式</td><td >"+
                 g_xdoc_shoppingcart.getData(0,"data/Item",row,"CPack") + "</td>" ;
            html +="</tr>";
            html += "<tr height='48'>" ;
            html += "<td >包装要求</td><td >"+ g_xdoc_shoppingcart.getData(0,"data/Item",row,"PackQualityTerm")+"</td>" ;
            html +="</tr>";
            html += "<tr>" ;
            html += "<td >侧唛</td><td ></td>" ;
            html +="</tr>";
            html += L"<tr>" ;
            html += L"<td rowspan='3'>" + g_xdoc_shoppingcart.getData(0,L"data/Item",row,L"PackCode") + L"</td><td >包装方式</td><td >"+
                 g_xdoc_shoppingcart.getData(0,L"data/Item",row,L"CPack") + L"</td>" ;
            html +=L"</tr>";
            html += L"<tr height='48'>" ;
            html += L"<td >包装要求</td><td >"+ g_xdoc_shoppingcart.getData(0,L"data/Item",row,L"PackQualityTerm")+L"</td>" ;
            html +=L"</tr>";
            html += L"<tr>" ;
            html += L"<td >侧唛</td><td ></td>" ;
            html +=L"</tr>";
    
            html += "<tr height='72'>" ;
            html += "<td>" + g_xdoc_shoppingcart.getData(0,"data/Item",row,"QualityCode") + "</td><td >质量要求</td><td >"+
                 g_xdoc_shoppingcart.getData(0,"data/Item",row,"QualityTerm") + "</td>" ;
            html +="</tr>";
            html += L"<tr height='72'>" ;
            html += L"<td>" + g_xdoc_shoppingcart.getData(0,L"data/Item",row,L"QualityCode") + L"</td><td >质量要求</td><td >"+
                 g_xdoc_shoppingcart.getData(0,L"data/Item",row,L"QualityTerm") + L"</td>" ;
            html +=L"</tr>";
            html +="</table>";
            html +=L"</table>";
            html += "</body></html>";
            html += L"</body></html>";
            return html;
        }        
@@ -498,11 +510,11 @@
            if(!hObject ) return 1;
            
            int rw = 0;
            string ls_nos = "ImportXml:";
            xstring ls_nos = L"ImportXml:";
            
            if (impStr=="")
            if (impStr==L"")
            {
                alert("请选择商品!");
                alert(L"请选择商品!");
                return 1;
            }
            ls_nos += impStr;
@@ -511,10 +523,10 @@
            dwc_list.Redraw();
            dw_list.SelectRow(0,false);
            dw_list.Redraw();
            impStr ="";
            impStr =L"";
            //alert(ls_nos);
            win32::SendMessage(hObject,0x401,ls_nos,0);
            alert("转入完成");
            SendMessage(hObject,0x401,ls_nos,0);
            alert(L"转入完成");
                
            return 1;
        }
@@ -526,26 +538,26 @@
        }
                    
        //命令发布函数
        int OnCmdDispatch(string comdid)
        int OnCmdDispatch(xstring comdid)
        {
            int hCursor;
            string name="";
            if(comdid=="xmClose")
            xstring name=L"";
            if(comdid==L"xmClose")
            {
                CloseWindow();
                return 1;
            }
            else if(comdid=="xmImport")
            else if(comdid==L"xmImport")
            {
                OnImport();
                return 1;
            }
            else if(comdid=="xmAdd")
            else if(comdid==L"xmAdd")
            {
                ItemAdd();
                return 1;
            }
            else if(comdid=="xmSearch")
            else if(comdid==L"xmSearch")
            {
                OnSearch();
                return 1;
@@ -554,9 +566,9 @@
        }
        
        //命令处理事件
        int OnXCommand(ref TXCommandEvent evt,int param)
        int OnXCommand(TEvent* evt, LPARAM param)
        {
            return OnCmdDispatch(evt.pStrID);
            return OnCmdDispatch(evt->xcommand.pStrID);
        }
                
        //查找当前树项的顶级目录
@@ -568,19 +580,19 @@
        }
        
        //插入产品类项的子项
        int MakeGoodsFolderItem(int hItem, string sno)
        int MakeGoodsFolderItem(int hItem, xstring sno)
        {
            xml x = ProductLibraryView::GetTreeChildItems3(sno);
            if(!x) return 0;
            
            msxml::IXMLDOMNodeList nlist = x.GetXmlDoc().SelectNodes("//Item");
            int len = nlist.length;
            KXMLDOMNodeList nlist = x.selectNodes(L"//Item");
            int len = nlist.length();
            for (int i = 0; i < len; i++)
            {    
                msxml::IXMLDOMElement e = nlist.item(i);
                string name = e.getAttribute("CName");
                string no = e.getAttribute("CategoryNo");
                string label = no.trim() + " " + name;
                KXMLDOMElement e = nlist.item(i);
                xstring name = e.getAttribute(L"CName");
                xstring no = e.getAttribute(L"CategoryNo");
                xstring label = no.trim() + L" " + name;
                int h= tv_folder.InsertChildItem(hItem,label, trust(e as int),15);                
                tv_folder.SetItemChild(h,1);
@@ -589,40 +601,40 @@
        }    
        //插入新产品目录子项
        int MakeUserGoodsFolderItem(int hItem, string sno)
        int MakeUserGoodsFolderItem(int hItem, xstring sno)
        {
            xml x = ProductLibraryView::GetTreeUserChildItems3(sno);
            if(!x) return 0;
            
            msxml::IXMLDOMNodeList nlist = x.GetXmlDoc().SelectNodes("//Item");
            int len = nlist.length;
            KXMLDOMNodeList nlist = x.selectNodes(L"//Item");
            int len = nlist.length();
            for (int i = 0; i < len; i++)
            {    
                msxml::IXMLDOMElement e = nlist.item(i);
                string name = e.getAttribute("CName");
                string no = e.getAttribute("CategoryNo");
                string label = no.trim() + " " + name;
                KXMLDOMElement e = nlist.item(i);
                xstring name = e.getAttribute(L"CName");
                xstring no = e.getAttribute(L"CategoryNo");
                xstring label = no.trim() + L" " + name;
                int h= tv_folder.InsertChildItem(hItem,label, trust(e as int),15);                
                string child = e.getAttribute("Childs");
                if(child=="")
                xstring child = e.getAttribute(L"Childs");
                if(child==L"")
                    tv_folder.SetItemChild(h,1);
                else if(child !="0")
                else if(child !=L"0")
                    tv_folder.SetItemChild(h,1);
            }
            return 1;                
        }    
                
        //插入购物车项
        int ExpandCatChildFolder(int hItem, msxml::IXMLDOMElement ele ,int image)
        int ExpandCatChildFolder(int hItem, KXMLDOMElement ele ,int image)
        {
            msxml::IXMLDOMNodeList nlist = ele.SelectNodes("item");
            int len = nlist.length;
            KXMLDOMNodeList nlist = ele.selectNodes(L"item");
            int len = nlist.length();
            if(len > 0) tv_folder.SetItemChild(hItem,1);
            for (int i= 0; i < len; i++)
            {    
                msxml::IXMLDOMElement e = nlist.item(i);
                string name = e.getAttribute("name");
                KXMLDOMElement e = nlist.item(i);
                xstring name = e.getAttribute(L"name");
                int h = tv_folder.InsertChildItem(hItem,name, trust(e as int),image);
                ExpandCatChildFolder(h,e,35);
            }
@@ -630,16 +642,16 @@
        }
        int MakeGoodCarFolderItem(int hItem)
        {
            //trace("\r\nCustomerID:"+CustomerID);
            //trace(L"\r\nCustomerID:"+CustomerID);
            xml x = ShoppingCartView::GetRoleList(CustomerID);
            //if(x) alert(x.GetXml());
            //if(x) alert(x.xml());
            if(!x) return 0;
            msxml::IXMLDOMNodeList nlist = x.GetXmlDoc().SelectNodes("/data/item");
            int len = nlist.length;
            KXMLDOMNodeList nlist = x.selectNodes(L"/data/item");
            int len = nlist.length();
            for (int i = 0; i < len; i++)
            {    
                msxml::IXMLDOMElement e = nlist.item(i);
                string name = e.getAttribute("name");
                KXMLDOMElement e = nlist.item(i);
                xstring name = e.getAttribute(L"name");
                int h = tv_folder.InsertChildItem(hItem,name, trust(e as int),35);
                ExpandCatChildFolder(h,e,35);
            }
@@ -652,42 +664,42 @@
            ref NMTREEVIEW nmtv = evt.pnmh;
            int hItem = nmtv.itemNew.hItem;
            int hTopItem = LookupTopFolder(hItem);
            string name = tv_folder.GetItemLabel(hTopItem);
            xstring name = tv_folder.GetItemLabel(hTopItem);
            int child = tv_folder.GetChildItem(hItem);
            string no ="";
            msxml::IXMLDOMElement e;
            if(name == "公司库" && !child )
            xstring no =L"";
            KXMLDOMElement e;
            if(name == L"公司库" && !child )
            {    
                no ="";
                no =L"";
                if(hTopItem != hItem)
                {
                    e= tv_folder.GetItemData(hItem);
                    no = e.getAttribute("categoryid");
                    no = e.getAttribute(L"categoryid");
                }else
                {
                    e= tv_folder.GetItemData(hItem);
                    no = e.getAttribute("categoryid");
                    no = e.getAttribute(L"categoryid");
                }
                MakeGoodsFolderItem(hItem, no);                    
            }
            else if(name == "个人库" && !child )
            else if(name == L"个人库" && !child )
            {    
                no ="";
                no =L"";
                if(hTopItem != hItem)
                {
                    e= tv_folder.GetItemData(hItem);
                    no = e.getAttribute("categoryid");
                    no = e.getAttribute(L"categoryid");
                    MakeUserGoodsFolderItem(hItem, no);                    
                }
            }
            else if(name == "购物车" && !child )
            else if(name == L"购物车" && !child )
            {    
                if(hItem==hTopItem)MakeGoodCarFolderItem(hItem);                    
            }
            return 1;
        }
        
        int ResetAgent(string agentAsk)
        int ResetAgent(xstring agentAsk)
        {
            if(agentFor != agentAsk)
            {
@@ -702,87 +714,87 @@
        {
            while(true)
            {
                msxml::IXMLDOMElement e1 = cast(tv_folder.GetItemData(hItem) as msxml::IXMLDOMElement);
                string str = e1.getAttribute("no");
                if(str.find("Customer:")>=0) return hItem;
                KXMLDOMElement e1 = cast(tv_folder.GetItemData(hItem) as KXMLDOMElement);
                xstring str = e1.getAttribute(L"no");
                if(str.find(L"Customer:")>=0) return hItem;
                hItem = tv_folder.GetParentItem(hItem);
                if(hItem==0) break;
            }
            return 0;
        }
        
        string LookupCustomer(int hItem)
        xstring LookupCustomer(int hItem)
        {
            hItem = LookupCustomerFolder(hItem);
            if(hItem==0) return "";
            msxml::IXMLDOMElement e1 = cast(tv_folder.GetItemData(hItem) as msxml::IXMLDOMElement);
            string str = e1.getAttribute("no");
            return str.mid("Customer:".length(),9999);
            KXMLDOMElement e1 = cast(tv_folder.GetItemData(hItem) as KXMLDOMElement);
            xstring str = e1.getAttribute(L"no");
            return str.mid(L"Customer:".length()(),9999);
        }
    
        int RetrieveItem(int hItem)
        {
            int hTopItem = LookupTopFolder(hItem);
            string name = tv_folder.GetItemLabel(hTopItem);
            string selectname = tv_folder.GetItemLabel(hItem);
            imageview im = GetControl("im1");
            m_customer = "";
            xcontrol query = GetControl("sl_search");
            string queryString = query.GetText();
            xstring name = tv_folder.GetItemLabel(hTopItem);
            xstring selectname = tv_folder.GetItemLabel(hItem);
            imageview im = GetControl(L"im1");
            m_customer = L"";
            xcontrol query = GetControl(L"sl_search");
            xstring queryString = query.GetText();
            
            if(name == "购物车")
            if(name == L"购物车")
            {
                if(agentFor !="goodscar")SwitchLayer("goodscarsheet","sheetframe");
                ResetAgent("goodscar");
                if(agentFor !=L"goodscar")SwitchLayer(L"goodscarsheet",L"sheetframe");
                ResetAgent(L"goodscar");
                if(selectname !=name)
                {
                    msxml::IXMLDOMElement e1 = cast(tv_folder.GetItemData(hItem) as msxml::IXMLDOMElement);
                    string str = e1.getAttribute("no");
                    KXMLDOMElement e1 = cast(tv_folder.GetItemData(hItem) as KXMLDOMElement);
                    xstring str = e1.getAttribute(L"no");
                    
                    trace("\r\n-------"+str+"--------"+queryString);
                    trace(L"\r\n-------"+str+L"--------"+queryString);
                
                    if(str=="Supplier")
                    if(str==L"Supplier")
                    {
                        return 1;
                    }
                    //alert(str);
                    if(str.find("Customer:")==0 || str.find("SO:")==0 || str.find("Purcherex:")==0|| str.find("Purcher:")==0 || str.find("Supplier:")==0|| str.find("Enquiry:")==0)
                    if(str.find(L"Customer:")==0 || str.find(L"SO:")==0 || str.find(L"Purcherex:")==0|| str.find(L"Purcher:")==0 || str.find(L"Supplier:")==0|| str.find(L"Enquiry:")==0)
                    {
                        m_customer = LookupCustomer(hItem);
                        if(str.find("Customer:")==0)
                        if(str.find(L"Customer:")==0)
                        {
                            dwc_list.openUrl("/sale/view/ProductLibrary/template/cart/goodscustomerlist");
                            dwc_list.openUrl(L"/sale/view/ProductLibrary/template/cart/goodscustomerlist");
                        }
                        else
                        {
                            dwc_list.openUrl("/sale/view/ProductLibrary/template/cart/goodssolist");
                            dwc_list.openUrl(L"/sale/view/ProductLibrary/template/cart/goodssolist");
                        }
                        dwc_list.Reset();
                        dwc_list.SetReadOnly(true);
                        dwc_list.SetColumnState("CurrencyCode",false);
                        dwc_list.SetColumnState(L"CurrencyCode",false);
                        //alert(str);
                        if(queryString=="")
                        if(queryString==L"")
                            g_xdoc_shoppingcart.Retrieve(ShoppingCartView::GetGoodsList(str));
                        else
                            g_xdoc_shoppingcart.Retrieve(ShoppingCartView::GetGoodsList(str,queryString));
                    }
                    else if(e1.getAttribute("categoryid") !="")
                    else if(e1.getAttribute(L"categoryid") !=L"")
                    {
                        string categoryid = e1.getAttribute("categoryid");
                        dwc_list.SetDataObject(ProductLibraryView::GetMaintListForm3(categoryid).GetXmlDoc());
                        xstring categoryid = e1.getAttribute(L"categoryid");
                        dwc_list.SetDataObject(ProductLibraryView::GetMaintListForm3(categoryid));
                        dwc_list.SetReadOnly(true);
                        dwc_list.Reset();
                        if(queryString=="")
                        if(queryString==L"")
                            g_xdoc_shoppingcart.Retrieve(ProductLibraryView::GetMaintList3(categoryid ));
                        else
                            g_xdoc_shoppingcart.Retrieve(ProductLibraryView::GetMaintList3(categoryid, queryString,""));
                            g_xdoc_shoppingcart.Retrieve(ProductLibraryView::GetMaintList3(categoryid, queryString,L""));
                    }
                    else
                    {
                        dwc_list.openUrl("/sale/view/ProductLibrary/template/cart/goodslist");
                        dwc_list.openUrl(L"/sale/view/ProductLibrary/template/cart/goodslist");
                        dwc_list.SetReadOnly(true);
                        dwc_list.Reset();
                        if(queryString=="")
                        if(queryString==L"")
                            g_xdoc_shoppingcart.Retrieve(ShoppingCartView::GetGoodsList(selectname));
                        else
                            g_xdoc_shoppingcart.Retrieve(ShoppingCartView::GetGoodsList(selectname,queryString));
@@ -792,68 +804,68 @@
                    if(dwc_list.GetRowCount() >= 1 )
                    {
                        htmlctrl xs = GetControl("html_detail");
                        htmlctrl xs = GetControl(L"html_detail");
                        xs.SetContent(makeGoodscarHtml(1));
                        
                        if(m_customer !="")
                        if(m_customer !=L"")
                        {
                            string skuid = g_xdoc_shoppingcart.getData(0,"data/Item",1,"SKUID");
                            string customerItemNo = g_xdoc_shoppingcart.getData(0,"data/Item",1,"CustomerItemNo");
                            xstring skuid = g_xdoc_shoppingcart.getData(0,L"data/Item",1,L"SKUID");
                            xstring customerItemNo = g_xdoc_shoppingcart.getData(0,L"data/Item",1,L"CustomerItemNo");
                            OnShowImage(skuid,customerItemNo);
                        }
                    } else {                        
                        im.ResetEx();
                        im.Redraw();
                        xs = GetControl("html_detail");
                        xs.SetContent("<html><body style='margin:2;background-color:#ccdccc none #f0f0f0 none'/></html>");
                        xs = GetControl(L"html_detail");
                        xs.SetContent(L"<html><body style='margin:2;background-color:#ccdccc none #f0f0f0 none'/></html>");
                    }
                    xs.Redraw();
                }    
            }
            else
            {
                if(agentFor !="goodslib")SwitchLayer("goodslibsheet","sheetframe");
                if(name == "个人库")
                    ResetAgent("userlib");
                if(agentFor !=L"goodslib")SwitchLayer(L"goodslibsheet",L"sheetframe");
                if(name == L"个人库")
                    ResetAgent(L"userlib");
                else 
                    ResetAgent("goodslib");
                    ResetAgent(L"goodslib");
                int hCursor = xutil::SetCursorWait();
                if(name == "个人库" || name=="公司库")
                if(name == L"个人库" || name==L"公司库")
                {
                    string no="N000005";
                    if(name=="个人库") no="U000005";
                    xstring no=L"N000005";
                    if(name==L"个人库") no=L"U000005";
                    if(hItem != hTopItem)
                    {
                        msxml::IXMLDOMElement e= tv_folder.GetItemData(hItem);
                        no = e.getAttribute("guid");
                        KXMLDOMElement e= tv_folder.GetItemData(hItem);
                        no = e.getAttribute(L"guid");
                    }
                    dw_list.SetDataObject(ProductLibraryView::GetMaintListForm3(no).GetXmlDoc());
                    dw_list = GetControl("dw_list");
                    dw_list.SetDataObject(ProductLibraryView::GetMaintListForm3(no));
                    dw_list = GetControl(L"dw_list");
                    dw_list.Reset();
                    dw_list.SetReadOnly(true);
                    
                    xml x;
                    if(queryString=="")
                    if(queryString==L"")
                    {
                        if(name == "个人库")
                        if(name == L"个人库")
                            x = ProductLibraryView::GetMaintRoleList3(no);
                        else
                            x = ProductLibraryView::GetMaintList3(no);
                    }
                    else
                    {
                        if(name == "个人库")
                        if(name == L"个人库")
                            x = ProductLibraryView::GetMaintRoleList3(no,queryString);
                        else
                        {
                            if(queryString !="")
                            if(queryString !=L"")
                            {
                                if(no=="N000005")
                                    x = ProductLibraryView::GetMaintList3("",queryString,"");
                                if(no==L"N000005")
                                    x = ProductLibraryView::GetMaintList3(L"",queryString,L"");
                                else
                                    x = ProductLibraryView::GetMaintList3(no,queryString,"");
                                    x = ProductLibraryView::GetMaintList3(no,queryString,L"");
                            }else
                                x = ProductLibraryView::GetMaintList3(no);
                        }
@@ -864,23 +876,23 @@
                    if(dw_list.GetRowCount() >0)
                    {
                        xs = GetControl("html_detail");
                        xs = GetControl(L"html_detail");
                        xs.SetContent(makeHtml(1));
                        string id = g_xdoc_product.getData(0,"data/Item",1,"@guid");
                        xstring id = g_xdoc_product.getData(0,L"data/Item",1,L"@guid");
                        OnShowImage(id);
                    }else
                    {
                        im.ResetEx();
                        im.Redraw();
                        xs = GetControl("html_detail");
                        xs.SetContent("<html><body style='margin:2;background-color:#ccdccc none #f0f0f0 none'/></html>");
                        xs = GetControl(L"html_detail");
                        xs.SetContent(L"<html><body style='margin:2;background-color:#ccdccc none #f0f0f0 none'/></html>");
                    }
                    xs.Redraw();
                    xutil::RestoreCursor(hCursor);
                }
            }        
            impStr = "";
            impStr = L"";
        }
                    
        int OnTreeSelChanged(ref TNotifyEvent evt,int p)
@@ -890,15 +902,15 @@
            return RetrieveItem(hItem);
        }    
        int  ExpandChildFolder(int hItem, msxml::IXMLDOMElement pElement)
        int  ExpandChildFolder(int hItem, KXMLDOMElement pElement)
        {
            msxml::IXMLDOMNodeList nlist = pElement.SelectNodes("Item");
            int len = nlist.length;
            KXMLDOMNodeList nlist = pElement.selectNodes(L"Item");
            int len = nlist.length();
            for (int i = 0; i < len; i++)
            {    
                msxml::IXMLDOMElement e = nlist.item(i);
                string name = e.getAttribute("cname");
                string sImage = e.getAttribute("image");
                KXMLDOMElement e = nlist.item(i);
                xstring name = e.getAttribute(L"cname");
                xstring sImage = e.getAttribute(L"image");
                int image = 15;
                //if(sImage) image = sImage.toInt();
                int h= tv_folder.InsertChildItem(tv_folder.GetId(),hItem,name, trust(e as int),image);                
@@ -910,8 +922,8 @@
        
        int  InitialFolder()
        {
            msxml::IXMLDOMElement xframeElement =  GetElement();
            msxml::IXMLDOMElement e =  xframeElement.selectSingleNode("//xtree[@name='tv_folder']/initial");
            KXMLDOMElement xframeElement =  GetElement();
            KXMLDOMElement e =  xframeElement.selectSingleNode(L"//xtree[@name='tv_folder']/initial");
            ExpandChildFolder(0,e);
            return 1;
        }
@@ -921,22 +933,22 @@
            ref DWNMHDR hdr = cast(evt.pnmh as ref DWNMHDR);
            char ch;
            int row = hdr.row;
            string col = hdr.colname;
            xstring col = hdr.colname;
            
            string str = "";
            if(dw_list.GetItemString(row, "SKUNo") !="")
                str =dw_list.GetItemString(row, "SKUNo");
            xstring str = L"";
            if(dw_list.GetItemString(row, L"SKUNo") !=L"")
                str =dw_list.GetItemString(row, L"SKUNo");
            else
                str =dw_list.GetItemString(row, "No");
                str =dw_list.GetItemString(row, L"No");
            
            if(dw_list.IsRowSelected(row) & 0xff)
            {
                //will unselect
                impStr = impStr.replace(" "+str,"");
                impStr = impStr.replace(L" "+str,L"");
            }else
            {
                //will select
                impStr += " " + str;
                impStr += L" " + str;
            }
            return 1;
        }
@@ -946,28 +958,28 @@
            ref DWNMHDR hdr = cast(evt.pnmh as ref DWNMHDR);
            char ch;
            int row = hdr.row;
            string col = hdr.colname;
            xstring col = hdr.colname;
            
            string str = g_xdoc_shoppingcart.getData(0,"data/Item",row,"SOLineID");
            //string str1 = g_xdoc_shoppingcart.getData(0,"data/Item",row,"EnquiryLineID");
            string str1 = g_xdoc_shoppingcart.getData(0,"data/Item",row,"EnquiryPriceListID");
            if(str1 !="")
                str += "el:" + str1;
            else if(str != "")
                str = "sl:"+str;
            else if(dwc_list.GetItemString(row, "SKUNo") !="")
                str =dwc_list.GetItemString(row, "SKUNo");
            xstring str = g_xdoc_shoppingcart.getData(0,L"data/Item",row,L"SOLineID");
            //xstring str1 = g_xdoc_shoppingcart.getData(0,L"data/Item",row,L"EnquiryLineID");
            xstring str1 = g_xdoc_shoppingcart.getData(0,L"data/Item",row,L"EnquiryPriceListID");
            if(str1 !=L"")
                str += L"el:" + str1;
            else if(str != L"")
                str = L"sl:"+str;
            else if(dwc_list.GetItemString(row, L"SKUNo") !=L"")
                str =dwc_list.GetItemString(row, L"SKUNo");
            else
                str =dwc_list.GetItemString(row, "No");
                str =dwc_list.GetItemString(row, L"No");
            
            if(dwc_list.IsRowSelected(row) & 0xff)
            {
                //will unselect
                impStr = impStr.replace(" "+str,"");
                impStr = impStr.replace(L" "+str,L"");
            }else
            {
                //will select
                impStr += " " + str;
                impStr += L" " + str;
            }
            return 1;
        }
@@ -977,26 +989,26 @@
            int hCursor = xutil::SetCursorWait();
            ref DWNMHDR hdr = cast(evt.pnmh as ref DWNMHDR);
            int row = hdr.row;
            string ls_nos = "ImportXml:";
            string str = g_xdoc_shoppingcart.getData(0,"data/Item",row,"SOLineID");
            string str1 = g_xdoc_shoppingcart.getData(0,"data/Item",row,"EnquiryPriceListID");
            if(str1 !="")
                str += "el:" + str1;
            else if(str != "")
                str = "sl:"+str;
            else if(dwc_list.GetItemString(row, "SKUNo") !="")
                str =dwc_list.GetItemString(row, "SKUNo");
            xstring ls_nos = L"ImportXml:";
            xstring str = g_xdoc_shoppingcart.getData(0,L"data/Item",row,L"SOLineID");
            xstring str1 = g_xdoc_shoppingcart.getData(0,L"data/Item",row,L"EnquiryPriceListID");
            if(str1 !=L"")
                str += L"el:" + str1;
            else if(str != L"")
                str = L"sl:"+str;
            else if(dwc_list.GetItemString(row, L"SKUNo") !=L"")
                str =dwc_list.GetItemString(row, L"SKUNo");
            else
                str =dwc_list.GetItemString(row, "No");
                str =dwc_list.GetItemString(row, L"No");
            ls_nos += str;
            
            dw_list.SelectRow(0,false);
            dwc_list.SelectRow(0,false);
            dw_list.Redraw();
            dwc_list.Redraw();
            impStr ="";
            impStr =L"";
            
            win32::SendMessage(hObject,0x401,ls_nos,0);
            SendMessage(hObject,0x401,ls_nos,0);
            xutil::RestoreCursor(hCursor);
            CloseWindow();
@@ -1006,66 +1018,67 @@
        int OnAttachEvent()
        {
            //绑定工具条点击事件
            AttachEvent("WM_XCOMMAND",OnXCommand);
            AttachEvent(L"WM_XCOMMAND", (FEvent)&ProductSelectWin::OnXCommand);
            //获取焦点事件,用于重置工具条
            AttachEvent("WM_SETFOCUS",OnSetFocus);
            AttachEvent("dw_list","DWV_ROWFOCUSCHANGED",OnRowChanged);
            AttachEvent("dwc_list","DWV_ROWFOCUSCHANGED",OnGoodsCarRowChanged);
            AttachEvent("tv_folder", "TVN_ITEMEXPANDING",OnTreeExpanding);
            AttachEvent("tv_folder", "TVN_SELCHANGED",OnTreeSelChanged);
            AttachEvent(L"WM_SETFOCUS", (FEvent)&ProductSelectWin::OnSetFocus);
            AttachEvent(L"dw_list",L"DWV_ROWFOCUSCHANGED", (FEvent)&ProductSelectWin::OnRowChanged);
            AttachEvent(L"dwc_list",L"DWV_ROWFOCUSCHANGED", (FEvent)&ProductSelectWin::OnGoodsCarRowChanged);
            AttachEvent(L"tv_folder", L"TVN_ITEMEXPANDING", (FEvent)&ProductSelectWin::OnTreeExpanding);
            AttachEvent(L"tv_folder", L"TVN_SELCHANGED", (FEvent)&ProductSelectWin::OnTreeSelChanged);
            
            AttachEvent("dwc_list","DWV_DOUBLECLICKED",OnDoubleClicked);
            AttachEvent(L"dwc_list",L"DWV_DOUBLECLICKED", (FEvent)&ProductSelectWin::OnDoubleClicked);
            
            AttachEvent("WM_COMMAND",OnCkbCLick);    //checkbox打钩事件
            AttachEvent("WM_COMMAND",OnCkbCLick2);    //checkbox打钩事件
            AttachEvent(L"WM_COMMAND", (FEvent)&ProductSelectWin::OnCkbCLick);    //checkbox打钩事件
            AttachEvent(L"WM_COMMAND", (FEvent)&ProductSelectWin::OnCkbCLick2);    //checkbox打钩事件
            
            AttachEvent("dw_list","DWV_CLICKED",OnDwClicked);
            AttachEvent("dwc_list","DWV_CLICKED",OnDwcClicked);
            AttachEvent(L"dw_list",L"DWV_CLICKED", (FEvent)&ProductSelectWin::OnDwClicked);
            AttachEvent(L"dwc_list",L"DWV_CLICKED", (FEvent)&ProductSelectWin::OnDwcClicked);
            return 1;
        }
        int onload()
        {
            agentFor = "goodslib";
            impStr = "";
            agentFor = L"goodslib";
            impStr = L"";
                    
            OnAttachEvent();    
            
            tv_folder = GetControl("tv_folder");
            dw_list     = GetControl("dw_list");
            dwc_list = GetControl("dwc_list");
            tv_folder = GetControl(L"tv_folder");
            dw_list     = GetControl(L"dw_list");
            dwc_list = GetControl(L"dwc_list");
            xaserverarg arg = GetParam();
            CustomerID = "";
            m_customer ="";
            CustomerID = L"";
            m_customer =L"";
            hObject = 0;
            if(arg)
            {
                hObject = arg.GetArgString("HWND").toInt();
                CustomerID = arg.GetArgString("CustomerID");
                hObject = arg.GetArgString(L"HWND").toInt();
                CustomerID = arg.GetArgString(L"CustomerID");
            }
            InitialFolder();
            
            g_xdoc_product = new xdataset;
            g_xdoc_product.Init();
            xbind bindproduct = new xbind;
            bindproduct.bindEx(dw_list, g_xdoc_product,"");
            bindproduct.bindEx(dw_list, g_xdoc_product,L"");
            
            g_xdoc_shoppingcart = new xdataset;
            g_xdoc_shoppingcart.Init();
            xbind bindcart = new xbind;
            bindcart.bindEx(dwc_list, g_xdoc_shoppingcart,"");
            bindcart.bindEx(dwc_list, g_xdoc_shoppingcart,L"");
            dw_list.SetDataObject(ProductLibraryView::GetMaintListForm3("").GetXmlDoc());
            dw_list = GetControl("dw_list");
            dw_list.SetDataObject(ProductLibraryView::GetMaintListForm3(L""));
            dw_list = GetControl(L"dw_list");
            dw_list.SetReadOnly(true);
                    
            dwc_list.openUrl("/sale/view/ProductLibrary/template/cart/goodslist");
            dwc_list.openUrl(L"/sale/view/ProductLibrary/template/cart/goodslist");
            dwc_list.SetReadOnly(true);
            if(dw_list.GetRowCount())
            {
                htmlctrl xs = GetControl("html_detail");
                htmlctrl xs = GetControl(L"html_detail");
                xs.SetContent(makeHtml(1));
            }
            
jrj/project/business/Quote/QuoteFilePurch.cpp
@@ -1,36 +1,51 @@
use "xcontrol.vframe.vbusiness.vd"
use "xbase.vframe.vbusiness.vd"
#include <wobject/xstring.hpp>
#include <xcontrol/xtreeview.hpp>
#include <xcontrol/xdwgrid.hpp>
#include <wobject/xdouble.hpp>
#include <xcontrol/xlayersheet.hpp>
#include <xcontrol/xdatetimepick.hpp>
unit trade
[
    class QuoteFilePurch :  public xframe
#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
#include "viewobject/view.base.hpp"
using xml = KXMLDOMDocument;
    class __declspec(dllexport) QuoteFilePurch :  public xframe
    {
    public:
        xdwgrid    dw_list;
        xnode    m_agentNode;    //Agent Condition
    public:
        QuoteFilePurch(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
    public:
        static QuoteFilePurch* CreateInstance(void* implPtr, void* hWnd)
        {
            QuoteFilePurch* pWin = new QuoteFilePurch(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();
@@ -41,21 +56,21 @@
        {
            for(int row=1;row<=dw_list.GetRowCount();row++)
            {
                if(dw_list.GetItemString(row,"IsSend")=="1")
                if(dw_list.GetItemString(row,L"IsSend")==L"1")
                {
                    if(dw_list.GetItemString(row,"ItemName")=="")
                    if(dw_list.GetItemString(row,L"ItemName")==L"")
                    {
                        alert("第"+row.toString()+"行商品英文名称未输入,补全后再发送给业务员");
                        alert(L"第"+xstring(row)+L"行商品英文名称未输入,补全后再发送给业务员");
                        return 0;
                    }
                    if(dw_list.GetItemString(row,"ItemCName")=="")
                    if(dw_list.GetItemString(row,L"ItemCName")==L"")
                    {
                        alert("第"+row.toString()+"行商品名称未输入,补全后再发送给业务员");
                        alert(L"第"+ xstring(row) +L"行商品名称未输入,补全后再发送给业务员");
                        return 0;
                    }
                    if(dw_list.GetItemString(row,"Package")=="")
                    if(dw_list.GetItemString(row,L"Package")==L"")
                    {
                        alert("第"+row.toString()+"行商品包装未输入,补全后再发送给业务员");
                        alert(L"第"+ xstring(row) +L"行商品包装未输入,补全后再发送给业务员");
                        return 0;
                    }
                }
@@ -68,14 +83,14 @@
            dw_list.AcceptText();
            if(OnValid()==0) return 1;
                    
            xml x = new xml;
            x.setNativePointer(xml::CreateInstance());
            dw_list.DwUpdateAllToEx(x.GetXmlDoc());
            if(GetParam())
            xml x ;
            dw_list.DwUpdateAllToEx(x);
            if(GetWinParam())
            {
                xaserverarg arg = GetParam();
                arg.AddArg("process","ok");
                arg.AddArg("value",x.GetXml());
                xaserverarg arg = GetArg();
                arg.AddArg(L"process",L"ok");
                arg.AddArg(L"value",x.xml());
            }
            CloseWindow();
            return 1;
@@ -91,7 +106,7 @@
        {
            for(int row = 1; row <= dw_list.GetRowCount(); row++)
            {
                dw_list.SetItemString(row,"IsSend","1");
                dw_list.SetItemString(row,L"IsSend",L"1");
            }
            dw_list.Redraw();
            return 1;
@@ -101,48 +116,49 @@
        {
            for(int row = 1; row <= dw_list.GetRowCount(); row++)
            {
                dw_list.SetItemString(row,"IsSend","0");
                dw_list.SetItemString(row,L"IsSend",L"0");
            }
            dw_list.Redraw();
            return 1;
        }
        
        //命令发布函数
        int OnCmdDispatch(string comdid)
        int OnCmdDispatch(xstring comdid)
        {
            if(comdid=="xmOK") return OnOK();
            else if(comdid=="xmCancel") return OnCancel();
            else if(comdid=="xmSelectAll") return SelectAll();
            else if(comdid=="xmUnSelectAll") return UnSelectAll();
            if(comdid==L"xmOK") return OnOK();
            else if(comdid==L"xmCancel") return OnCancel();
            else if(comdid==L"xmSelectAll") return SelectAll();
            else if(comdid==L"xmUnSelectAll") return UnSelectAll();
            
            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)&QuoteFilePurch::OnXCommand);
            //获取焦点事件,用于重置工具条
            AttachEvent("WM_SETFOCUS",OnSetFocus);
            AttachEvent(L"WM_SETFOCUS", (FEvent)&QuoteFilePurch::OnSetFocus);
            return 1;
        }
        
        /*
        int  OnRetrieve()
        {
            xml x = new xml;
            x.setNativePointer(xml::CreateInstance());
            xaserverarg arg = new xaserverarg;
            arg.setNativePointer(arg.CreateInstance());
            arg.AddArg("xxx","xxx");
            if (getUrl("",arg.GetString(),x)!=1)
            xml x ;
            xaserverarg arg ;
            arg.AddArg(L"xxx",L"xxx");
            if (getUrl(L"",arg.GetString(),x)!=1)
            {
                trace(x.GetXmlDoc().text);
                trace(x.text());
                return -1;
            }else    
            {
@@ -155,16 +171,17 @@
        
        int onload()
        {
            dw_list = GetControl("dw_list");
            dw_list.openUrl("/sale/view/Quote3/template/Quote/QuoteFileItem");
            SetArg();
            dw_list = GetControl(L"dw_list");
            dw_list.openUrl(L"/sale/view/Quote3/template/Quote/QuoteFileItem");
        
            if(GetParam())
            if(GetWinParam())
            {
                xaserverarg arg = GetParam();
                string val = arg.GetArgString("value");
                xml x = new xml;
                x.setNativePointer(xml::CreateInstance());
                x.LoadXml(val);
                xaserverarg arg = GetArg();
                xstring val = arg.GetArgString(L"value");
                xml x ;
                x.loadXML(val);
                dw_list.Retrieve(x);
            }
            OnAttachEvent();    
@@ -178,5 +195,4 @@
            
            return 1;
        }        
    };
]
    };
jrj/project/business/Quote/QuoteFilePurched.cpp
@@ -1,36 +1,51 @@
use "xcontrol.vframe.vbusiness.vd"
use "xbase.vframe.vbusiness.vd"
#include <wobject/xstring.hpp>
#include <xcontrol/xtreeview.hpp>
#include <xcontrol/xdwgrid.hpp>
#include <wobject/xdouble.hpp>
#include <xcontrol/xlayersheet.hpp>
#include <xcontrol/xdatetimepick.hpp>
unit trade
[
    class QuoteFilePurched :  public xframe
#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
#include "viewobject/view.base.hpp"
using xml = KXMLDOMDocument;
    class __declspec(dllexport) QuoteFilePurched :  public xframe
    {
    public:
        xdwgrid    dw_list;
        xnode    m_agentNode;    //Agent Condition
    public:
        QuoteFilePurched(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
    public:
        static QuoteFilePurched* CreateInstance(void* implPtr, void* hWnd)
        {
            QuoteFilePurched* pWin = new QuoteFilePurched(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();
@@ -42,21 +57,21 @@
            /*
            for(int row=1;row<=dw_list.GetRowCount();row++)
            {
                if(dw_list.GetItemString(row,"IsSend")=="1")
                if(dw_list.GetItemString(row,L"IsSend")==L"1")
                {
                    if(dw_list.GetItemString(row,"ItemName")=="")
                    if(dw_list.GetItemString(row,L"ItemName")==L"")
                    {
                        alert("第"+row.toString()+"行商品英文名称未输入,补全后再发送给业务员");
                        alert(L"第"+row.toString()+L"行商品英文名称未输入,补全后再发送给业务员");
                        return 0;
                    }
                    if(dw_list.GetItemString(row,"ItemCName")=="")
                    if(dw_list.GetItemString(row,L"ItemCName")==L"")
                    {
                        alert("第"+row.toString()+"行商品名称未输入,补全后再发送给业务员");
                        alert(L"第"+row.toString()+L"行商品名称未输入,补全后再发送给业务员");
                        return 0;
                    }
                    if(dw_list.GetItemString(row,"Package")=="")
                    if(dw_list.GetItemString(row,L"Package")==L"")
                    {
                        alert("第"+row.toString()+"行商品包装未输入,补全后再发送给业务员");
                        alert(L"第"+row.toString()+L"行商品包装未输入,补全后再发送给业务员");
                        return 0;
                    }
                }
@@ -69,14 +84,14 @@
        {
            if(OnValid()==0) return 1;
                    
            xml x = new xml;
            x.setNativePointer(xml::CreateInstance());
            dw_list.DwUpdateAllToEx(x.GetXmlDoc());
            if(GetParam())
            xml x ;
            dw_list.DwUpdateAllToEx(x);
            if(GetWinParam())
            {
                xaserverarg arg = GetParam();
                arg.AddArg("process","ok");
                arg.AddArg("value",x.GetXml());
                xaserverarg arg = GetArg();
                arg.AddArg(L"process",L"ok");
                arg.AddArg(L"value",x.xml());
            }
            CloseWindow();
            return 1;
@@ -92,7 +107,7 @@
        {
            for(int row = 1; row <= dw_list.GetRowCount(); row++)
            {
                dw_list.SetItemString(row,"IsSend","1");
                dw_list.SetItemString(row,L"IsSend",L"1");
            }
            dw_list.Redraw();
            return 1;
@@ -102,48 +117,49 @@
        {
            for(int row = 1; row <= dw_list.GetRowCount(); row++)
            {
                dw_list.SetItemString(row,"IsSend","0");
                dw_list.SetItemString(row,L"IsSend",L"0");
            }
            dw_list.Redraw();
            return 1;
        }
        
        //命令发布函数
        int OnCmdDispatch(string comdid)
        int OnCmdDispatch(xstring comdid)
        {
            if(comdid=="xmOK") return OnOK();
            else if(comdid=="xmCancel") return OnCancel();
            else if(comdid=="xmSelectAll") return SelectAll();
            else if(comdid=="xmUnSelectAll") return UnSelectAll();
            if(comdid==L"xmOK") return OnOK();
            else if(comdid==L"xmCancel") return OnCancel();
            else if(comdid==L"xmSelectAll") return SelectAll();
            else if(comdid==L"xmUnSelectAll") return UnSelectAll();
            
            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)&QuoteFilePurched::OnXCommand);
            //获取焦点事件,用于重置工具条
            AttachEvent("WM_SETFOCUS",OnSetFocus);
            AttachEvent(L"WM_SETFOCUS", (FEvent)&QuoteFilePurched::OnSetFocus);
            return 1;
        }
        
        /*
        int  OnRetrieve()
        {
            xml x = new xml;
            x.setNativePointer(xml::CreateInstance());
            xaserverarg arg = new xaserverarg;
            arg.setNativePointer(arg.CreateInstance());
            arg.AddArg("xxx","xxx");
            if (getUrl("",arg.GetString(),x)!=1)
            xml x ;
            xaserverarg arg ;
            arg.AddArg(L"xxx",L"xxx");
            if (getUrl(L"",arg.GetString(),x)!=1)
            {
                trace(x.GetXmlDoc().text);
                trace(x.text());
                return -1;
            }else    
            {
@@ -156,16 +172,17 @@
        
        int onload()
        {
            dw_list = GetControl("dw_list");
            dw_list.openUrl("/sale/view/Quote3/template/Quote/QuoteFilePurchedItem");
            SetArg();
            dw_list = GetControl(L"dw_list");
            dw_list.openUrl(L"/sale/view/Quote3/template/Quote/QuoteFilePurchedItem");
        
            if(GetParam())
            if(GetWinParam())
            {
                xaserverarg arg = GetParam();
                string val = arg.GetArgString("value");
                xml x = new xml;
                x.setNativePointer(xml::CreateInstance());
                x.LoadXml(val);
                xaserverarg arg = GetArg();
                xstring val = arg.GetArgString(L"value");
                xml x ;
                x.loadXML(val);
                dw_list.Retrieve(x);
            }
            OnAttachEvent();    
@@ -179,5 +196,4 @@
            
            return 1;
        }        
    };
]
    };
jrj/project/business/Quote/QuoteSupplierItem.cpp
@@ -1,37 +1,51 @@
use "xcontrol.vframe.vbusiness.vd"
use "xbase.vframe.vbusiness.vd"
use "supplier.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 trade
[
    class QuoteSupplierItem :  public xframe
#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
#include "viewobject/view.base.hpp"
using xml = KXMLDOMDocument;
    class __declspec(dllexport) QuoteSupplierItem :  public xframe
    {
    public:
        xdwgrid    dw_list;
        xnode    m_agentNode;    //Agent Condition
    public:
        QuoteSupplierItem(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
    public:
        static QuoteSupplierItem* CreateInstance(void* implPtr, void* hWnd)
        {
            QuoteSupplierItem* pWin = new QuoteSupplierItem(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();
@@ -51,19 +65,19 @@
        }
        
        //命令发布函数
        int OnCmdDispatch(string comdid)
        int OnCmdDispatch(xstring comdid)
        {
            if(comdid=="xmCancel") return OnCancel();
            else if(comdid=="xmOK") return OnOk();
            else if(comdid=="xmDelete") return OnDelete();
            if(comdid==L"xmCancel") return OnCancel();
            else if(comdid==L"xmOK") return OnOk();
            else if(comdid==L"xmDelete") return OnDelete();
            
            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 OnDelete()
@@ -76,30 +90,29 @@
        {
            dw_list.AcceptText();
            
            xml xitem = new xml;
            xitem.setNativePointer(xml::CreateInstance());
            msxml::IXMLDOMDocument xitemdoc = xitem.GetXmlDoc();
            xml xitem ;
            KXMLDOMDocument xitemdoc = xitem;
            dw_list.DwUpdateAllToEx(xitemdoc);
            xaserverarg arg = new xaserverarg;
            arg.setNativePointer(arg.CreateInstance());
            arg.AddArg("content",xitem.GetXml());
            xaserverarg arg ;
            
            //alert(xitem.GetXml());
            arg.AddArg(L"content",xitem.xml());
            //alert(xitem.xml());
            //return 1;
            
            if(url::get("/sale/data/SupplierV3/entity/update/quotemysupplier", arg.GetString(),xitem)!=1)
            if(xurl::get(L"/sale/data/SupplierV3/entity/update/quotemysupplier", arg.GetString(),xitem)!=1)
            {
                string error1 = xitem.GetXmlDoc().text;
                xstring error1 = xitem.text();
                return 1;
            }else
            {
                string str = xitem.GetXmlDoc().documentElement.getAttribute("text");
                if(str == "false")
                xstring str = xitem.documentElement().getAttribute(L"text");
                if(str == L"false")
                {
                    alert("保存失败!");
                    alert(L"保存失败!");
                    return -1;
                }
                alert("保存成功!");
                alert(L"保存成功!");
                dw_list.ResetUpdateStatus();
            }
            
@@ -109,33 +122,34 @@
        int OnAttachEvent()
        {
            //绑定工具条点击事件
            AttachEvent("WM_XCOMMAND",OnXCommand);
            AttachEvent(L"WM_XCOMMAND", (FEvent)&QuoteSupplierItem::OnXCommand);
            //获取焦点事件,用于重置工具条
            AttachEvent("WM_SETFOCUS",OnSetFocus);
            AttachEvent(L"WM_SETFOCUS", (FEvent)&QuoteSupplierItem::OnSetFocus);
            return 1;
        }
        
        int  OnRetrieve()
        {
            if(GetParam())
            if(GetWinParam())
            {
                xaserverarg arg = GetParam();
                string val = arg.GetArgString("value");
                xml x = new xml;
                x.setNativePointer(x.CreateInstance());
                x.LoadXml(val);
                xaserverarg arg = GetArg();
                xstring val = arg.GetArgString(L"value");
                xml x ;
                x.loadXML(val);
                dw_list.Retrieve(x);
                dw_list.Redraw();
            
                string sPartyNo = publiccode::GetIdentityNo("Party2");
                string No ="";
                string Name ="";
                string NameEx ="";
                xstring sPartyNo = publiccode::GetIdentityNo(L"Party2");
                xstring No =L"";
                xstring Name =L"";
                xstring NameEx =L"";
                /*for(int i=0; i <=dw_list.GetRowCount() ;i++)
                {
                    Name=dw_list.GetItemString(i,"Name");
                    if(Name !="")
                    Name=dw_list.GetItemString(i,L"Name");
                    if(Name !=L"")
                    {
                        if(NameEx =="")
                        if(NameEx ==L"")
                        {
                            NameEx = Name;
                        }
@@ -153,15 +167,15 @@
                    if(row==1) 
                        No = sPartyNo;
                    else
                        No = ("0000"+(No.toInt()+1).toString()).right(4);
                    dw_list.SetItemString(row,"PartyNo",No+"N");
                    dw_list.SetItemString(row,"Type","12");
                    dw_list.SetItemString(row,"IdentifyAddressFlag","Y");
                    dw_list.SetItemString(row,"PrimaryFlag","Y");
                        No = (L"0000"+xstring((No.toInt()+1))).right(4);
                    dw_list.SetItemString(row,L"PartyNo",No+L"N");
                    dw_list.SetItemString(row,L"Type",L"12");
                    dw_list.SetItemString(row,L"IdentifyAddressFlag",L"Y");
                    dw_list.SetItemString(row,L"PrimaryFlag",L"Y");
                    
                    string id = ViewObject::GetGuid();
                    msxml::IXMLDOMElement ele = dw_list.GetRowElement(row);
                    ele.SetAttribute("guid",id);
                    xstring id = ViewObject::GetGuid();
                    KXMLDOMElement ele = dw_list.GetRowElement(row);
                    ele.setAttribute(L"guid",id);
                    //dw_list.SetGuid(row,id);
                }
            }
@@ -170,8 +184,9 @@
        
        int onload()
        {
            dw_list = GetControl("dw_list");
            dw_list.openUrl("/sale/view/Quote3/template/Quote/QuoteSupplierItem");
            SetArg();
            dw_list = GetControl(L"dw_list");
            dw_list.openUrl(L"/sale/view/Quote3/template/Quote/QuoteSupplierItem");
        
            OnAttachEvent();    
            OnRetrieve();
@@ -185,5 +200,4 @@
            
            return 1;
        }        
    };
]
    };
jrj/project/business/Quote/TONewSelectDlg.cpp
@@ -1,9 +1,16 @@
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 xxx :  public xframe
#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
#include "viewobject/view.base.hpp"
using xml = KXMLDOMDocument;
    class __declspec(dllexport) TOSelectDlg :  public xframe
    {
        //xdwgrid    dw_list;
jrj/project/business/Quote/TOSelectDlg.cpp
@@ -1,40 +1,54 @@
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 trade
[
    class TOSelectDlg :  public frame
#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
#include "viewobject/view.base.hpp"
using xml = KXMLDOMDocument;
    class __declspec(dllexport) TOSelectDlg :  public xframe
    {
    public:
        //xdwgrid    dw_list;
        xlistview  lv_view;
        xlistview  lv_view1;
        int columnCount;
        xnode    m_agentNode;    //Agent Condition
    public:
        TOSelectDlg(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
    public:
        static TOSelectDlg* CreateInstance(void* implPtr, void* hWnd)
        {
            TOSelectDlg* pWin = new TOSelectDlg(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();
@@ -42,26 +56,26 @@
        }
        //命令发布函数
        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")
            {
                int  LVNI_FOCUSED        = 0x0001;
                int nItem =xlistview::GetNextItem(lv_view.GetId(), -1, LVNI_FOCUSED);
                int nItem =lv_view.GetNextItem( -1, LVNI_FOCUSED);
                if(nItem < 0) return 1;
            
                if(GetParam())
                if(GetWinParam())
                {
                    msxml::IXMLDOMElement ele = GetItemData(lv_view, nItem);
                    xaserverarg arg = GetParam();
                    arg.AddArg("action","new");
                    arg.AddArg("ID",ele.getAttribute("guid"));
                    arg.AddArg("id",ele.getAttribute("guid"));
                    KXMLDOMElement ele = GetItemData(lv_view, nItem);
                    xaserverarg arg = GetArg();
                    arg.AddArg(L"action",L"new");
                    arg.AddArg(L"ID",ele.getAttribute(L"guid"));
                    arg.AddArg(L"id",ele.getAttribute(L"guid"));
                }
                //重置工具条
                CloseWindow();
@@ -70,7 +84,7 @@
            return 0;
        }
        
        msxml::IXMLDOMElement  GetItemData(xlistview lv_item, int hItem)
        KXMLDOMElement  GetItemData(xlistview lv_item, int hItem)
        {
            int LVIF_PARAM = 0x0004;
            
@@ -79,12 +93,12 @@
            lvItem.iSubItem = 0;
            lvItem.mask = LVIF_PARAM ;
            
            xlistview::GetItem(lv_item.GetId(), lvItem);
            msxml::IXMLDOMElement  ele = trust(lvItem.lParam as msxml::IXMLDOMElement);
            lv_view.GetItem(lv_item.GetId(), lvItem);
            KXMLDOMElement  ele = trust(lvItem.lParam as KXMLDOMElement);
            return ele;
        }
        
        int OnListViewDoubleClicked(ref TEvent evt,int param)
        int OnListViewDoubleClicked(TEvent* evt, LPARAM param)
        {
            int  LVNI_ALL                = 0x0000;
            int  LVNI_FOCUSED        = 0x0001;
@@ -92,23 +106,23 @@
            int  LVNI_CUT               = 0x0004;
            int  LVNI_DROPHILITED   = 0x0008;
            
            int nItem =xlistview::GetNextItem(lv_view.GetId(), -1, LVNI_FOCUSED);
            int nItem =lv_view.GetNextItem( -1, LVNI_FOCUSED);
            if(nItem < 0) return 1;
            
            if(GetParam())
            if(GetWinParam())
            {
                msxml::IXMLDOMElement ele = GetItemData(lv_view, nItem);
                xaserverarg arg = GetParam();
                arg.AddArg("action","new");
                arg.AddArg("ID",ele.getAttribute("guid"));
                arg.AddArg("id",ele.getAttribute("guid"));
                KXMLDOMElement ele = GetItemData(lv_view, nItem);
                xaserverarg arg = GetArg();
                arg.AddArg(L"action",L"new");
                arg.AddArg(L"ID",ele.getAttribute(L"guid"));
                arg.AddArg(L"id",ele.getAttribute(L"guid"));
            }
            //重置工具条
            CloseWindow();
            return 1;
        }
        
        int OnListViewDoubleClicked1(ref TEvent evt,int param)
        int OnListViewDoubleClicked1(TEvent* evt, LPARAM param)
        {
            int  LVNI_ALL                = 0x0000;
            int  LVNI_FOCUSED        = 0x0001;
@@ -116,17 +130,17 @@
            int  LVNI_CUT               = 0x0004;
            int  LVNI_DROPHILITED   = 0x0008;
            
            int nItem =xlistview::GetNextItem(lv_view1.GetId(), -1, LVNI_FOCUSED);
            int nItem =lv_view.GetNextItem(lv_view1.GetId(), -1, LVNI_FOCUSED);
            if(nItem < 0) return 1;
            
            if(GetParam())
            if(GetWinParam())
            {
                msxml::IXMLDOMElement ele = GetItemData(lv_view1, nItem);
                xaserverarg arg = GetParam();
                arg.AddArg("action","open");
                arg.AddArg("id",ele.getAttribute("id"));
                arg.AddArg("ID",ele.getAttribute("id"));
                arg.AddArg("ItemID",ele.getAttribute("itemid"));
                KXMLDOMElement ele = GetItemData(lv_view1, nItem);
                xaserverarg arg = GetArg();
                arg.AddArg(L"action",L"open");
                arg.AddArg(L"id",ele.getAttribute(L"id"));
                arg.AddArg(L"ID",ele.getAttribute(L"id"));
                arg.AddArg(L"ItemID",ele.getAttribute(L"itemid"));
            }
            //重置工具条
            //OnDocumentOpen();
@@ -134,96 +148,97 @@
            return 1;
        }
        int SetListViewHeaderColumn(string Url,xlistview lv_item)
        int SetListViewHeaderColumn(xstring Url,xlistview lv_item)
        {
            const int LVCFMT_LEFT = 0;
            for(int i=0;i<3;i++)  lv_item.DeleteColumn(lv_item.GetId(),1);
            //if(Url=="")
            //if(Url==L"")
            //{
                lv_item.InsertColumn(lv_item.GetId(),0,"创建日期",LVCFMT_LEFT,80,0);
                lv_item.InsertColumn(lv_item.GetId(),0,"创建人员",LVCFMT_LEFT,80,0);
                lv_item.InsertColumn(lv_item.GetId(),0,"名称",0,120,0);
                lv_item.InsertColumn(lv_item.GetId(),0,L"创建日期",LVCFMT_LEFT,80,0);
                lv_item.InsertColumn(lv_item.GetId(),0,L"创建人员",LVCFMT_LEFT,80,0);
                lv_item.InsertColumn(lv_item.GetId(),0,L"名称",0,120,0);
                columnCount = 3;
            //}
            return 1;
        }
        
        int SetListViewHeaderColumnItem(string Url,xlistview lv_item)
        int SetListViewHeaderColumnItem(xstring Url,xlistview lv_item)
        {
            const int LVCFMT_LEFT = 0;
            for(int i=0;i<6;i++)  lv_item.DeleteColumn(lv_item.GetId(),1);
            //if(Url=="")
            //if(Url==L"")
            //{
                lv_item.InsertColumn(lv_item.GetId(),0,"最后修改日期",LVCFMT_LEFT,80,0);
                lv_item.InsertColumn(lv_item.GetId(),0,"创建日期",LVCFMT_LEFT,80,0);
                lv_item.InsertColumn(lv_item.GetId(),0,"创建人员",LVCFMT_LEFT,80,0);
                lv_item.InsertColumn(lv_item.GetId(),0,"״̬",0,70,0);
                lv_item.InsertColumn(lv_item.GetId(),0,"主题",0,120,0);
                lv_item.InsertColumn(lv_item.GetId(),0,"编号",0,70,0);
                lv_item.InsertColumn(lv_item.GetId(),0,"事务",0,60,0);
                lv_item.InsertColumn(lv_item.GetId(),0,L"最后修改日期",LVCFMT_LEFT,80,0);
                lv_item.InsertColumn(lv_item.GetId(),0,L"创建日期",LVCFMT_LEFT,80,0);
                lv_item.InsertColumn(lv_item.GetId(),0,L"创建人员",LVCFMT_LEFT,80,0);
                lv_item.InsertColumn(lv_item.GetId(),0,L"״̬",0,70,0);
                lv_item.InsertColumn(lv_item.GetId(),0,L"主题",0,120,0);
                lv_item.InsertColumn(lv_item.GetId(),0,L"编号",0,70,0);
                lv_item.InsertColumn(lv_item.GetId(),0,L"事务",0,60,0);
                columnCount = 6;
            //}
            return 1;
        }
        //命令处理事件
        int OnXCommand(ref TXCommandEvent evt,int param)
        int OnXCommand(TEvent* evt, LPARAM param)
        {
            return OnCmdDispatch(evt.pStrID);
            return OnCmdDispatch(evt->xcommand.pStrID);
        }
        
        int OnAttachEvent()
        {
            //绑定工具条点击事件
            AttachEvent("WM_XCOMMAND",OnXCommand);
            AttachEvent(L"WM_XCOMMAND", (FEvent)&TOSelectDlg::OnXCommand);
            //获取焦点事件,用于重置工具条
            AttachEvent("WM_SETFOCUS",OnSetFocus);
            AttachEvent(L"WM_SETFOCUS", (FEvent)&TOSelectDlg::OnSetFocus);
            return 1;
        }
        
        int RetrieveEx()
        {
            xml x = ViewObject::RetrieveData("/sale/data/TO/business/document/list");
            xml x = ViewObject::RetrieveData(L"/sale/data/TO/business/document/list");
            if(x)
            {
                msxml::IXMLDOMElement ele = x.GetXmlDoc().documentElement;
                msxml::IXMLDOMNodeList nlist=ele.SelectNodes("*");
                int s=nlist.length;
                KXMLDOMElement ele = x.documentElement();
                KXMLDOMNodeList nlist=ele.selectNodes(L"*");
                int s=nlist.length();
                if (s>0)
                {
                    for (int i=0; i<s; i++)
                    {
                        msxml::IXMLDOMElement e=nlist.item(i);
                        string name=e.getAttribute("caption");
                        int nItem = xlistview::InsertItemEx(lv_view1.GetId(),0,name,23,cast(e as int));
                        KXMLDOMElement e=nlist.item(i);
                        xstring name=e.getAttribute(L"caption");
                        int nItem = lv_view.InsertItemEx(0,name,23,e );
                        
                        xlistview::SetItemText(lv_view1.GetId(),nItem,2,e.getAttribute("subject"));
                        xlistview::SetItemText(lv_view1.GetId(),nItem,4,e.getAttribute("CreatorID"));
                        xlistview::SetItemText(lv_view1.GetId(),nItem,5,e.getAttribute("CreateDate"));
                        xlistview::SetItemText(lv_view1.GetId(),nItem,6,e.getAttribute("LastUpdateDate"));
                        lv_view.SetItemText(nItem,2,e.getAttribute(L"subject"));
                        lv_view.SetItemText(nItem,4,e.getAttribute(L"CreatorID"));
                        lv_view.SetItemText(nItem,5,e.getAttribute(L"CreateDate"));
                        lv_view.SetItemText(nItem,6,e.getAttribute(L"LastUpdateDate"));
                    }        
                }
            }
            return 1;
        }
        
        int Retrieve(string src)
        int Retrieve(xstring src)
        {
            xml x = ViewObject::RetrieveData("/sale/data/TO/template/list", "role","");
            xml x = ViewObject::RetrieveData(L"/sale/data/TO/template/list", L"role",L"");
            if(x)
            {
                msxml::IXMLDOMElement ele = x.GetXmlDoc().documentElement;
                msxml::IXMLDOMNodeList nlist=ele.SelectNodes("*");
                int s=nlist.length;
                KXMLDOMElement ele = x.documentElement();
                KXMLDOMNodeList nlist=ele.selectNodes(L"*");
                int s=nlist.length();
                if (s>0)
                {
                    for (int i=0; i<s; i++)
                    {
                        msxml::IXMLDOMElement e=nlist.item(i);
                        string name=e.getAttribute("caption");
                        int nItem = xlistview::InsertItemEx(lv_view.GetId(),0,name,23,cast(e as int));
                        KXMLDOMElement e=nlist.item(i);
                        xstring name=e.getAttribute(L"caption");
                        int nItem = lv_view.InsertItemEx(0,name,23,e);
                        
                        xlistview::SetItemText(lv_view.GetId(),nItem,1,e.getAttribute("Creator"));
                        xlistview::SetItemText(lv_view.GetId(),nItem,2,e.getAttribute("CreateDate"));
                        lv_view.SetItemText(nItem,1,e.getAttribute(L"Creator"));
                        lv_view.SetItemText(nItem,2,e.getAttribute(L"CreateDate"));
                    }        
                }
            }
@@ -232,24 +247,24 @@
        
        int onload()
        {
            lv_view = GetControl("lv_view");
            xlistview::SetdwStyle(lv_view.GetId(),0);
            SetArg();
            lv_view = GetControl(L"lv_view");
            lv_view.SetdwStyle(0);
            
            lv_view1 = GetControl("lv_view1");
            //xlistview::SetdwStyle(lv_view1.GetId(),0);
            lv_view1 = GetControl(L"lv_view1");
            //lv_view.SetdwStyle(lv_view1.GetId(),0);
                
            columnCount = 0;
            SetListViewHeaderColumn("",lv_view);
            SetListViewHeaderColumnItem("",lv_view1);
            AttachEvent("lv_view", "NM_DBLCLK",OnListViewDoubleClicked);
            AttachEvent("lv_view1", "NM_DBLCLK",OnListViewDoubleClicked1);
            SetListViewHeaderColumn(L"",lv_view);
            SetListViewHeaderColumnItem(L"",lv_view1);
            AttachEvent(L"lv_view", L"NM_DBLCLK", (FEvent)&TOSelectDlg::OnListViewDoubleClicked);
            AttachEvent(L"lv_view1", L"NM_DBLCLK", (FEvent)&TOSelectDlg::OnListViewDoubleClicked1);
        
            OnAttachEvent();
            
            Retrieve("");
            Retrieve(L"");
            RetrieveEx();
            
            return 1;
        }
    };
]
    };
jrj/project/business/Quote/XmShare.Quote.v3.cpp
@@ -1,38 +1,52 @@
use "xcontrol.vframe.vbusiness.vd"
use "xbase.vframe.vbusiness.vd"
use "saleorder.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 trade
[
    class XmShareQuotev3 :  public xframe
#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
#include "viewobject/view.base.hpp"
using xml = KXMLDOMDocument;
    class __declspec(dllexport) XmShareQuotev3 :  public xframe
    {
    public:
        xdwgrid    dw_list;
        xdwtable dw_paper;
        xnode    m_agentNode;    //Agent Condition
    public:
        XmShareQuotev3(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
    public:
        static XmShareQuotev3* CreateInstance(void* implPtr, void* hWnd)
        {
            XmShareQuotev3* pWin = new XmShareQuotev3(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,36 +54,36 @@
        }
        int OnSave()
        {
            xml x = new xml;
            x.setNativePointer(x.CreateInstance());
            xml x ;
            dw_list.AcceptText();
            dw_list.DwUpdateAllToEx(x.GetXmlDoc());
            dw_list.DwUpdateAllToEx(x);
            
            string val = x.GetXml();
            xstring val = x.xml();
            
            xaserverarg arg = new xaserverarg;
            arg.setNativePointer(arg.CreateInstance());
            arg.AddArg("content",val);
            xaserverarg arg ;
            arg.AddArg(L"content",val);
            //trace(val);
            if(url::get("/sale/data/UserGroup/update/entity", arg.GetString(),x)!=1)
            if(xurl::get(L"/sale/data/UserGroup/update/entity", arg.GetString(),x)!=1)
            {
                string error = x.GetXmlDoc().text;
                xstring error = x.text();
                //alert(error);
                return 1;
            }else
            {
                string str = x.GetXmlDoc().documentElement.getAttribute("text");
                if(str == "true")
                xstring str = x.documentElement().getAttribute(L"text");
                if(str == L"true")
                {
                    dw_list.ResetUpdateStatus();
                    alert("保存成功!");
                    alert(L"保存成功!");
                    
                    CloseWindow();
                }else 
                {
                    alert("保存失败!");
                    alert(L"保存失败!");
                }
                //alert(x.GetXml());
                //alert(x.xml());
            }
            return 1;
        }        
@@ -78,41 +92,41 @@
        {
            int MB_OKCANCEL = 1;
            int IDOK  = 1;
            int ret = win32::MessageBox(GetHWND(),"确认删除?","提示",MB_OKCANCEL);
            int ret = MessageBox(GetHWND(),L"确认删除?",L"提示",MB_OKCANCEL);
            if(ret == IDOK)
            {
                msxml::IXMLDOMElement ele = dw_list.GetRowElement(dw_list.GetRow());
                string ID = ele.getAttribute("guid");
                KXMLDOMElement ele = dw_list.GetRowElement(dw_list.GetRow());
                xstring ID = ele.getAttribute(L"guid");
                
                xml x = ViewObject::RetrieveData("/sale/data/Quote3/DeleteXmShare","ID",ID);
                string status = x.GetXml();
                if(status.find("ok") == 1)
                xml x = ViewObject::RetrieveData(L"/sale/data/Quote3/DeleteXmShare",L"ID",ID);
                xstring status = x.xml();
                if(status.find(L"ok") == 1)
                {
                    alert("删除成功");
                    alert(L"删除成功");
                    dw_list.DeleteRow(dw_list.GetRow());
                }else
                {
                    alert("删除失败");
                    alert(L"删除失败");
                }
                
            }
            return 0;
        }
        //命令发布函数
        int OnCmdDispatch(string comdid)
        int OnCmdDispatch(xstring comdid)
        {
                
            if(comdid=="xmDelete")
            if(comdid==L"xmDelete")
            {
                OnDelete();
                return 1;
            }
            else if(comdid=="xmSave")
            else if(comdid==L"xmSave")
            {
                OnSave();
                return 1;
            }
            else if(comdid=="xmClose")
            else if(comdid==L"xmClose")
            {
                CloseWindow();
                return 1;
@@ -122,30 +136,31 @@
        }
        
        //命令处理事件
        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)&XmShareQuotev3::OnXCommand);
            //获取焦点事件,用于重置工具条
            AttachEvent("WM_SETFOCUS",OnSetFocus);
            AttachEvent(L"WM_SETFOCUS", (FEvent)&XmShareQuotev3::OnSetFocus);
            return 1;
        }
        
        
        int  OnRetrieve()
        {
            xml x = new xml;
            x.setNativePointer(xml::CreateInstance());
            xaserverarg arg = GetParam();
            xml x ;
            xaserverarg arg = GetArg();
            if(arg)
            {
                string UserID = arg.GetArgString("UserID");
                xstring UserID = arg.GetArgString(L"UserID");
                //alert(UserID);
                x = ViewObject::RetrieveData("/sale/data/Quote3/XmShare","UserID",UserID);
                x = ViewObject::RetrieveData(L"/sale/data/Quote3/XmShare",L"UserID",UserID);
                if(x)dw_list.Retrieve(x);
                dw_list.SetReadOnly(true);
                dw_list.Redraw();
@@ -156,9 +171,10 @@
        
        int onload()
        {
            dw_list = GetControl("dw_list");
            dw_list.openUrl("/sale/view/Quote3/template/XmShare");
            dw_list.SetColumnState("EntityUserGroupID",false);
            SetArg();
            dw_list = GetControl(L"dw_list");
            dw_list.openUrl(L"/sale/view/Quote3/template/XmShare");
            dw_list.SetColumnState(L"EntityUserGroupID",false);
            
            OnRetrieve();
            
@@ -173,5 +189,4 @@
            //SetAgent();
            return 1;
        }        
    };
]
    };
jrj/project/business/Quote/trade.document.saveas.cpp
@@ -1,16 +1,31 @@
use "xcontrol.vframe.vbusiness.vd"
use "xbase.vframe.vbusiness.vd"
use "base.view.vd"
unit trade
[
    class DocFileSaveDlg:  public xframe
#include <wobject/xstring.hpp>
#include <xcontrol/xtreeview.hpp>
#include <xcontrol/xdwgrid.hpp>
#include <wobject/xdouble.hpp>
#include <xcontrol/xlayersheet.hpp>
#include <xcontrol/xdatetimepick.hpp>
#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
#include "viewobject/view.base.hpp"
using xml = KXMLDOMDocument;
    class __declspec(dllexport)  DocFileSaveDlg:  public xframe
    {
    public:
        xlistview  lv_view;
        xnode    m_agentNode;    //Agent Condition
        int columnCount ;
    public:
        DocFileSaveDlg(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
    public:
        static DocFileSaveDlg* CreateInstance(void* implPtr, void* hWnd)
        {
            DocFileSaveDlg* pWin = new DocFileSaveDlg(implPtr, (HWND)hWnd);
            return pWin;
        }
        //焦点激活处理函数
        int OnSetFocus(ref TEvent evt,int param)
        int OnSetFocus(TEvent* evt, LPARAM param)
        {
            //重置工具条
            return 1;
@@ -18,20 +33,20 @@
        //命令发布函数
        int OnCmdDispatch(string comdid)
        int OnCmdDispatch(xstring comdid)
        {
            if(comdid=="xmOk")
            if(comdid==L"xmOk")
            {
                string filename = GetControl("filename").GetText();
                if(filename=="") return 1;
                xaserverarg arg = GetParam();
                xstring filename =xcontrol(GetControl(L"filename")).GetText();
                if(filename==L"") return 1;
                xaserverarg arg = GetArg();
                if(!arg) return 1;
                arg.AddArg("result","ok");
                arg.AddArg("filename",filename);
                arg.AddArg(L"result",L"ok");
                arg.AddArg(L"filename",filename);
                CloseWindow();
                return 1;
            }
            else if(comdid=="xmCancel")
            else if(comdid==L"xmCancel")
            {
                CloseWindow();
                return 1;
@@ -40,49 +55,50 @@
        }
        
        //命令处理事件
        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)&DocFileSaveDlg::OnXCommand);
            //获取焦点事件,用于重置工具条
            AttachEvent("WM_SETFOCUS",OnSetFocus);
            AttachEvent(L"WM_SETFOCUS", (FEvent)&DocFileSaveDlg::OnSetFocus);
            return 1;
        }
        
    
        int SetListViewHeaderColumn(string Url)
        int SetListViewHeaderColumn(xstring Url)
        {
            const int LVCFMT_LEFT = 0;
            for(int i=0;i<3;i++)  lv_view.DeleteColumn(lv_view.GetId(),1);
            lv_view.InsertColumn(lv_view.GetId(),0,"创建人员",LVCFMT_LEFT,80,0);
            lv_view.InsertColumn(lv_view.GetId(),0,"创建日期",LVCFMT_LEFT,80,0);
            lv_view.InsertColumn(lv_view.GetId(),0,"名称",0,120,0);
            for(int i=0;i<3;i++)  lv_view.DeleteColumn(1);
            lv_view.InsertColumn(0,L"创建人员",LVCFMT_LEFT,80,0);
            lv_view.InsertColumn(0,L"创建日期",LVCFMT_LEFT,80,0);
            lv_view.InsertColumn(0,L"名称",0,120,0);
            columnCount = 3;
            return 1;
        }
        int Retrieve(string src)
        int Retrieve(xstring src)
        {
            xml x = ViewObject::RetrieveData("/sale/data/TDocument3/folder/list", "src",src);
            xml x = ViewObject::RetrieveData(L"/sale/data/TDocument3/folder/list", L"src",src);
            if(x)
            {
                msxml::IXMLDOMElement ele = x.GetXmlDoc().documentElement;
                msxml::IXMLDOMNodeList nlist=ele.SelectNodes("*");
                int s=nlist.length;
                KXMLDOMElement ele = x.documentElement();
                KXMLDOMNodeList nlist=ele.selectNodes(L"*");
                int s=nlist.length();
                if (s>0)
                {
                    for (int i=0; i<s; i++)
                    {
                        msxml::IXMLDOMElement e=nlist.item(i);
                        string name=e.getAttribute("caption");
                        int nItem = xlistview::InsertItemEx(lv_view.GetId(),0,name,23,cast(e as int));
                        KXMLDOMElement e=nlist.item(i);
                        xstring name=e.getAttribute(L"caption");
                        int nItem = lv_view.InsertItemEx(0,name,23,e);
                        
                        xlistview::SetItemText(lv_view.GetId(),nItem,1,e.getAttribute("Creator"));
                        xlistview::SetItemText(lv_view.GetId(),nItem,2,e.getAttribute("CreateDate"));
                        lv_view.SetItemText(nItem,1,e.getAttribute(L"Creator"));
                        lv_view.SetItemText(nItem,2,e.getAttribute(L"CreateDate"));
                    }        
                }
            }
@@ -91,17 +107,18 @@
        
        int onload()
        {
            lv_view = GetControl("lv_view");
            //xlistview::SetdwStyle(lv_view.GetId(),0);
            SetArg();
            lv_view = GetControl(L"lv_view");
            //lv_view.SetdwStyle(0);
                
            columnCount = 0;
            SetListViewHeaderColumn("");
            SetListViewHeaderColumn(L"");
            OnAttachEvent();
            
            if(GetParam())
            if(GetWinParam())
            {
                xaserverarg arg = GetParam();
                string src = arg.GetArgString("src");
                xaserverarg arg = GetArg();
                xstring src = arg.GetArgString(L"src");
                Retrieve(src);
            }
            
@@ -114,5 +131,4 @@
            
            return 1;
        }        
    };
]
    };
jrj/project/business/Quote/trade.document.selectdlg.cpp
@@ -1,45 +1,60 @@
use "xcontrol.vframe.vbusiness.vd"
use "xbase.vframe.vbusiness.vd"
use "base.view.vd"
unit trade
[
    class DocSelectDlg:  public xframe
#include <wobject/xstring.hpp>
#include <xcontrol/xtreeview.hpp>
#include <xcontrol/xdwgrid.hpp>
#include <wobject/xdouble.hpp>
#include <xcontrol/xlayersheet.hpp>
#include <xcontrol/xdatetimepick.hpp>
#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
#include "viewobject/view.base.hpp"
using xml = KXMLDOMDocument;
    class __declspec(dllexport) DocSelectDlg:  public xframe
    {
    public:
        //xdwgrid    dw_list;
        xlistview  lv_view;
        xnode    m_agentNode;    //Agent Condition
        int columnCount ;
    public:
        DocSelectDlg(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
    public:
        static DocSelectDlg* CreateInstance(void* implPtr, void* hWnd)
        {
            DocSelectDlg* pWin = new DocSelectDlg(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 OnListViewDoubleClicked(ref TEvent evt,int param)
        int OnListViewDoubleClicked(TEvent* evt, LPARAM param)
        {
            //重置工具条
            //SetAgent();
@@ -58,7 +73,7 @@
            int  LVNI_CUT               = 0x0004;
            int  LVNI_DROPHILITED   = 0x0008;
            int nItem =xlistview::GetNextItem(lv_view.GetId(), -1, LVNI_FOCUSED);
            int nItem =lv_view.GetNextItem( -1, LVNI_FOCUSED);
            if(nItem < 0) return 1;
            
            int LVIF_PARAM = 0x0004;
@@ -68,70 +83,70 @@
            lvItem.iSubItem = 0;
            lvItem.mask = LVIF_PARAM ;
            
            xlistview::GetItem(lv_view.GetId(), lvItem);
            msxml::IXMLDOMElement ele = trust(lvItem.lParam as msxml::IXMLDOMElement);
            lv_view.GetItem( lvItem);
            KXMLDOMElement ele = trust(lvItem.lParam as KXMLDOMElement);
            
            string src = ele.getAttribute("url");
            string name=ele.getAttribute("caption");
            string file ="";
            if(src.find("/file/")>0) file = src.mid(src.find("/file/") + 6,9999);
            if(file =="") return 1;
            string str = file.left(2);
            string ext = "";
            if(name.find(".")>=0) ext = name.mid(name.find("."),name.length());
            string sfile = file;
            xstring src = ele.getAttribute(L"url");
            xstring name=ele.getAttribute(L"caption");
            xstring file =L"";
            if(src.find(L"/file/")>0) file = src.mid(src.find(L"/file/") + 6,9999);
            if(file ==L"") return 1;
            xstring str = file.left(2);
            xstring ext = L"";
            if(name.find(L".")>=0) ext = name.mid(name.find(L"."),name.length());
            xstring sfile = file;
            
            xaserverarg arg =  GetParam();
            xaserverarg arg =  GetArg();
            if(arg)
            {
                arg.AddArg("result","ok");
                if((arg.GetArgString("process")=="path" ||arg.GetArgString("process")=="data"))
                arg.AddArg(L"result",L"ok");
                if((arg.GetArgString(L"process")==L"path" ||arg.GetArgString(L"process")==L"data"))
                {
                    string id = ele.getAttribute("ID");
                    arg.AddArg("ID", id);
                    arg.AddArg("path", src);
                    arg.AddArg("filename", name);
                    arg.AddArg("src","/business/attachment/"+str+"/"+ file+".jpg");
                    if(arg.GetArgString("process")=="path" ) return 1;
                    xstring id = ele.getAttribute(L"ID");
                    arg.AddArg(L"ID", id);
                    arg.AddArg(L"path", src);
                    arg.AddArg(L"filename", name);
                    arg.AddArg(L"src",L"/business/attachment/"+str+L"/"+ file+L".jpg");
                    if(arg.GetArgString(L"process")==L"path" ) return 1;
                }
            }
            
            
            /*
            const string d = m_Html.GetData(p.object);
            if(d == "") return -1;
            string file = d.mid(0, d.find("|##@@|",0));
            string name = d.mid(d.find("|##@@|",0)+6, d.length());
            const xstring d = m_Html.GetData(p.object);
            if(d == L"") return -1;
            xstring file = d.mid(0, d.find(L"|##@@|",0));
            xstring name = d.mid(d.find(L"|##@@|",0)+6, d.length());
            */
            
            xaserver::CreateDirectory("C:/Temp");
            xaserver::CreateDirectory(L"C:/Temp");
            if(arg)
            {
                if(arg.GetArgString("process")=="data")
                if(arg.GetArgString(L"process")==L"data")
                {
                    xml x = new xml;
                    x.setNativePointer(xml ::CreateInstance());
                    xaserver::LoadUrl(GetServerUrl(),"/business/attachment/"+str+"/"+ file+".jpg","",x);
                    arg.AddArg("data",x.GetXml());
                    xml x ;
                    xaserver::LoadUrl(GetServerUrl(),L"/business/attachment/"+str+L"/"+ file+L".jpg",L"",x);
                    arg.AddArg(L"data",x.xml());
                    return 1;
                }
            }
            
            int openRet = xaserver::DownLoadFile(GetServerUrl(),"/business/attachment/"+str+"/"+ file+".jpg","","C:/Temp/"+sfile+ext);
            int openRet = xaserver::DownLoadFile(GetServerUrl(),L"/business/attachment/"+str+L"/"+ file+L".jpg",L"",L"C:/Temp/"+sfile+ext);
            
            
            
            //alert("/business/attachment/"+str+"/"+ file+".jpg");
            //alert(L"/business/attachment/"+str+L"/"+ file+L".jpg");
            if(openRet < 0)
            {
                alert("文件打开失败1!");
                alert(L"文件打开失败1!");
                return -1;
            }
            //openRet = win32::ShellExecute(0,"open","C:/Temp/"+name,"","",5);
            openRet = win32::ShellExecute(0,"open","C:/Temp/"+sfile+ext,"","",5);
            //openRet = ShellExecute(0,L"open",L"C:/Temp/"+name,L"",L"",5);
            openRet = ShellExecute(0,L"open",L"C:/Temp/"+sfile+ext,L"",L"",5);
            if(openRet < 32)
            {
                alert("文件打开失败2!");
                alert(L"文件打开失败2!");
                return -1;
            }
            
@@ -139,36 +154,37 @@
        }
        //命令发布函数
        int OnCmdDispatch(string comdid)
        int OnCmdDispatch(xstring comdid)
        {
            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)&DocSelectDlg::OnXCommand);
            //获取焦点事件,用于重置工具条
            AttachEvent("WM_SETFOCUS",OnSetFocus);
            AttachEvent(L"WM_SETFOCUS", (FEvent)&DocSelectDlg::OnSetFocus);
            return 1;
        }
        
        /*
        int  OnRetrieve()
        {
            xml x = new xml;
            x.setNativePointer(xml::CreateInstance());
            xaserverarg arg = new xaserverarg;
            arg.setNativePointer(arg.CreateInstance());
            arg.AddArg("xxx","xxx");
            if (getUrl("",arg.GetString(),x)!=1)
            xml x ;
            xaserverarg arg ;
            arg.AddArg(L"xxx",L"xxx");
            if (getUrl(L"",arg.GetString(),x)!=1)
            {
                trace(x.GetXmlDoc().text);
                trace(x.text());
                return -1;
            }else    
            {
@@ -179,38 +195,38 @@
        }
        */
        
        int SetListViewHeaderColumn(string Url)
        int SetListViewHeaderColumn(xstring Url)
        {
            const int LVCFMT_LEFT = 0;
            for(int i=0;i<3;i++)  lv_view.DeleteColumn(lv_view.GetId(),1);
            //if(Url=="")
            for(int i=0;i<3;i++)  lv_view.DeleteColumn(1);
            //if(Url==L"")
            //{
                lv_view.InsertColumn(lv_view.GetId(),0,"创建人员",LVCFMT_LEFT,80,0);
                lv_view.InsertColumn(lv_view.GetId(),0,"创建日期",LVCFMT_LEFT,80,0);
                lv_view.InsertColumn(lv_view.GetId(),0,"名称",0,120,0);
                lv_view.InsertColumn(0,L"创建人员",LVCFMT_LEFT,80,0);
                lv_view.InsertColumn(0,L"创建日期",LVCFMT_LEFT,80,0);
                lv_view.InsertColumn(0,L"名称",0,120,0);
                columnCount = 3;
            //}
            return 1;
        }
        int Retrieve(string src)
        int Retrieve(xstring src)
        {
            xml x = ViewObject::RetrieveData("/sale/data/TDocument3/folder/list", "src",src);
            xml x = ViewObject::RetrieveData(L"/sale/data/TDocument3/folder/list", L"src",src);
            if(x)
            {
                msxml::IXMLDOMElement ele = x.GetXmlDoc().documentElement;
                msxml::IXMLDOMNodeList nlist=ele.SelectNodes("*");
                int s=nlist.length;
                KXMLDOMElement ele = x.documentElement();
                KXMLDOMNodeList nlist=ele.selectNodes(L"*");
                int s=nlist.length();
                if (s>0)
                {
                    for (int i=0; i<s; i++)
                    {
                        msxml::IXMLDOMElement e=nlist.item(i);
                        string name=e.getAttribute("caption");
                        int nItem = xlistview::InsertItemEx(lv_view.GetId(),0,name,23,cast(e as int));
                        KXMLDOMElement e=nlist.item(i);
                        xstring name=e.getAttribute(L"caption");
                        int nItem = lv_view.InsertItemEx(0,name,23,e);
                        
                        xlistview::SetItemText(lv_view.GetId(),nItem,1,e.getAttribute("Creator"));
                        xlistview::SetItemText(lv_view.GetId(),nItem,2,e.getAttribute("CreateDate"));
                        lv_view.SetItemText(nItem,1,e.getAttribute(L"Creator"));
                        lv_view.SetItemText(nItem,2,e.getAttribute(L"CreateDate"));
                    }        
                }
            }
@@ -219,17 +235,18 @@
        
        int onload()
        {
            lv_view = GetControl("lv_view");
            //xlistview::SetdwStyle(lv_view.GetId(),0);
            SetArg();
            lv_view = GetControl(L"lv_view");
            //lv_view.SetdwStyle(0);
                
            columnCount = 0;
            SetListViewHeaderColumn("");
            AttachEvent("lv_view", "NM_DBLCLK",OnListViewDoubleClicked);
            SetListViewHeaderColumn(L"");
            AttachEvent(L"lv_view", L"NM_DBLCLK", (FEvent)&DocSelectDlg::OnListViewDoubleClicked);
            
            if(GetParam())
            if(GetWinParam())
            {
                xaserverarg arg = GetParam();
                string src = arg.GetArgString("src");
                xaserverarg arg = GetArg();
                xstring src = arg.GetArgString(L"src");
                Retrieve(src);
            }
            
@@ -242,5 +259,4 @@
            
            return 1;
        }        
    };
]
    };
jrj/project/business/Quote/xmQuoteBillList.cpp
@@ -1,43 +1,57 @@
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 trade
[
    class xmQuoteBillList :  public xframe
#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
#include "viewobject/view.base.hpp"
using xml = KXMLDOMDocument;
    class __declspec(dllexport) xmQuoteBillList :  public xframe
    {
    public:
        xdwgrid    dw_list;
        xnode    m_agentNode;    //Agent Condition
        int hObject = 0;
    
        string QuoteNo;
        string printStr;
        xstring QuoteNo;
        xstring printStr;
    public:
        xmQuoteBillList(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
    public:
        static xmQuoteBillList* CreateInstance(void* implPtr, void* hWnd)
        {
            xmQuoteBillList* pWin = new xmQuoteBillList(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 OnRowChanged(ref TNotifyEvent evt,int p)
        int OnRowChanged(TEvent* evt, int p)
        {
            ref DWNMHDR  hdr = trust(evt.pnmh as ref DWNMHDR);
            DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
            int row = hdr.row;
            SetAgent();
            return 1;
@@ -45,7 +59,7 @@
        //焦点激活处理函数
        int OnSetFocus(ref TEvent evt,int param)
        int OnSetFocus(TEvent* evt, LPARAM param)
        {
            //重置工具条
            SetAgent();
@@ -56,78 +70,78 @@
        
            
        //命令发布函数
        int OnCmdDispatch(string comdid)
        int OnCmdDispatch(xstring comdid)
        {
            if(comdid=="xmImport")
            if(comdid==L"xmImport")
            {
                if(GetParam())
                if(GetWinParam())
                {
                    xaserverarg arg = GetParam();
                    arg.AddArg("items",printStr);
                    xaserverarg arg = GetArg();
                    arg.AddArg(L"items",printStr);
                    
                    arg.AddArg("action","ok");
                    arg.AddArg(L"action",L"ok");
                }
                CloseWindow();
                return 1;
            }
            if(comdid=="xmClose")
            if(comdid==L"xmClose")
            {
                
                CloseWindow();
                return 1;
            }
            if(comdid=="xmSearch")
            if(comdid==L"xmSearch")
            {
                
                OnRetrieve(QuoteNo);
                return 1;
            }
            if(comdid=="xmSelectAll") return SelectAll();
            if(comdid=="xmUnSelectAll") return UnSelectAll();
            if(comdid==L"xmSelectAll") return SelectAll();
            if(comdid==L"xmUnSelectAll") return UnSelectAll();
            
            return 0;
        }
        
        int OnDwClicked(ref TNotifyEvent evt,int p)
        int OnDwClicked(TEvent* evt, int p)
        {
            ref DWNMHDR hdr = cast(evt.pnmh as ref DWNMHDR);
            DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
            char ch;
            int row = hdr.row;
            string col = hdr.colname;
            xstring col = hdr.colname;
            
            string str = "";
            if(dw_list.GetGuid(row) !="")
            xstring str = L"";
            if(dw_list.GetGuid(row) !=L"")
            {
                str = dw_list.GetItemString(row,"QuoteLineID");
                str = dw_list.GetItemString(row,L"QuoteLineID");
            }
            
            if(dw_list.IsRowSelected(row) & 0xff)
            {
                printStr = printStr.replace(" "+str,"");
                printStr = printStr.replace(L" "+str,L"");
            }else
            {
                printStr += " " + str;
                printStr += L" " + str;
            }
            return 1;
        }
        //命令处理事件
        int OnXCommand(ref TXCommandEvent evt,int param)
        int OnXCommand(TEvent* evt, LPARAM param)
        {
            return OnCmdDispatch(evt.pStrID);
            return OnCmdDispatch(evt->xcommand.pStrID);
        }
        
        int SelectAll()
        {
            printStr="";
            printStr=L"";
            for(int row = 1; row <= dw_list.GetRowCount(); row++)
            {
                dw_list.SetItemString(row,"IsSend","1");
                dw_list.SetItemString(row,L"IsSend",L"1");
                dw_list.SelectRow(row,true);
                string str = "";
                if(dw_list.GetGuid(row) !="")
                xstring str = L"";
                if(dw_list.GetGuid(row) !=L"")
                {
                    str = dw_list.GetItemString(row,"QuoteLineID");
                    printStr += " " + str;
                    str = dw_list.GetItemString(row,L"QuoteLineID");
                    printStr += L" " + str;
                }
            }
            dw_list.Redraw();
@@ -136,10 +150,10 @@
        
        int UnSelectAll()
        {
            printStr="";
            printStr=L"";
            for(int row = 1; row <= dw_list.GetRowCount(); row++)
            {
                dw_list.SetItemString(row,"IsSend","0");
                dw_list.SetItemString(row,L"IsSend",L"0");
                dw_list.SelectRow(row,false);
            }
            dw_list.Redraw();
@@ -149,26 +163,27 @@
        int OnAttachEvent()
        {
            //绑定工具条点击事件
            AttachEvent("WM_XCOMMAND",OnXCommand);
            AttachEvent(L"WM_XCOMMAND", (FEvent)&xmQuoteBillList::OnXCommand);
            //获取焦点事件,用于重置工具条
            AttachEvent("WM_SETFOCUS",OnSetFocus);
            AttachEvent("dw_list","DWV_ROWFOCUSCHANGED",OnRowChanged);
            AttachEvent("dw_list","DWV_CLICKED",OnDwClicked);
            AttachEvent(L"WM_SETFOCUS", (FEvent)&xmQuoteBillList::OnSetFocus);
            AttachEvent(L"dw_list",L"DWV_ROWFOCUSCHANGED", (FEvent)&xmQuoteBillList::OnRowChanged);
            AttachEvent(L"dw_list",L"DWV_CLICKED", (FEvent)&xmQuoteBillList::OnDwClicked);
            return 1;
            
        }
        
        
        int  OnRetrieve(string QuoteNo)
        int  OnRetrieve(xstring QuoteNo)
        {
            xml x = new xml;
            x.setNativePointer(xml::CreateInstance());
            xaserverarg arg = new xaserverarg;
            arg.setNativePointer(arg.CreateInstance());
            arg.AddArg("QuoteNo",QuoteNo);
            xml x ;
            
            if (getUrl("/sale/data/ProductLibrary3/QuoteBillList",arg.GetString(),x)!=1)
            xaserverarg arg ;
            arg.AddArg(L"QuoteNo",QuoteNo);
            if (getUrl(L"/sale/data/ProductLibrary3/QuoteBillList",arg.GetString(),x)!=1)
            {
                trace(x.GetXmlDoc().text);
                trace(x.text());
                return -1;
            }else    
            {
@@ -182,15 +197,15 @@
            
        int onload()
        {
            dw_list = GetControl("dw_list");
            dw_list.openUrl("/sale/view/Quote3/template/Quote/QuoteBillList");
            dw_list = GetControl(L"dw_list");
            dw_list.openUrl(L"/sale/view/Quote3/template/Quote/QuoteBillList");
        
            
            if(GetParam())
            if(GetWinParam())
            {
                xaserverarg arg = GetParam();
                QuoteNo=arg.GetArgString("QuoteNo");
                OnRetrieve(arg.GetArgString("QuoteNo"));
                xaserverarg arg = GetArg();
                QuoteNo=arg.GetArgString(L"QuoteNo");
                OnRetrieve(arg.GetArgString(L"QuoteNo"));
            }
            OnRetrieve(QuoteNo);
            SelectAll();
@@ -204,5 +219,4 @@
            
            return 1;
        }        
    };
]
    };