LiFan
2024-06-28 b18ca9ae8f46e89d320c43c54dc8e6cfd10c043b
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
#include <wobject/xstring.hpp>
#include <xcontrol/xtreeview.hpp>
#include <xcontrol/xdwgrid.hpp>
#include <xcontrol/xlayersheet.hpp>
 
#include "vbusiness/vframe/maint.vframe.vbusiness.hpp"
#include "viewobject/view.base.hpp"
 
using xml = KXMLDOMDocument;
 
class __declspec(dllexport) MaintTemplatePrintWin :  public xframe
    {
    public:
        xcell cell;
        xnode    m_agentNode;    //Agent Condition
        xstring args;
    public:
        MaintTemplatePrintWin(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
    public:
        static MaintTemplatePrintWin* CreateInstance(void* implPtr, void* hWnd)
        {
            MaintTemplatePrintWin* pWin = new MaintTemplatePrintWin(implPtr, (HWND)hWnd);
            return pWin;
        }
        int SetAgent()
        {
            xstring xfNodeAgentArea  = L"agentarea";
            xnode anode = GetAgentNode(xfNodeAgentArea);
            if(m_agentNode)
            {
                SetAgentNode (anode,m_agentNode);
            }
            else
            {
                KXMLDOMElement xframeElement =  GetElement();
                KXMLDOMElement agent = xframeElement.selectSingleNode(L"agent/"+xfNodeAgentArea+L"[1]/*");
                if(agent)
                {
                    xstring s = agent.xml();
                    m_agentNode =  SetAgentNode (anode,s);
                }
            }
            return 1;
        }
 
        //½¹µã¼¤»î´¦Àíº¯Êý
        int OnSetFocus(TEvent* evt, LPARAM p)
        {
            //ÖØÖù¤¾ßÌõ
            SetAgent();
            return 1;
        }
}
 
        int SendCtrlCmd(xcontrol xc, xstring cmd)
        {
            win32::SendMessage(xc.GetId(),0x401,cmd,0);
            return 1;
        }
 
        //ÃüÁî·¢²¼º¯Êý
        int OnCmdDispatch(xstring comdid)
        {
            if(comdid.left(3) == L"IK_")
            {
                xstring cmd = comdid.mid(3, comdid.length());
                SendCtrlCmd(GetControl(L"cell"),cmd);
                return 1;
            }
            else if(comdid==L"xmFileOpen")
            {
                cell.OpenFile();
                cell.Redraw();
                return 1;
            }
            else if(comdid==L"xmFileSave")
            {
                cell.SaveFile();
                return 1;
            }
            else if(comdid==L"xmFileSaveAs")
            {
                cell.SaveFileAs();
                return 1;
            }
            return 0;
        }
        
        //ÃüÁî´¦Àíʼþ
        int OnXCommand(TEvent* evt, LPARAM p)
        {
            return OnCmdDispatch(evt->xcommand.pStrID);
        }
        
        int OnAttachEvent()
        {
            //°ó¶¨¹¤¾ßÌõµã»÷ʼþ
            AttachEvent(L"WM_XCOMMAND", (FEvent)&MaintTemplatePrintWin::OnXCommand);
            //»ñÈ¡½¹µãʼþ£¬ÓÃÓÚÖØÖù¤¾ßÌõ
            AttachEvent(L"WM_SETFOCUS", (FEvent)&MaintTemplatePrintWin::OnSetFocus);
        }
        
        int onload()
        {
            cell = GetControl(L"cell");
            SetAgent();            
        
            OnAttachEvent();    
            
            if(GetWinParam())
            {
                args = GetParamString();
                cell.openUrl(L"/sale/data/SysPrintTemplate/getdevxsl",args);
            }
            else
                args =L"";
            
            return 1;
        }
        
        int onloaded()
        {
            
            return 1;
        }