xj qian
2024-07-15 4988c8950db8640eaeb2498b51aca2dfed2c685b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
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;
                }
            ]
 
        ]
]