From 85b59ba5c6e2b2ad0cce127d414afef187eddb0b Mon Sep 17 00:00:00 2001 From: xj qian <qianxj15@sina.com> Date: 星期四, 14 十一月 2024 15:31:20 +0800 Subject: [PATCH] update --- jrj/xframe/kobject/kcell.hpp | 172 ++++++++++++----------- jrj/project/business/QuoteFile.cpp | 215 +++++++++++++++++++++++++++++- jrj/xframe/xcontrol/xcell.hpp | 16 ++ 3 files changed, 313 insertions(+), 90 deletions(-) diff --git a/jrj/project/business/QuoteFile.cpp b/jrj/project/business/QuoteFile.cpp index c0fa286..c363769 100644 --- a/jrj/project/business/QuoteFile.cpp +++ b/jrj/project/business/QuoteFile.cpp @@ -1853,7 +1853,7 @@ } dw_cell.SetRowColumn(lastrow, 1); dw_cell.SetAnchorRowColumn(lastrow, 1); - SendCtrlCmd(dw_cell, L"xmFormatCellDeleteRow"); + //SendCtrlCmd(dw_cell, L"xmFormatCellDeleteRow"); drow++; } } @@ -2145,16 +2145,16 @@ SendCtrlCmd(cell1, L"xmFormatCellInsertCol"); SendCtrlCmd(cell1, L"xmFormatCellInsertCol"); SendCtrlCmd(cell1, L"xmFormatCellInsertCol"); - SendCtrlCmd(cell1, L"xmFormatCellInsertCol"); - SendCtrlCmd(cell1, L"xmFormatCellInsertCol"); - SendCtrlCmd(cell1, L"xmFormatCellInsertCol"); + //SendCtrlCmd(cell1, L"xmFormatCellInsertCol"); + //SendCtrlCmd(cell1, L"xmFormatCellInsertCol"); + //SendCtrlCmd(cell1, L"xmFormatCellInsertCol"); cell1.SetItemString(headrow, purchremarkcol + 1, L"供应商"); cell1.SetItemString(headrow, purchremarkcol + 2, L"类型"); cell1.SetItemString(headrow, purchremarkcol + 3, L"价格"); - cell1.SetItemString(headrow, purchremarkcol + 4, L"供应商1"); - cell1.SetItemString(headrow, purchremarkcol + 5, L"类型1"); - cell1.SetItemString(headrow, purchremarkcol + 6, L"价格1"); + //cell1.SetItemString(headrow, purchremarkcol + 4, L"供应商1"); + //cell1.SetItemString(headrow, purchremarkcol + 5, L"类型1"); + //cell1.SetItemString(headrow, purchremarkcol + 6, L"价格1"); int colRemark = getItemCol(cell1, headrow, L"Remarks"); cell1.SetRowColumn(1, colRemark); @@ -3561,10 +3561,59 @@ return 1; } + int OnDelBOMItem() + { + int startRow = getItemHeadRow(dw_cell); + int headrow = startRow; + if (startRow < 1) return 1; + startRow++; + int row = dw_cell.GetRow(); + + int colPurchPrice1 = getItemCol(dw_cell, headrow, L"价格1"); + int colPurchPrice2 = getItemCol(dw_cell, headrow, L"价格2"); + int colPurchPrice3 = getItemCol(dw_cell, headrow, L"价格3"); + if (colPurchPrice3 > 0) + { + dw_cell.SetRowColumn(row, colPurchPrice3 - 2); + dw_cell.SetAnchorRowColumn(row, colPurchPrice3 - 2); + + SendCtrlCmd(dw_cell, L"xmFormatCellDeleteCol"); + SendCtrlCmd(dw_cell, L"xmFormatCellDeleteCol"); + SendCtrlCmd(dw_cell, L"xmFormatCellDeleteCol"); + return 1; + } + + if (colPurchPrice2 > 0) + { + dw_cell.SetRowColumn(row, colPurchPrice2 -2); + dw_cell.SetAnchorRowColumn(row, colPurchPrice2 -2); + + SendCtrlCmd(dw_cell, L"xmFormatCellDeleteCol"); + SendCtrlCmd(dw_cell, L"xmFormatCellDeleteCol"); + SendCtrlCmd(dw_cell, L"xmFormatCellDeleteCol"); + + return 1; + } + + if (colPurchPrice1 > 0) + { + dw_cell.SetRowColumn(row, colPurchPrice1 - 2); + dw_cell.SetAnchorRowColumn(row, colPurchPrice1 - 2); + + SendCtrlCmd(dw_cell, L"xmFormatCellDeleteCol"); + SendCtrlCmd(dw_cell, L"xmFormatCellDeleteCol"); + SendCtrlCmd(dw_cell, L"xmFormatCellDeleteCol"); + + return 1; + } + return 1; + } + //命令发布函数 int OnCmdDispatch(xstring comdid) { if (comdid == L"xmAddBOMItem") return OnAddBOMItem(); + if (comdid == L"xmDelBOMItem") return OnDelBOMItem(); if (comdid == L"xmQuoteBill") { if (dw_base.GetItemString(1, L"CustomerID") == L"") @@ -4922,6 +4971,156 @@ return str.mid(pos, epos - pos); } + int AdjustView(xcell& dw_cell) + { + int startRow = getItemHeadRow(dw_cell); + + //没有找到商品行的标题 + if (startRow < 1) return 0; + startRow++; + + int colItemDesc = getItemCol(dw_cell, startRow - 1, L"产品信息"); + int colPhoto = getItemCol(dw_cell, startRow - 1, L"Photo"); + + bool newItemDesc = false; + if (colItemDesc < 0) + { + dw_cell.SetRowColumn(1, colPhoto+1); + dw_cell.SetAnchorRowColumn(1, colPhoto+1); + SendCtrlCmd(dw_cell, L"xmFormatCellInsertCol"); + + colItemDesc = colPhoto + 1; + dw_cell.SetItemString(startRow - 1, colItemDesc, L"产品信息"); + newItemDesc = true; + } + + if (newItemDesc) + { + int colSKUID = getItemCol(dw_cell, startRow - 1, L"SKUID"); + int colItemNo = getItemCol(dw_cell, startRow - 1, L"我司型号,ItemNo"); + int colCustomerItemNo = getItemCol(dw_cell, startRow - 1, L"客户型号,Customer ItemNo,Customer Item No"); + int colItemName = getItemCol(dw_cell, startRow - 1, L"Product Description,Product Name,Item Name"); + int colItemCName = getItemCol(dw_cell, startRow - 1, L"中文品名"); + int colItemSpec = getItemCol(dw_cell, startRow - 1, L"Specifications,规格,产品规格"); + int colBuyerPrice = getItemCol(dw_cell, startRow - 1, L"采购价,采购价格"); + int colBuyer = getItemCol(dw_cell, startRow - 1, L"采购人员"); + int colQty = getItemCol(dw_cell, startRow - 1, L"Qty"); + int colPackage = getItemCol(dw_cell, startRow - 1, L"Package"); + int colInnerOuter = getItemCol(dw_cell, startRow - 1, L"装箱数(内/外)"); + + int colBuyerMOQ = getItemCol(dw_cell, startRow - 1, L"MOQ"); + int colBuyerRemark = getItemCol(dw_cell, startRow - 1, L"采购To业务备注"); + int colFactoryImage = getItemCol(dw_cell, startRow - 1, L"工厂图片"); + int colGWT = getItemCol(dw_cell, startRow - 1, L"毛重,毛重(KG)"); + int colNWT = getItemCol(dw_cell, startRow - 1, L"净重,净重(KG)"); + int colVolDesc = getItemCol(dw_cell, startRow - 1, L"体积描述,长X宽X高,长X宽X高(CM)"); + int colVol = getItemCol(dw_cell, startRow - 1, L"体积,体积(M3)"); + int col40HQ = getItemCol(dw_cell, startRow - 1, L"40HQ,QTY(40HQ)"); + int colPurchedDate = getItemCol(dw_cell, startRow - 1, L"采购提交业务时间"); + int colPhoto1 = getItemCol(dw_cell, startRow - 1, L"工厂图片"); + int colProductInfo = getItemCol(dw_cell, startRow - 1, L"业务部产品信息"); + int colProductInfo1 = getItemCol(dw_cell, startRow - 1, L"采购部产品信息"); + + int colBOMType = getItemCol(dw_cell, startRow - 1, L"类型"); + int colBOMType1 = getItemCol(dw_cell, startRow - 1, L"类型1"); + int colSaler = getItemCol(dw_cell, startRow - 1, L"业务员"); + int colSaletoBuyerRemark = getItemCol(dw_cell, startRow - 1, L"业务To采购备注"); + + int colSupplier1 = getItemCol(dw_cell, startRow - 1, L"供应商1"); + int colBuyPrice1 = getItemCol(dw_cell, startRow - 1, L"价格1"); + + int colSaleSendDate = getItemCol(dw_cell, startRow - 1, L"业务发送采购时间"); + + dw_cell.SetColumnWidth(colSKUID, 0); + dw_cell.SetColumnWidth(colItemNo, 0); + dw_cell.SetColumnWidth(colCustomerItemNo, 0); + dw_cell.SetColumnWidth(colItemName, 0); + dw_cell.SetColumnWidth(colItemCName, 0); + dw_cell.SetColumnWidth(colBuyerRemark, 0); + dw_cell.SetColumnWidth(colPackage, 0); + dw_cell.SetColumnWidth(colQty, 0); + dw_cell.SetColumnWidth(col40HQ, 0); + dw_cell.SetColumnWidth(colInnerOuter, 0); + dw_cell.SetColumnWidth(colSaler, 0); + dw_cell.SetColumnWidth(colSaletoBuyerRemark, 0); + dw_cell.SetColumnWidth(colProductInfo, 0); + dw_cell.SetColumnWidth(colSaler, 0); + + dw_cell.SetColumnWidth(colBOMType, 0); + dw_cell.SetColumnWidth(colBOMType1, 0); + + dw_cell.SetColumnWidth(colItemDesc, 160); + + bool bPrice1 = false; + for (int row = startRow; row <= dw_cell.GetValidRow(); row++) + { + if (dw_cell.GetItemString(row, colSKUID) != L"") + { + xstring itemDesc = L"SKUID:" + dw_cell.GetItemString(row, colSKUID); + if (dw_cell.GetItemString(row, colItemNo) != L"") + itemDesc += L"\r\nItem No: " + dw_cell.GetItemString(row, colItemNo); + if (dw_cell.GetItemString(row, colItemNo) != L"") + itemDesc += L"\r\nCustomer Item No: " + dw_cell.GetItemString(row, colCustomerItemNo); + if (dw_cell.GetItemString(row, colItemName) != L"") + itemDesc += L"\r\nItem Name:" + dw_cell.GetItemString(row, colItemName); + if (dw_cell.GetItemString(row, colItemCName) != L"") + itemDesc += L"\r\n产品名称:" + dw_cell.GetItemString(row, colItemCName); + + if (dw_cell.GetItemString(row, colQty) != L"") + itemDesc += L"\r\n数量:" + dw_cell.GetItemString(row, colQty); + if (dw_cell.GetItemString(row, colPackage) != L"") + itemDesc += L"\r\n包装:" + dw_cell.GetItemString(row, colPackage); + if (dw_cell.GetItemString(row, colInnerOuter) != L"") + itemDesc += L"\r\n装箱数(内/外):" + dw_cell.GetItemString(row, colInnerOuter); + + if (dw_cell.GetItemString(row, colProductInfo) != L"") + itemDesc += L"\r\n\r\n规格:\r\n" + dw_cell.GetItemString(row, colProductInfo); + if (dw_cell.GetItemString(row, colSaletoBuyerRemark) != L"") + itemDesc += L"\r\n\r\n采购要求:\r\n" + dw_cell.GetItemString(row, colSaletoBuyerRemark); + dw_cell.SetItemString(row, colItemDesc, itemDesc); + + if (!bPrice1) + { + if (dw_cell.GetItemString(row, colSupplier1) != L"") bPrice1 = true; + else if (dw_cell.GetItemString(row, colBuyPrice1) != L"") bPrice1 = true; + } + } + } + if (!bPrice1) + { + dw_cell.SetRowColumn(1, colSupplier1); + dw_cell.SetAnchorRowColumn(1, colSupplier1); + SendCtrlCmd(dw_cell, L"xmFormatCellDeleteCol"); + SendCtrlCmd(dw_cell, L"xmFormatCellDeleteCol"); + SendCtrlCmd(dw_cell, L"xmFormatCellDeleteCol"); + } + + dw_cell.SetRowColumn(1, 1); + dw_cell.SetAnchorRowColumn(startRow-1, 1); + SendCtrlCmd(dw_cell, L"xmEditCopy"); + + dw_cell.SetRowColumn(1, colPhoto); + dw_cell.SetAnchorRowColumn(startRow - 1, colPhoto); + SendCtrlCmd(dw_cell, L"xmEditPaste"); + + dw_cell.SetRowColumn(1, 2); + dw_cell.SetAnchorRowColumn(startRow - 1, 2); + SendCtrlCmd(dw_cell, L"xmEditCopy"); + + dw_cell.SetRowColumn(1, colPhoto+1); + dw_cell.SetAnchorRowColumn(startRow - 1, colPhoto+1); + SendCtrlCmd(dw_cell, L"xmEditPaste"); + + dw_cell.SetItemString(2, colBuyerPrice, L"业务员"); + dw_cell.SetItemString(3, colBuyerPrice, L"发送日期:"); + dw_cell.SetItemString(2, colBuyerPrice+1, dw_cell.GetItemString(startRow, colSaler)); + dw_cell.SetItemString(3, colBuyerPrice+1, dw_cell.GetItemString(startRow, colSaleSendDate)); + } + + + return 1; + } + int onload() { SetArg(); @@ -5063,6 +5262,8 @@ xnode anode = GetAgentNode(L"tabheader"); anode.SetLayerFlow(0x00000100); dw_cell.SetColumnCount(dw_cell.GetValidCol() + 6); + //dw_cell.SetFixedCols(7); + AdjustView(dw_cell); } else dw_cell.SetColumnCount(dw_cell.GetValidCol()+3); diff --git a/jrj/xframe/kobject/kcell.hpp b/jrj/xframe/kobject/kcell.hpp index 4288ee4..e9a8dc9 100644 --- a/jrj/xframe/kobject/kcell.hpp +++ b/jrj/xframe/kobject/kcell.hpp @@ -3,96 +3,102 @@ #include "kcontrol.hpp" namespace Hxsoft { namespace XFrame { namespace XOffice { namespace XCell{ -class IXCell : public IXFControl -{ -public: - int GetRow(); - int GetColumn(); + class IXCell : public IXFControl + { + public: + int GetRow(); + int GetColumn(); - int GetAnchorRow(); - int GetAnchorCol(); + int GetAnchorRow(); + int GetAnchorCol(); - int SetRowColumn(int ARow, int ACol); - int SetAnchorRowColumn(int ARow, int ACol); + int SetRowColumn(int ARow, int ACol); + int SetAnchorRowColumn(int ARow, int ACol); - int GetRowCount(); - int SetRowCount(int columnCount); + int GetRowCount(); + int SetRowCount(int columnCount); - int GetColumnCount(); - int SetColumnCount(int columnCount); + int GetColumnCount(); + int SetColumnCount(int columnCount); - LPCTSTR GetItemString(int ARow, int ACol); - int SetItemString(int ARow, int ACol, LPTSTR pText); - LPCTSTR GetItemDisplayString(int ARow, int ACol); - int SetItemDisplayString(int ARow, int ACol, LPTSTR pText); + LPCTSTR GetItemString(int ARow, int ACol); + int SetItemString(int ARow, int ACol, LPTSTR pText); + LPCTSTR GetItemDisplayString(int ARow, int ACol); + int SetItemDisplayString(int ARow, int ACol, LPTSTR pText); - int SetBorder(int nBorder); + int SetBorder(int nBorder); - int Copy(); - int Cut(); - int Paste(); + int Copy(); + int Cut(); + int Paste(); - int GetColumnWidth(int nCol); - bool SetColumnWidth(int nCol, int nWidth); - int GetRowHeight(int nRow); - bool SetRowHeight(int nRow, int nHeight); -public: - int SetRowSelectorWidth(int nWidth); - int ResetRowSelector(); - int GetRowSelectorWidth(); - int GetRowSelectorDefaultWidth(); + int GetColumnWidth(int nCol); + bool SetColumnWidth(int nCol, int nWidth); + int GetRowHeight(int nRow); + bool SetRowHeight(int nRow, int nHeight); + public: + int SetRowSelectorWidth(int nWidth); + int ResetRowSelector(); + int GetRowSelectorWidth(); + int GetRowSelectorDefaultWidth(); - int SetColHeaderHeight(int nHeight); - int GetColHeaderDefaultHeight(); - int ResetColHeaderHeight(); - int GetColHeaderHeight(); -public: - LPTSTR GetCellProps(int nRow, int nCol); //得到单元整体XML属性 - int SetCellProps(int nRow, int nCol, LPCTSTR pXmlProp); //得到单元整体XML属性 - LPTSTR GetCellProp(int nRow, int nCol, LPCTSTR pItem); //得到单元属性 - int SetCellProp(int nRow, int nCol, LPCTSTR pItem, LPCTSTR pProp);//得到单元属性 -public: - LPTSTR GetHtml(); - LPTSTR GetData(); -public: - void* GetSheetSvr(); -public: - void SetSchmaSource(LPCTSTR pSchema); - LPCTSTR GetSchemaSource(); - void SetSchmaString(LPCTSTR pSchemaStr); - LPCTSTR GetSchemaString(); -public: - int GetSpanRight(int ARow, int ACol); - int GetSpanBottom(int ARow, int ACol); - int GetSpanLeft(int ARow, int ACol); - int GetSpanTop(int ARow, int ACol); - bool IsSpanCell(int ARow, int ACol); -public: - int GetValidRow(); - int GetValidCol(int ARow); - int GetValidRowCol(int& ARow, int& ACol); - int GetValidCol(); -public: - int LoadTemplate(KXMLDOMDocument pDoc, LPTSTR strState); - int LoadTemplate(KXMLDOMElement pElement, LPTSTR strState); -public: - int SaveFileAs(); - int SaveFile(); - int SaveFile(wchar_t* fileName); -public: - int OpenFile(wchar_t* fileName); - int OpenFile(); -public: - wchar_t* m_pFileName; -public: - int SetReadOnly(bool bReadOnly); - int SetRunState(); - int SetRunState(int runstate); -public: - void SetEditUpperMode(bool upper); - bool GetEditUpperMode(); -public: - LPCTSTR GetSortColumns(); - void SortData(LPCTSTR sortColumn, LPTSTR strType, bool bAsc); -}; + int SetColHeaderHeight(int nHeight); + int GetColHeaderDefaultHeight(); + int ResetColHeaderHeight(); + int GetColHeaderHeight(); + public: + LPTSTR GetCellProps(int nRow, int nCol); //得到单元整体XML属性 + int SetCellProps(int nRow, int nCol, LPCTSTR pXmlProp); //得到单元整体XML属性 + LPTSTR GetCellProp(int nRow, int nCol, LPCTSTR pItem); //得到单元属性 + int SetCellProp(int nRow, int nCol, LPCTSTR pItem, LPCTSTR pProp);//得到单元属性 + public: + LPTSTR GetHtml(); + LPTSTR GetData(); + public: + void* GetSheetSvr(); + public: + void SetSchmaSource(LPCTSTR pSchema); + LPCTSTR GetSchemaSource(); + void SetSchmaString(LPCTSTR pSchemaStr); + LPCTSTR GetSchemaString(); + public: + int GetSpanRight(int ARow, int ACol); + int GetSpanBottom(int ARow, int ACol); + int GetSpanLeft(int ARow, int ACol); + int GetSpanTop(int ARow, int ACol); + bool IsSpanCell(int ARow, int ACol); + public: + int GetValidRow(); + int GetValidCol(int ARow); + int GetValidRowCol(int& ARow, int& ACol); + int GetValidCol(); + public: + int LoadTemplate(KXMLDOMDocument pDoc, LPTSTR strState); + int LoadTemplate(KXMLDOMElement pElement, LPTSTR strState); + public: + int SaveFileAs(); + int SaveFile(); + int SaveFile(wchar_t* fileName); + public: + int OpenFile(wchar_t* fileName); + int OpenFile(); + public: + wchar_t* m_pFileName; + public: + int SetReadOnly(bool bReadOnly); + int SetRunState(); + int SetRunState(int runstate); + public: + void SetEditUpperMode(bool upper); + bool GetEditUpperMode(); + public: + LPCTSTR GetSortColumns(); + void SortData(LPCTSTR sortColumn, LPTSTR strType, bool bAsc); + public: + int GetFixedRows(); + void SetFixedRows(int value); + public: + int GetFixedCols(); + void SetFixedCols(int value); + }; }}}} diff --git a/jrj/xframe/xcontrol/xcell.hpp b/jrj/xframe/xcontrol/xcell.hpp index 39d95f4..92911c7 100644 --- a/jrj/xframe/xcontrol/xcell.hpp +++ b/jrj/xframe/xcontrol/xcell.hpp @@ -284,6 +284,22 @@ { return GetKCell()->SetReadOnly(bReadOnly); } + int GetFixedRows() + { + return GetKCell()->GetFixedRows(); + } + void SetFixedRows(int value = 1) + { + return GetKCell()->SetFixedRows(value); + } + int GetFixedCols() + { + return GetKCell()->GetFixedCols(); + } + void SetFixedCols(int value = 1) + { + return GetKCell()->SetFixedCols(value); + } }; -- Gitblit v1.9.3