#include #include #include #include #include #include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" #include "viewobject/view.base.hpp" using xml = KXMLDOMDocument; class __declspec(dllexport) BindComputerDlgNew : public xwin { public: xdwgrid dw_list; public: BindComputerDlgNew(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd) {} public: static BindComputerDlgNew* CreateInstance(void* implPtr, void* hWnd) { BindComputerDlgNew* pWin = new BindComputerDlgNew(implPtr, (HWND)hWnd); return pWin; } int OnRetrieve() { xml x; xaserverarg arg; arg = GetArg(); if (arg.GetArgString(L"BindComputer")) { xstring sbys = arg.GetArgString(L"BindComputer"); //alert(sbys); x.loadXML(sbys); } else { x.loadXML(L""); } dw_list.Retrieve(x.selectSingleNode(L"args")); dw_list.ResetUpdateStatus(); dw_list.Redraw(); return 1; } int OnAddRow(xdwgrid dw) { dw.InsertRow(0); return 1; } int OnDelRow(xdwgrid dw) { int row = dw.GetRow(); if (row<1 || row > dw.GetRowCount()) return -1; dw.DeleteRow(row); return 1; } //ÃüÁî·¢²¼º¯Êý int OnCmdDispatch(xstring comdid) { dw_list.AcceptText(); xaserverarg arg; arg = GetArg(); arg.AddArg(L"comdid", comdid); if (comdid == L"ok") { xml x; dw_list.DwUpdateAllTo(x); arg.AddArg(L"xml", x.xml()); CloseWindow(); } else if (comdid == L"close") CloseWindow(); else if (comdid == L"add") OnAddRow(dw_list); else if (comdid == L"del") OnDelRow(dw_list); return 0; } //ÃüÁî´¦Àíʼþ int OnXCommand(TEvent* evt, LPARAM param) { return OnCmdDispatch(evt->xcommand.pStrID); } int OnAttachEvent() { //°ó¶¨¹¤¾ßÌõµã»÷ʼþ AttachEvent(L"WM_XCOMMAND", (FEvent)&BindComputerDlgNew::OnXCommand); return 1; } int onload() { SetArg(); OnAttachEvent(); dw_list = new xdwgrid; dw_list.setNativePointer(GetControl(L"dw_list")); dw_list.SetDataObject(GetServerUrl(), L"dev:sheet[SysUser.tpl/BindComputer]"); dw_list.SetReadOnly(true); if (GetWinParam()) { OnRetrieve(); } return 1; } };