From 8974271490c20a66ce5c6d898bcce1c04310cf9c Mon Sep 17 00:00:00 2001
From: LiFan <2308045698@qq.com>
Date: 星期三, 10 七月 2024 11:59:02 +0800
Subject: [PATCH] update
---
jrj/project/vindexform.cpp | 520 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 503 insertions(+), 17 deletions(-)
diff --git a/jrj/project/vindexform.cpp b/jrj/project/vindexform.cpp
index cb6a969..8d41e92 100644
--- a/jrj/project/vindexform.cpp
+++ b/jrj/project/vindexform.cpp
@@ -9,7 +9,10 @@
#include "wobject/xaserver.hpp"
#include "xcontrol/xcombobox.hpp"
#include "xcontrol/xlayersheet.hpp"
+ #include "vbusiness/vframe/frame.vframe.vbusiness.hpp"
+
+using xml = KXMLDOMDocument;
class __declspec(dllexport) vindexform: public xwin
{
public:
@@ -21,21 +24,133 @@
xcombobox cbx_panelNo;
xcombobox cbx_tab;
+
+ xcombobox memuId; //椤电鏁扮粍
+ xcombobox tabNo; //椤电椤哄簭鏁扮粍
+ xcombobox panelNo; //椤电鏁扮粍
+ xcombobox panelName; //椤电椤哄簭鏁扮粍
+
+ HWND m_npHwnd; //鑿滃崟鏍戠獥鍙e彞鏌�
+ HWND m_nHwnd; //鑿滃崟鏍戠獥鍙e彞鏌�
+ int m_cursheet; //褰撳墠椤电
+ int menuShow;
+
+ HWND m_npHwnd2; //openwindow
+ HWND m_startwin;
+
public:
vindexform(void* implPtr,HWND hWnd):xwin(implPtr,hWnd){}
public:
static vindexform * CreateInstance(void* implPtr,void* hWnd)
{
- vindexform* pWin = new vindexform(implPtr,(HWND)hWnd);
- return pWin;
+ return new vindexform(implPtr,(HWND)hWnd);
}
public:
+
+
+ xstring getHomeConfig(xstring att)
+ {
+ xml x ;
+ x.load(L"cache\\config.xml");
+ //alert(x.GetXml());
+ if (x.xml() == L"") return L"";
+ KXMLDOMElement e = x.documentElement();
+ if (e.selectSingleNode(L"home"))
+ {
+ KXMLDOMElement e1 = e.selectSingleNode(L"home");
+ if (e1.selectSingleNode(L"@" + att))
+ return e1.selectSingleNode(L"@" + att).text();
+ }
+ return L"";
+ }
+
+ int setHomeConfig(xstring att, xstring value)
+ {
+ xml x ;
+ x.load(L"cache\\config.xml");
+ if (x.xml() == L"")
+ {
+ //alert(L"<config><home "+att+L"=L"+value+L"/></config>");
+ x.loadXML(L"<config><home " + att + L"='" + value + L"'/></config>");
+ }
+ else
+ {
+ KXMLDOMElement e = x.documentElement();
+ if (e.selectSingleNode(L"home"))
+ {
+ KXMLDOMElement e1 = e.selectSingleNode(L"home");
+ e1.setAttribute(att, value);
+ }
+ else
+ {
+ KXMLDOMElement e2 = x.createElement(L"home");
+ e2.setAttribute(att, value);
+ e.appendChild(e2);
+ }
+ //alert(e.xml);
+ }
+ //alert(x.GetXml());
+ xutil::SaveToFile(L"cache\\config.xml", x.xml(), L"", L"", (LPTSTR)L"");
+ return 1;
+ }
+
int OnDWClick(TEvent* evt, int p)
{
alert(L"clicked");
return 1;
}
+
int OnMenu(HWND hMenu)
+ {
+ if (!hMenu)
+ {
+ HWND hw = m_hMenu;
+ bool f = IsWindow(hw);
+
+ if (hw == 0 && f <= 0)
+ {
+ xaserverarg* arg = new xaserverarg();
+ HWND hWnd = GetHWND();
+ arg->SetParam(L"hwnd", (LPARAM)hWnd);
+ arg->SetParam(L"memuId", (LPARAM)cbx_menu.getNativePointer());
+ arg->SetParam(L"tabNo", (LPARAM)cbx_tab.getNativePointer());
+ arg->SetParam(L"panelNo", (LPARAM)cbx_panelNo.getNativePointer());
+ arg->SetParam(L"panelName", (LPARAM)cbx_panelName.getNativePointer());
+ xwin* pwin = OpenWindow(L"dev:xpage[vindexmenu.vx]", (LPARAM)arg);
+ m_hMenu = pwin->GetHWND();
+ hw = m_hMenu;
+ //return 1;
+ }
+ HWND HWND_TOPMOST = (HWND)-1;
+ HWND HWND_NOTOPMOST = (HWND)-2;
+ int SWP_NOSIZE = 0x0001;
+ int SWP_NOMOVE = 0x0002;
+ int SWP_SHOWWINDOW = 0x0040;
+ SetWindowPos(hw, HWND_TOPMOST, -1000, -1000, 0, 0, SWP_NOSIZE | SWP_SHOWWINDOW);
+ }
+ else
+ {
+ m_hMenu = hMenu;
+ }
+
+ xrect xr;
+ xcontrol xc = GetControl(L"xmMenu");
+ GetWindowRect(xc.GetHWND(), xr);
+ int l = xr.left;
+ int b = xr.bottom;
+
+ xrect r;
+ xc = GetControl(L"split");
+ GetWindowRect(xc.GetHWND(), r);
+ int t2 = r.top;
+ int b2 = r.bottom;
+
+ MoveWindow(m_hMenu, l - 7, b, 220, b2 - t2, true);
+
+ return 1;
+ }
+
+ int OnMenu1(xstring hMenu)
{
if (!hMenu)
{
@@ -65,7 +180,7 @@
}
else
{
- m_hMenu = hMenu;
+ m_hMenu = (HWND)hMenu.toInt64();
}
xrect xr;
@@ -84,28 +199,331 @@
return 1;
}
+ int OnMenuAgent(xstring f)
+ {
+ //int LayerFlow_None = 0x00000001;
+ //int LayerFlow_UnLayer = 0x00000100;
+ //int LayerFlow_NS = 0x00000004;
+ //int LayerFlow_Control = 0x00000010;
+ int GWL_STYLE = -16;
+ int WS_POPUP = 0x80000000;
+ int WS_CHILD = 0x40000000;
+ int WS_MAXIMIZE = 0x00010000;
+ int SW_MAXIMIZE = 3;
+ HWND HWND_TOPMOST = (HWND) - 1;
+ HWND HWND_NOTOPMOST = (HWND) - 2;
+ int SWP_NOSIZE = 0x0001;
+ int SWP_NOMOVE = 0x0002;
+ int SWP_SHOWWINDOW = 0x0040;
+ SetWindowPos(m_nHwnd, HWND_TOPMOST, -1000, -1000, 0, 0, SWP_NOSIZE | SWP_SHOWWINDOW);
+ int style = GetWindowLong(m_nHwnd, GWL_STYLE);
+ xnode anode = GetAgentNode(L"menuAgent");
+ xnode bnode = GetAgentNode(L"xmMenu");
+ int isshow = menuShow;
+ if (isshow == -1)
+ {
+ anode.SetLayerFlow(LayerFlow_NS | LayerFlow_Control);
+ bnode.SetLayerFlow(LayerFlow_None | LayerFlow_UnLayer);
+ style = style - WS_POPUP;
+ style = style + WS_CHILD;
+ SetWindowLong(m_nHwnd, GWL_STYLE, style);
+
+ m_npHwnd = GetParent(m_nHwnd);
+ xcontrol xc = GetControl(L"menuAgent");
+ SetParent(m_nHwnd, xc.GetHWND());
+ ShowWindow(m_nHwnd, SW_MAXIMIZE);
+
+ ///AttachEvent(L"WM_SIZE",OnMenuSizeChanged);
+ //AttachEvent(L"WM_PAINT",OnMenuSizeChanged);
+ //AttachEvent(L"WM_WINDOWPOSCHANGED",OnMenuSizeChanged);
+ }
+ else
+ {
+ bnode.SetLayerFlow(LayerFlow_NS | LayerFlow_Control);
+ anode.SetLayerFlow(LayerFlow_None | LayerFlow_UnLayer);
+
+ style = style + WS_POPUP;
+ style = style - WS_CHILD;
+ SetWindowLong(m_nHwnd, GWL_STYLE, style);
+ SetParent(m_nHwnd, m_npHwnd);
+ OnMenu(NULL);
+ }
+ menuShow = -1 - isshow;
+ xcombobox::SetCurSel(memuId.GetHWND(), menuShow);
+ if (f != L"")
+ setHomeConfig(L"menuposition", xstring(menuShow));
+ return 1;
+ }
+
+ int ResetMenu()
+ {
+ //if(m_nHwnd) xwin::CloseWindow(m_nHwnd);
+ m_nHwnd = 0;
+
+ menuShow = -1;
+ xstring f = getHomeConfig(L"menuposition");
+ if (f == L"0")
+ {
+ OnMenu(NULL);
+ OnMenuAgent(L"");
+ }
+
+ xaserverarg arg;
+
+ HWND h = GetHWND();
+ //arg.AddArg(L"hwnd", xstring(h));
+ arg.SetParam(L"hwnd", h);
+
+ OpenWindow(L"dev:xpage[vindexforold.vx]", arg);
+
+ return 1;
+ }
+
+ int ReSetInfo()
+ {
+
+ memuId.ResetContent();
+ tabNo.ResetContent();
+ panelNo.ResetContent();
+ panelName.ResetContent();
+
+ int hItem = mainsheet.GetSheetCount();
+ while (hItem > 1)
+ {
+ //mainsheet.DeleteSheet(hItem - 1);
+ SendMessage(GetHWND(), 0x401, (WPARAM)L"xmSheetClose", 0);
+ hItem = mainsheet.GetSheetCount();
+ }
+
+ xml x;
+
+ xaserverarg arg;
+
+ arg.AddArg(L"Assignment", m_Assignment);
+ //alert(arg.GetString());
+ if (xaserver::ExecXQuery(GetServerUrl(), L"[GetSysInfo.xq]", arg.GetString(), x) != 1)
+ {
+ //trace(x.GetXml());
+ return -1;
+ }
+ if (x.xml() == L"") return -1;
+ KXMLDOMElement e = x.documentElement();
+ if (/*m_Assignment == L"" &&*/ e.selectSingleNode(L"AssignmentID"))
+ {
+ xstring sInfoEx = e.selectSingleNode(L"AssignmentID").text();
+ m_Assignment = sInfoEx;
+ }
+
+ if (m_Assignment == L"")
+ alert(L"鑾峰彇鐢ㄦ埛鏁版嵁澶辫触锛岃閲嶆柊鐧诲綍!");
+ else
+ xaserver::SetUID((LPWSTR)m_Assignment);
+
+ xcombobox::AddItem(memuId.GetHWND(), L"寮�濮�");
+ xcombobox::AddItem(tabNo.GetHWND(), L"-1");
+ //OpenWindow(L"dev:xpage[vstart.vx]");
+ xcontrol xc = GetControl(L"statusbar0");
+ xc.SetText(L"姝e湪鍒濆鍖栫郴缁燂紝璇风◢鍊�....");
+ HCURSOR hCursor = xutil::SetCursorWait();
+ if (e.selectSingleNode(L"name"))
+ {
+ xstring sInfo = e.selectSingleNode(L"name").text();
+ xc.SetText(sInfo + L" 绯荤粺鐗堟湰:" + xaserver::GetVersion());
+ }
+
+ ResetMenu();
+ xutil::RestoreCursor(hCursor);
+ return 1;
+ }
+
+ int OnChangeLogin()
+ {
+ xml x;
+
+ xaserverarg arg ;
+
+ arg.AddArg(L"userno", xaserver::GetUserNo());
+ if (xaserver::ExecXQuery(GetServerUrl(), L"[GetSysAssignment.xq]", arg.GetString(), x) != 1)
+ {
+ trace(x.xml());
+ return -1;
+ }
+ if (x.xml() == L"") return -1;
+ KXMLDOMElement e = x.documentElement();
+ KXMLDOMNodeList li = e.selectNodes(L"item");
+ int i;
+ int s = li.length();
+ xstring sInfo = m_Assignment;
+ if (s > 0)
+ {
+ HMENU m = CreatePopupMenu();
+ int MF_STRING = 0x00000000;
+ int MF_DISABLED = 0x00000002;
+ int TPM_RIGHTBUTTON = 0x0002;
+ int TPM_RETURNCMD = 0x0100;
+ int MF_CHECKED = 0x8;
+ for (i = 0; i < s; i++)
+ {
+ KXMLDOMElement xitem = li.item(i);
+ xstring id = xitem.selectSingleNode(L"AssignmentID").text();
+ xstring name = xitem.selectSingleNode(L"PositionName").text();
+ if (sInfo == id)
+ AppendMenu(m, MF_STRING | MF_CHECKED, i + 1, name);
+ else
+ AppendMenu(m, MF_STRING, i + 1, name);
+ }
+ RECT xr;
+ xpoint pt;
+ GetCursorPos(pt);
+ int res = TrackPopupMenu(m, TPM_RIGHTBUTTON | TPM_RETURNCMD, pt.x, pt.y, 0, GetHWND(), &xr);
+ if (res == 0) return 0;
+ KXMLDOMElement ele = li.item(res - 1);
+ xstring sInfoEx = ele.selectSingleNode(L"AssignmentID").text();
+ if (m_Assignment == sInfoEx) return 0;
+ m_Assignment = sInfoEx;
+ ReSetInfo();
+ /*if(m_nHwnd)
+ {
+ win32::CloseWindow(m_nHwnd);
+ }*/
+ }
+ return 1;
+ }
+
+ int OnAllCaption()
+ {
+ HMENU m = CreatePopupMenu();
+ int MF_STRING = 0x00000000;
+ int MF_DISABLED = 0x00000002;
+ int TPM_RIGHTBUTTON = 0x0002;
+ int TPM_RETURNCMD = 0x0100;
+ int MF_CHECKED = 0x8;
+
+ int k = mainsheet.GetSheetIndex();
+ //int cs = xcombobox::GetCount(memuId.GetId());
+ int cs = mainsheet.GetSheetCount();
+ int i;
+ for (i = 0; i < cs; i++) {
+ //string str = xcombobox::GetLBText(memuId.GetId(), i);
+ xstring str = mainsheet.GetSheetText(i);
+ if (i == k)
+ AppendMenu(m, MF_STRING | MF_CHECKED, i + 1, str);
+ else
+ AppendMenu(m, MF_STRING, i + 1, str);
+ }
+ RECT xr;
+ xpoint pt;
+ GetCursorPos(pt);
+ int res = TrackPopupMenu(m, TPM_RIGHTBUTTON | TPM_RETURNCMD, pt.x, pt.y, 0, GetHWND(), &xr);
+ if (res == 0) return 0;
+ int nSheet = mainsheet.GetSheetIndex();
+ if (nSheet == (res - 1)) return 0;
+ mainsheet.SelectSheet(res - 1);
+ return 0;
+ }
+ int OnChangeSheet(xstring sheet)
+ {
+ if (sheet == L"") return 0;
+ int nIndex = sheet.toInt();
+ int curIndex = mainsheet.GetSheetIndex();
+ if (nIndex == curIndex)
+ return 0;
+ mainsheet.SelectSheet(nIndex);
+ return 1;
+ }
+ int OnMenuSizeChanged(TEvent* evt, int p)
+ {
+ /*xrect xr33;
+ xcontrol xc = GetControl(L"menuAgent");
+ xwin::GetWindowRect(xc.GetId(), xr33);
+ int l = xr33.left;
+ int b = xr33.right;
+ int xx = b - l;*/
+ //alert(xx.toString());
+ int isshow = menuShow;
+ if (isshow == 0)
+ {
+ int SW_MAXIMIZE = 3;
+ xcontrol xc = GetControl(L"menuAgent");
+ SetParent(m_nHwnd, xc.GetHWND());
+ ShowWindow(m_nHwnd, SW_MAXIMIZE);
+ }
+ return 1;
+ }
+
+#if 0
+ int OnOpen(xstring pa)
+ {
+ //xwin::SendMessage(m_npHwnd2, 0x401, pa, 0);
+ //return 1;
+ /*if(xaserver::GetUserNo() == L"admin")
+ {
+ OpenWindow(L"dev:xpage[vstart.vx]");
+ return 1;
+ }*/
+
+ xaserverarg arg ;
+ xstring isnew = arg.GetArgString(L"_isNewModule");
+ xstring vx = arg.GetArgString(L"_ModuelPage");
+ if (isnew == L"Y")
+ {
+ if (vx.find(L".vx", 0) > 0 || vx.find(L".xpage", 0) > 0)
+ OpenWindow(L"dev:xpage[" + vx + L"]", arg);
+ else
+ openUrl(vx, p);
+ return 1;
+ }
+ //OpenWindow(L"dev:xpage[vindexforold.vx]", p);
+ return 1;
+ }
+
+ int OnOpenForOld(xstring pa)
+ {
+ m_npHwnd2 = pa.toInt();
+
+ int GWL_STYLE = -16;
+ int WS_POPUP = 0x80000000;
+ int WS_CHILD = 0x40000000;
+ int SW_MAXIMIZE = 3;
+ int style = GetWindowLong(m_npHwnd2, GWL_STYLE);
+ style = style - WS_POPUP;
+ style = style + WS_CHILD;
+ SetWindowLong(m_npHwnd2, GWL_STYLE, style);
+
+ xcontrol xc = GetControl(L"openforold");
+ SetParent(m_npHwnd2, xc.GetHWND());
+
+ ShowWindow(m_npHwnd2, SW_MAXIMIZE);
+ return 1;
+ }
+#endif
+ int OnHelp()
+ {
+ OpenWindow(L"dev:xpage[trade.help3.vx]");
+ return 1;
+ }
int OnCmdDispatch(xstring comdid)
{
if (comdid == L"xmMenu") OnMenu(0);
//else if (comdid.find(L"menuid:", 0) >= 0)
// return OnMenu((HWND)comdid.mid(comdid.find(L":", 0) + 1, comdid.length()).toInt());
-#if 0
- if (comdid ==L "xmAssignment") OnChangeLogin();
+
+ if (comdid ==L"xmAssignment") OnChangeLogin();
else if (comdid == L"xmAllCaption") OnAllCaption();
- else if (comdid == L"xmMenu") OnMenu(L"");
+ else if (comdid == L"xmMenu") OnMenu(0);
else if (comdid == L"xmHelp") return OnHelp();
- else if (comdid.find("menuid:", 0) >= 0) OnMenu(comdid.mid(comdid.find(":", 0) + 1, comdid.length()));
- else if (comdid.find("menuAgent:", 0) >= 0) OnMenuAgent(comdid.mid(comdid.find(":", 0) + 1, comdid.length()));
- else if (comdid.find("changesheet:", 0) >= 0) OnChangeSheet(comdid.mid(comdid.find(":", 0) + 1, comdid.length()));
- else if (comdid.find("openforoldid:", 0) >= 0) OnOpenForOld(comdid.mid(comdid.find(":", 0) + 1, comdid.length()));
- else if (comdid.find("open:", 0) >= 0) OnOpen(comdid.mid(comdid.find(":", 0) + 1, comdid.length()));
- else if (comdid == "xmRefreshTask")
+ //else if (comdid.find(L"menuid:", 0) >= 0) OnMenu(comdid.mid(comdid.find(L":", 0) + 1, comdid.length()));
+ else if (comdid.find(L"menuAgent:", 0) >= 0) OnMenuAgent(comdid.mid(comdid.find(L":", 0) + 1, comdid.length()));
+ else if (comdid.find(L"changesheet:", 0) >= 0) OnChangeSheet(comdid.mid(comdid.find(L":", 0) + 1, comdid.length()));
+ //else if (comdid.find(L"openforoldid:", 0) >= 0) OnOpenForOld(comdid.mid(comdid.find(L":", 0) + 1, comdid.length()));
+ //else if (comdid.find(L"open:", 0) >= 0) OnOpen(comdid.mid(comdid.find(L":", 0) + 1, comdid.length()));
+ else if (comdid == L"xmRefreshTask")
{
- SendMessage(m_startwin, 0x401, comdid, 0);
+ SendMessage(m_startwin, 0x401, (WPARAM)comdid.c_str(), 0);
return 1;
}
-#endif
+
return 0;
}
@@ -117,11 +535,63 @@
int OnAttachListon()
{
AttachEvent(L"WM_XCOMMAND",(FEvent)&vindexform::OnXCommand,this);
- //AttachEvent("mdilayer", "LYSN_SELECTEDSHEET",OnSheetChanged);
- ////AttachEvent("mdilayer", "LYSN_CLOSESHEET",OnCloseSheet);
+ //AttachEvent(L"mdilayer", L"LYSN_SELECTEDSHEET", (FEvent)&vindexform::OnSheetChanged);
+ ////AttachEvent(L"mdilayer", L"LYSN_CLOSESHEET",OnCloseSheet);
return 1;
}
-
+ int OnSheetChanged(TEvent* evt, int p)
+ {
+ LYSNMHDR& nmtv = *(LYSNMHDR*)evt->notify.pnmh;
+ int sheet = nmtv.nSheet;
+ int s = mainsheet.GetSheetCount();
+ //trace(s);
+ int cs = xcombobox::GetCount(memuId.GetHWND());
+ int cursheet = m_cursheet;
+
+ if (s > cs) {
+ xcombobox::AddItem(memuId.GetHWND(), L"鑷敱绐楀彛");
+ xcombobox::AddItem(tabNo.GetHWND(), xstring(cursheet));
+ }
+ if (s < cs) {
+ xcombobox::DeleteItem(memuId.GetHWND(), cursheet);
+ int i = 0;
+ xstring value = xcombobox::GetLBText(tabNo.GetHWND(), cursheet);
+ for (i = 0; i < cs; i++)
+ {
+ xstring tabId = xcombobox::GetLBText(tabNo.GetHWND(), i);
+ if (tabId == xstring(cursheet))
+ {
+ xcombobox::DeleteItem(tabNo.GetHWND(), i);
+ xcombobox::InsertString(tabNo.GetHWND(), i, value);
+ }
+ }
+ xcombobox::DeleteItem(tabNo.GetHWND(), cursheet);
+ if (sheet != value.toInt())
+ mainsheet.SelectSheet(value.toInt());
+ }
+
+ if (cursheet != mainsheet.GetSheetIndex())
+ {
+ HWND hPicture = FindWindowEx(0, 0, L"XFrameWndClass", L"__ProductPicture");
+ if (hPicture)
+ {
+ int WM_CLOSE = 0x0010;
+ PostMessage(hPicture, WM_CLOSE, 0, 0);
+ }
+ }
+
+ m_cursheet = mainsheet.GetSheetIndex();
+ return 1;
+ }
+
+ int OnCloseSheet(TEvent* evt, int p)
+ {
+ LYSNMHDR& nmtv = *(LYSNMHDR*)evt->notify.pnmh;
+ int sheet = nmtv.nSheet;
+ //alert(L"xxxx");
+ return 1;
+ }
+
int SetUserID()
{
Hxsoft::XFrame::KXMLDOMDocument x;
@@ -148,6 +618,22 @@
return 1;
}
+ int OnInitial()
+ {
+ xstring userno = xaserver::GetUserNo();
+ if (userno == L"admin" /*|| userno==L"00206" || userno==L"00206" || userno==L"00201" ||userno==L"00101" */)
+ {
+ xnode anode = GetAgentNode(L"dev");
+ int LayerFlow_WE_ = 0x00000002;
+ int LayerFlow_Control_ = 0x00000010;
+
+ anode.SetLayerFlow(LayerFlow_WE | LayerFlow_Control);
+ }
+ m_Assignment = L"";
+
+ return 1;
+ }
+
int Initial()
{
SetUserID();
--
Gitblit v1.9.3