use "win.vl" use "treeview.vm" use "dev:vm[xdwgrid.vm]" use "dev:vm[xdwtable.vm]" use "pref.vl" use "dev:vm[xml.vm]" use "dev:vm[xaserverarg.vm]" use "dev:vm[xaserver.vm]" use "dev:vm[xutil.vm]" unit vbusiness.xpage [ HrOrgChart is extend win__; about HrOrgChart [ control: method: [ treeview__ tv_org; xdwtable__ dw_parent; int m_bCanDestroy; xnode__ m_agentNode; //Agent Condition string m_agentCond; //Agent Node int OnTreeSelChanged(ref TNotifyEvent evt, int p) { ref NMTREEVIEW nmtv = evt.pnmh; int hitem = nmtv.itemNew.hItem; if (hitem == 0) hitem = treeview__::GetRootItem(tv_org.GetId()); string label = treeview__::GetItemLabel(tv_org.GetId(), hitem); string pUnit; pUnit = treeview__::GetItemLabel(tv_org.GetId(), hitem) + "\\"; int pitem = treeview__::GetParentItem(tv_org.GetId(), hitem); while (pitem > 0) { pUnit = treeview__::GetItemLabel(tv_org.GetId(), pitem) + "\\" + pUnit; pitem = treeview__::GetParentItem(tv_org.GetId(), pitem); } msxml::IXMLDOMElement ele = treeview__::GetItemData(tv_org.GetId(), hitem); string guid = ele.SelectSingleNode("@guid").text; //CloseWindow(); return 1; } int OnActive(ref TEvent evt, int p) { /*int WA_INACTIVE = 0; int WA_ACTIVE = 1; int WA_CLICKACTIVE = 2; int lw = evt.wParam & 0xffff; if( lw ==WA_INACTIVE && m_bCanDestroy==1 ) { win__::CloseWindow(); return 1; } if(lw !=WA_INACTIVE)m_bCanDestroy = 1; return 1;*/ } //½¹µã¼¤»î´¦Àíº¯Êý int OnSetFocus(ref TEvent evt, int p) { return 1; } int OnOK(string comdid) { xaserverarg__ arg = new xaserverarg__; arg.setNativePointer(arg.CreateInstance()); arg = win__::GetParam(); arg.AddArg("comdid", comdid); int hitem = treeview__::GetSelectedItem(tv_org.GetId()); if (hitem > 0) { msxml::IXMLDOMElement ele = treeview__::GetItemData(tv_org.GetId(), hitem); string guid = ele.SelectSingleNode("@guid").text; string label = ele.selectSingleNode("OrgName").text; arg.AddArg("OrgName", label); arg.AddArg("OrgId", guid); win__::CloseWindow(); } else win__::MessageBox(GetHWND(), "ÇëÑ¡Ôñ×éÖ¯£¡", "Ìáʾ", 0); return 1; } //ÃüÁî·¢²¼º¯Êý int OnCmdDispatch(string comdid) { int hCursor = xutil__::SetCursorWait(); if (comdid == "xmOk") OnOK(comdid); else if (comdid == "xmCancel") CloseWindow(); xutil__::RestoreCursor(hCursor); return 0; } //ÃüÁî´¦Àíʼþ int OnXCommand(ref TXCommandEvent evt, int p) { return OnCmdDispatch(evt.pStrID); } int OnAttachEvent() { //°ó¶¨¹¤¾ßÌõµã»÷ʼþ AttachEvent("WM_XCOMMAND", OnXCommand); //»ñÈ¡½¹µãʼþ£¬ÓÃÓÚÖØÖù¤¾ßÌõ AttachEvent("WM_SETFOCUS", OnSetFocus); AttachEvent("tv_org", "TVN_SELCHANGED", OnTreeSelChanged); //AttachEvent("WM_ACTIVATE",OnActive); } int OnInitial() { OnAttachEvent(); return 1; } int onload() { m_bCanDestroy = 1; tv_org = new treeview__; tv_org.setNativePointer(this.GetControl("tv_org")); OnInitial(); int root = treeview__::GetRootItem(tv_org.GetId()); treeview__::ExpandItemEx(tv_org.GetId(), root); return 1; } ] ] ]