Files
envi-code/SourceCode/Code2026/tg_shs/shs_TwtCalc/MostuseWaterCalcDlg.cpp
T

754 lines
23 KiB
C++
Raw Normal View History

2026-10-04 00:04:20 +08:00
// MostuseWaterCalcDlg.cpp : implementation file
2026-09-28 15:28:50 +08:00
//
#include "stdafx.h"
#include "MostuseWaterCalcDlg.h"
#include <MSWORD8.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
CMostuseWaterCalcGrid::CMostuseWaterCalcGrid()
{
m_nACRow = -1;
m_pDlg = NULL;
}
bool CMostuseWaterCalcGrid::OnModified(WDGridCell&cell,CString &text)
{
long nCol = GetCurRowIndex();
long nCol2 = cell.GetColIndex();
long nRow = cell.GetRowIndex();
if (cell.GetCol().GetIndex() == 3)
{
int nNum = _ttoi(text);
if (nCol != -1 && nCol < m_pLstUnit->Length())
{
(*m_pLstUnit)[nCol]->m_iNum = nNum;
}
}
else if (nRow == m_nACRow && m_pDlg != NULL) // cet 2013.4.16 add
{
if (nCol2 == 4)
{
m_pDlg->SetACUseTime(text);
}
else if (nCol2 == 5)
{
m_pDlg->SetACRatio(text);
}
else if (nCol2 == 7)
{
m_pDlg->SetACMaxTime(text);
}
}
return true;
}
void CMostuseWaterCalcGrid::OnBeforeRefresh( WDGridCell &cell )
{
int nRow = cell.GetRowIndex();
int nCol = cell.GetColIndex();
if (nRow == m_nACRow && (nCol == 4 || nCol == 5 || nCol == 7))
{
CDC&dc=GetDC();
COLORREF color = acedGetRGB(1);
dc.SetTextColor(color);
dc.SetBkMode(TRANSPARENT);
}
else
{
WDGrid::OnBeforeRefresh(cell);
}
}
void CMostuseWaterCalcGrid::SetACRow( int nRow )
{
m_nACRow = nRow;
}
bool CMostuseWaterCalcGrid::OnBeforeEdit( WDGridCell&cell,bool &bModified )
{
int nRow = cell.GetRowIndex();
int nCol = cell.GetColIndex();
if (nCol == 3 || nCol == 4 || nCol == 5 || nCol == 7)
{
if ((m_nACRow == nRow && nCol != 3) || (nCol == 3 && m_nACRow != nRow))
{
return WDGrid::OnBeforeEdit(cell, bModified);
}
else
{
bModified = false;
return false;
}
}
else
{
return WDGrid::OnBeforeEdit(cell, bModified);
}
}
void CMostuseWaterCalcGrid::SetDlg( CMostuseWaterCalcDlg *pDlg )
{
m_pDlg = pDlg;
}
/////////////////////////////////////////////////////////////////////////////
// CMostuseWaterCalcDlg dialog
void MostUseWaterCalc()
{
2026-10-04 00:04:20 +08:00
// cet 2013.4.7 modify 改成非模态
2026-09-28 15:28:50 +08:00
// CTemporaryResourceOverride vTemp;
// CMostuseWaterCalcDlg dlg
// dlg.DoModal();
CTemporaryResourceOverride vTemp;
CMostuseWaterCalcDlg dlg(1, acedGetAcadFrame());
dlg.Create(IDD_MOSTUSE_WATER_CALC, acedGetAcadFrame());
dlg.ShowWindow(SW_SHOW);
2026-10-04 00:04:20 +08:00
// 通过隐含的用户交互函数暂停程序,以便完成操作
2026-09-28 15:28:50 +08:00
TCHAR szKey[256];
acedInitGet(RSG_NOZERO, _T("~"));
int st = 0;
while( (st = acedGetKword(_T(" "), szKey)) != RTNORM)
{
if (st == RTCAN)
{
break;
}
}
dlg.DestroyWindow();
}
IMPLEMENT_DYNAMIC(CMostuseWaterCalcDlg, CModelessDialog)
CMostuseWaterCalcDlg::CMostuseWaterCalcDlg(int iType, CWnd* pParent /*=NULL*/)
: CModelessDialog(CMostuseWaterCalcDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CMostuseWaterCalcDlg)
m_iPercent = 10;
//}}AFX_DATA_INIT
m_nACRow = -1;
m_sACUseTime = _T("24");
m_sACRatio = _T("1.2");
m_sACMaxTime = _T("0.00");
}
void CMostuseWaterCalcDlg::DoDataExchange(CDataExchange* pDX)
{
CModelessDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMostuseWaterCalcDlg)
DDX_Control(pDX, IDC_LIST_ALL, m_listCtrl);
DDX_Text(pDX, IDC_EDIT_PERCENT, m_iPercent);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CMostuseWaterCalcDlg, CModelessDialog)
//{{AFX_MSG_MAP(CMostuseWaterCalcDlg)
ON_BN_CLICKED(IDC_BUTTON_ADD, OnButtonAdd)
ON_BN_CLICKED(IDC_BUTTON_MODIFY, OnButtonModify)
ON_BN_CLICKED(IDC_BUTTON_DEL, OnButtonDel)
ON_NOTIFY(NM_DBLCLK, IDC_LIST_ALL, OnDblclkListAll)
ON_BN_CLICKED(IDC_BUTTON_WORD, OnButtonWord)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMostuseWaterCalcDlg message handlers
BOOL CMostuseWaterCalcDlg::OnInitDialog()
{
CModelessDialog::OnInitDialog();
2026-10-04 00:04:20 +08:00
// cet 2010.9.6 del 更改控件类,修改相应用法
2026-09-28 15:28:50 +08:00
// m_listCtrl.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);
// m_listCtrl.SetItemControl(EDITBOX, 3);
2026-10-04 00:04:20 +08:00
// m_listCtrl.InsertColumn ( 0, _T("用水部位名称"), LVCFMT_LEFT, 90 );
// m_listCtrl.InsertColumn ( 1, _T("用水标准"), LVCFMT_LEFT, 60 );
// m_listCtrl.InsertColumn ( 2, _T("单位"), LVCFMT_LEFT, 60 );
// m_listCtrl.InsertColumn ( 3, _T("数量"), LVCFMT_LEFT, 60 );
// m_listCtrl.InsertColumn ( 4, _T("用水时间"), LVCFMT_LEFT, 60 );
// m_listCtrl.InsertColumn ( 5, _T("变化系数"), LVCFMT_LEFT, 60 );
// m_listCtrl.InsertColumn ( 6, _T("最大日"), LVCFMT_LEFT, 60 );
// m_listCtrl.InsertColumn ( 7, _T("最大时"), LVCFMT_LEFT, 60 );
// m_listCtrl.InsertColumn ( 8, _T("平均时"), LVCFMT_LEFT, 60 );
2026-09-28 15:28:50 +08:00
//
// m_listCtrl.MapControlsForSubItems();
// cet 2010.9.6 add
CRect rect;
m_listCtrl.GetWindowRect(&rect);
ScreenToClient(&rect);
m_listCtrl.Clear();
m_listCtrl.Create(this, IDC_LIST_ALL);
m_listCtrl.SetNoDefaultMenu();
m_listCtrl.SetNoAppendButton();
long nWidth = rect.Width() / 10;
2026-10-04 00:04:20 +08:00
m_listCtrl.AppendCol(_T("用水部位名称"), nWidth * 2);
m_listCtrl.AppendCol(_T("用水标准"), nWidth );
m_listCtrl.AppendCol(_T("单位"), nWidth);
m_listCtrl.AppendCol(_T("数量"), nWidth);
m_listCtrl.AppendCol(_T("用水时间"), nWidth);
m_listCtrl.AppendCol(_T("变化系数"), nWidth );
m_listCtrl.AppendCol(_T("最大日"), nWidth);
m_listCtrl.AppendCol(_T("最大时"), nWidth);
m_listCtrl.AppendCol(_T("平均时"), nWidth);
2026-09-28 15:28:50 +08:00
for (int i = 0; i < 9; i++)
{
m_listCtrl.GetCol(i).SetReadOnly();
m_listCtrl.GetCol(i).SetCenterAlign();
}
m_listCtrl.GetCol(3).SetReadOnly(false);
2026-10-04 00:04:20 +08:00
m_listCtrl.GetCol(4).SetReadOnly(false); // cet 2013.4.16 add 4、5、7列可写
2026-09-28 15:28:50 +08:00
m_listCtrl.GetCol(5).SetReadOnly(false);
m_listCtrl.GetCol(7).SetReadOnly(false);
COLORREF color = RGB(255,0,0);
m_listCtrl.GetCol(3).SetTextColor(color);
m_listCtrl.FitLastCol();
m_listCtrl.SetLst(&m_lstUnit);
m_listCtrl.SetDlg(this); // cet 2013.4.16 add
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CMostuseWaterCalcDlg::ResetList()
{
UpdateData();
// m_listCtrl.DeleteAllItems(); // cet 2010.9.6 del
m_listCtrl.Clear(); // cet 2010.9.6 add
int len = m_lstUnit.Length();
if(len <=0)
return;
double nMostByDate(0), nMostByHour(0), nAverage(0);
CString csMostByDate, csMostByHour, csAverage, csPercent;
for(int i=0;i<len;i++){
SUseUnitData *pData = m_lstUnit[i];
CString csFactor, csTime, csStdUse, csNum;
csFactor.Format(_T("%.2f"), pData->m_nFactor);
csTime.Format(_T("%.1f"), pData->m_nTime);
csStdUse.Format(_T("%.2f"), pData->m_nStdUse);
csNum.Format(_T("%d"), pData->m_iNum);
2026-10-04 00:04:20 +08:00
if(pData->m_csName == _T("游泳池(游泳池补充水)"))
pData->m_nMostByDate = pData->m_iNum * pData->m_nStdUse;//单位本来就是立方米
2026-09-28 15:28:50 +08:00
else
pData->m_nMostByDate = pData->m_iNum * pData->m_nStdUse / 1000;
pData->m_nMostByHour = pData->m_nMostByDate * pData->m_nFactor / pData->m_nTime;
pData->m_nAverage = pData->m_nMostByDate / pData->m_nTime;
csMostByDate.Format(_T("%.2f"), pData->m_nMostByDate);
csMostByHour.Format(_T("%.2f"), pData->m_nMostByHour);
csAverage.Format(_T("%.2f"), pData->m_nAverage);
2026-10-04 00:04:20 +08:00
// cet 2010.9.6 del 更换控件类修改相应方法
2026-09-28 15:28:50 +08:00
// m_listCtrl.InsertItem ( i, pData->m_csName, 0 );
// m_listCtrl.SetItemText ( i, 1, csStdUse);
// m_listCtrl.SetItemText ( i, 2, pData->m_csUnit);
// m_listCtrl.SetItemText ( i, 3, csNum);
// m_listCtrl.SetItemText ( i, 4, csTime);
// m_listCtrl.SetItemText ( i, 5, csFactor);
// m_listCtrl.SetItemText ( i, 6, csMostByDate);
// m_listCtrl.SetItemText ( i, 7, csMostByHour);
// m_listCtrl.SetItemText ( i, 8, csAverage);
// cet 2010.9.6 add
m_listCtrl.AppendRow();
m_listCtrl.GetCell(i, 0).SetText(pData->m_csName);
m_listCtrl.GetCell(i, 1).SetText(csStdUse);
m_listCtrl.GetCell(i, 2).SetText(pData->m_csUnit);
m_listCtrl.GetCell(i, 3).SetText(csNum);
m_listCtrl.GetCell(i, 4).SetText(csTime);
m_listCtrl.GetCell(i, 5).SetText(csFactor);
m_listCtrl.GetCell(i, 6).SetText(csMostByDate);
m_listCtrl.GetCell(i, 7).SetText(csMostByHour);
m_listCtrl.GetCell(i, 8).SetText(csAverage);
nMostByDate += pData->m_nMostByDate;
nMostByHour += pData->m_nMostByHour;
nAverage += pData->m_nAverage;
}
csPercent.Format(_T("%d"), m_iPercent);
2026-10-04 00:04:20 +08:00
// cet 2010.9.6 del 更换控件类修改相应方法
// m_listCtrl.InsertItem ( len, _T("未预见水量"), 0 );
2026-09-28 15:28:50 +08:00
// m_listCtrl.SetItemText ( len, 1, csPercent);
// m_listCtrl.SetItemText ( len, 2, _T("%"));
// m_listCtrl.SetItemText ( len, 6, csMostByDate);
// m_listCtrl.SetItemText ( len, 7, csMostByHour);
// m_listCtrl.SetItemText ( len, 8, csAverage);
2026-10-04 00:04:20 +08:00
// cet 2013.4.16 add 增加空调补水 jzh提供
2026-09-28 15:28:50 +08:00
m_listCtrl.AppendRow();
2026-10-04 00:04:20 +08:00
m_listCtrl.GetCell(len, 0).SetText(_T("空调补水"));
2026-09-28 15:28:50 +08:00
m_listCtrl.GetCell(len, 4).SetText(m_sACUseTime);
m_listCtrl.GetCell(len, 5).SetText(m_sACRatio);
m_sACMaxDay.Format(_T("%.2f"), _tstof(m_sACUseTime) * _tstof(m_sACMaxTime) / _tstof(m_sACRatio));
m_listCtrl.GetCell(len, 6).SetText(m_sACMaxDay);
m_listCtrl.GetCell(len, 7).SetText(m_sACMaxTime);
m_sACAvgTime.Format(_T("%.2f"), _tstof(m_sACMaxTime) / _tstof(m_sACRatio));
m_listCtrl.GetCell(len, 8).SetText(m_sACAvgTime);
m_nACRow = len;
m_listCtrl.SetACRow(m_nACRow);
++len;
nMostByDate += _tstof(m_sACMaxDay);
nMostByHour += _tstof(m_sACMaxTime);
nAverage += _tstof(m_sACAvgTime);
csMostByDate.Format(_T("%.2f"), nMostByDate * m_iPercent / 100);
csMostByHour.Format(_T("%.2f"), nMostByHour * m_iPercent / 100);
csAverage.Format(_T("%.2f"), nAverage * m_iPercent / 100);
// cet 2010.9.6 add
m_listCtrl.AppendRow();
2026-10-04 00:04:20 +08:00
m_listCtrl.GetCell(len, 0).SetText(_T("未预见水量"));
2026-09-28 15:28:50 +08:00
m_listCtrl.GetCell(len, 1).SetText(csPercent);
m_listCtrl.GetCell(len, 2).SetText(_T("%"));
m_listCtrl.GetCell(len, 6).SetText(csMostByDate);
m_listCtrl.GetCell(len, 7).SetText(csMostByHour);
m_listCtrl.GetCell(len, 8).SetText(csAverage);
csMostByDate.Format(_T("%.2f"), nMostByDate * ((double)m_iPercent / 100 + 1));
csMostByHour.Format(_T("%.2f"), nMostByHour * ((double)m_iPercent / 100 + 1));
csAverage.Format(_T("%.2f"), nAverage * ((double)m_iPercent / 100 + 1));
2026-10-04 00:04:20 +08:00
// cet 2010.9.6 del 更换控件类修改相应方法
// m_listCtrl.InsertItem ( len+1, _T("总计"), 0 );
2026-09-28 15:28:50 +08:00
// m_listCtrl.SetItemText ( len+1, 6, csMostByDate);
// m_listCtrl.SetItemText ( len+1, 7, csMostByHour);
// m_listCtrl.SetItemText ( len+1, 8, csAverage);
// m_listCtrl.MapControlsForSubItems();
// m_listCtrl.ShowControls(FALSE);
// cet 2010.9.6 add
m_listCtrl.AppendRow();
2026-10-04 00:04:20 +08:00
m_listCtrl.GetCell(len+1, 0).SetText(_T("总计"));
2026-09-28 15:28:50 +08:00
m_listCtrl.GetCell(len+1, 6).SetText(csMostByDate);
m_listCtrl.GetCell(len+1, 7).SetText(csMostByHour);
m_listCtrl.GetCell(len+1, 8).SetText(csAverage);
if(nMostByDate < 0.01)
2026-10-04 00:04:20 +08:00
MessageBox(_T("数量未输入!可直接在表格中编辑。"));
2026-09-28 15:28:50 +08:00
}
void CMostuseWaterCalcDlg::OnButtonAdd()
{
CTemporaryResourceOverride vTemp;
CSelUseUnitDlg dlg;
if(dlg.DoModal() != IDOK)
return;
SUseUnitData *pData = new SUseUnitData(dlg.m_csName, dlg.m_csUnit, dlg.m_iNum, dlg.m_nStdUse, dlg.m_nFactor, dlg.m_dTime);
m_lstUnit.Append(pData);
ResetList();
}
void CMostuseWaterCalcDlg::OnButtonModify()
{
// cet 2010.9.6 del
// POSITION pos = m_listCtrl.GetFirstSelectedItemPosition();
// if(!pos)
// return;
// int nItem = m_listCtrl.GetNextSelectedItem(pos);
// cet 2010.9.6 add
int nItem = m_listCtrl.GetCurRowIndex();
if (nItem == -1)
{
return;
}
if(nItem >= m_lstUnit.Length())
return;
CTemporaryResourceOverride vTemp;
CSelUseUnitDlg dlg;
dlg.m_iNum = m_lstUnit[nItem]->m_iNum;
dlg.m_nStdUse = m_lstUnit[nItem]->m_nStdUse;
dlg.m_nFactor = m_lstUnit[nItem]->m_nFactor;
dlg.m_dTime = m_lstUnit[nItem]->m_nTime;
if(dlg.DoModal() != IDOK)
return;
m_lstUnit[nItem]->m_iNum = dlg.m_iNum;
m_lstUnit[nItem]->m_nStdUse = dlg.m_nStdUse;
m_lstUnit[nItem]->m_nFactor = dlg.m_nFactor;
m_lstUnit[nItem]->m_nTime = dlg.m_dTime;
ResetList();
}
void CMostuseWaterCalcDlg::OnButtonDel()
{
// cet 2010.9.6 del
// POSITION pos = m_listCtrl.GetFirstSelectedItemPosition();
// if(!pos)
// return;
// int nItem = m_listCtrl.GetNextSelectedItem(pos);
// cet 2010.9.6 add
int nItem = m_listCtrl.GetCurRowIndex();
if (nItem == -1)
{
return;
}
if(nItem > (m_lstUnit.Length() - 1))
return;
m_lstUnit.Remove(nItem);
ResetList();
}
void CMostuseWaterCalcDlg::OnDblclkListAll(NMHDR* pNMHDR, LRESULT* pResult)
{
// m_listCtrl.ShowControls(FALSE); // cet 2010.9.6 del
m_listCtrl.ShowWindow(SW_HIDE); // cet 2010.9.6 add
OnButtonModify();
*pResult = 0;
}
void CMostuseWaterCalcDlg::OnOK()
{
ResetList();
//CModelessDialog::OnOK();
}
// LRESULT CMostuseWaterCalcDlg::OnEditInputOk(WPARAM wParam, LPARAM lParam)
// {
//
// DWORD_PTR dwAllTk = wParam;
// TCHAR szAlltk[256];
// _tcscpy(szAlltk, (const TCHAR*)dwAllTk);
// if(_tcsicmp(szAlltk, _T("0")) == 0)
// return TRUE;
// // int nItem = m_listCtrl.m_iCurSelctedItemIndex; // cet 2010.9.6 del
// int nItem = m_listCtrl.GetCurRowIndex(); // cet 2010.9.6 add
// if(nItem < 0 || m_lstUnit.Length()==0 || nItem >= m_lstUnit.Length())
// return TRUE;
// m_lstUnit[nItem]->m_iNum = _ttoi(szAlltk);
// ResetList();
// return TRUE;
// }
void CMostuseWaterCalcDlg::OnButtonWord()
{
UpdateData();
int len = m_lstUnit.Length();
if(len <=0)
return;
2026-10-04 00:04:20 +08:00
//初始化
2026-09-28 15:28:50 +08:00
COleVariant vtOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR), vtTrue((short)TRUE), vtFalse((short)FALSE);
_Application wordApplication;
Documents wordDocuments;
_Document activeDocument;
Paragraphs wordParagraphs;
Selection wordSelection;
if (!wordApplication.CreateDispatch(_T("Word.Application")))
{
2026-10-04 00:04:20 +08:00
AfxMessageBox(_T("不能执行Microsoft Word 8.0!"));
2026-09-28 15:28:50 +08:00
return;
}
wordApplication.SetVisible(TRUE);
wordDocuments = wordApplication.GetDocuments();
activeDocument = wordDocuments.Add(vtOptional,vtOptional);
2026-10-04 00:04:20 +08:00
//写一行字
2026-09-28 15:28:50 +08:00
wordSelection = wordApplication.GetSelection();
wordParagraphs = wordSelection.GetParagraphs();
2026-10-04 00:04:20 +08:00
wordParagraphs.SetAlignment(1); // 0: 居左 1:居中 2:居右
wordSelection.TypeText(_T("最高日,最大时用水量计算书\n"));
wordParagraphs.SetAlignment(0); // 0: 居左 1:居中 2:居右
// wordSelection.TypeText(_T("按照建筑给水排水设计规范 (GB 50015-2003)进行计算\n"));
wordSelection.TypeText(_T("按照建筑给水排水设计规范 (GB 50015-2003)(2009年版)进行计算\n"));
2026-09-28 15:28:50 +08:00
double nMostByDate(0), nMostByHour(0), nAverage(0);
CString csMostByDate, csMostByHour, csAverage, csPercent;
2026-10-04 00:04:20 +08:00
wordSelection.TypeText(_T("各用水部位统计结果如下:\n"));
2026-09-28 15:28:50 +08:00
2026-10-04 00:04:20 +08:00
//画表格
int rows(len+5), columns(9); // cet 2013.4.16 modify 添加空调补水
2026-09-28 15:28:50 +08:00
Selection wSelection = wordApplication.GetSelection();
Range oRange = wSelection.GetRange();
Tables oTables = activeDocument.GetTables();
_Table oTable = oTables.Add(oRange, rows, columns);
// cet 2010.3.25 add
Borders oBorders = oTable.GetBorders();
2026-10-04 00:04:20 +08:00
oBorders.SetInsideLineStyle(1); // 设置表格线型
2026-09-28 15:28:50 +08:00
oBorders.SetOutsideLineStyle(1);
Columns oColumns;
Column oColumn;
oColumns = oTable.GetColumns();
oColumn = oColumns.Item(1);
oColumn.SetWidth(90, 0); // 0 = wdAdjustNone
oColumn = oColumns.Item(2);
oColumn.SetWidth(55, 0);
oColumn = oColumns.Item(3);
oColumn.SetWidth(42, 0);
oColumn = oColumns.Item(4);
oColumn.SetWidth(32, 0);
oColumn = oColumns.Item(5);
oColumn.SetWidth(50, 0);
oColumn = oColumns.Item(6);
oColumn.SetWidth(55, 0);
oColumn = oColumns.Item(7);
oColumn.SetWidth(45, 0);
oColumn = oColumns.Item(8);
oColumn.SetWidth(45, 0);
oColumn = oColumns.Item(9);
oColumn.SetWidth(45, 0);
Cell oCell;
oCell = oTable.Cell(1, 1);
oCell.Merge(oTable.Cell(2, 1));
oRange = oCell.GetRange();
2026-10-04 00:04:20 +08:00
oRange.InsertAfter(_T("用水部位"));
2026-09-28 15:28:50 +08:00
oCell = oTable.Cell(1, 2);
oCell.Merge(oTable.Cell(2, 2));
oRange = oCell.GetRange();
2026-10-04 00:04:20 +08:00
oRange.InsertAfter(_T("用水标准"));
2026-09-28 15:28:50 +08:00
oCell = oTable.Cell(1, 3);
oCell.Merge(oTable.Cell(2, 3));
oRange = oCell.GetRange();
2026-10-04 00:04:20 +08:00
oRange.InsertAfter(_T("单位"));
2026-09-28 15:28:50 +08:00
oCell = oTable.Cell(1, 4);
oCell.Merge(oTable.Cell(2, 4));
oRange = oCell.GetRange();
2026-10-04 00:04:20 +08:00
oRange.InsertAfter(_T("数量"));
2026-09-28 15:28:50 +08:00
oCell = oTable.Cell(1, 5);
oCell.Merge(oTable.Cell(2, 5));
oRange = oCell.GetRange();
2026-10-04 00:04:20 +08:00
oRange.InsertAfter(_T("用水时间"));
2026-09-28 15:28:50 +08:00
oCell = oTable.Cell(1, 6);
oCell.Merge(oTable.Cell(2, 6));
oRange = oCell.GetRange();
2026-10-04 00:04:20 +08:00
oRange.InsertAfter(_T("变化系数"));
2026-09-28 15:28:50 +08:00
oCell = oTable.Cell(1, 7);
oCell.Merge(oTable.Cell(1, 8));
oCell.Merge(oTable.Cell(1, 8));
oRange = oCell.GetRange();
wordParagraphs = oRange.GetParagraphs();
wordParagraphs.SetAlignment(1);
2026-10-04 00:04:20 +08:00
oRange.InsertAfter(_T("用水量(立方米)"));
2026-09-28 15:28:50 +08:00
oCell = oTable.Cell(2, 7);
oRange = oCell.GetRange();
2026-10-04 00:04:20 +08:00
oRange.InsertAfter(_T("最大日"));
2026-09-28 15:28:50 +08:00
oCell = oTable.Cell(2, 8);
oRange = oCell.GetRange();
2026-10-04 00:04:20 +08:00
oRange.InsertAfter(_T("最大时"));
2026-09-28 15:28:50 +08:00
oCell = oTable.Cell(2, 9);
oRange = oCell.GetRange();
2026-10-04 00:04:20 +08:00
oRange.InsertAfter(_T("平均时"));
2026-09-28 15:28:50 +08:00
for(int i=2;i<len+2;i++){
SUseUnitData *pData = m_lstUnit[i-2];
CString csFactor, csTime, csStdUse, csNum;
csFactor.Format(_T("%.2f"), pData->m_nFactor);
csTime.Format(_T("%.1f"), pData->m_nTime);
csStdUse.Format(_T("%.2f"), pData->m_nStdUse);
csNum.Format(_T("%d"), pData->m_iNum);
2026-10-04 00:04:20 +08:00
if(pData->m_csName == _T("游泳池(游泳池补充水)"))
pData->m_nMostByDate = pData->m_iNum * pData->m_nStdUse;//单位本来就是立方米
2026-09-28 15:28:50 +08:00
else
pData->m_nMostByDate = pData->m_iNum * pData->m_nStdUse / 1000;
pData->m_nMostByHour = pData->m_nMostByDate * pData->m_nFactor / pData->m_nTime;
pData->m_nAverage = pData->m_nMostByDate / pData->m_nTime;
csMostByDate.Format(_T("%.2f"), pData->m_nMostByDate);
csMostByHour.Format(_T("%.2f"), pData->m_nMostByHour);
csAverage.Format(_T("%.2f"), pData->m_nAverage);
oCell = oTable.Cell(i+1, 1);
oRange = oCell.GetRange();
oRange.InsertAfter(pData->m_csName);
oCell = oTable.Cell(i+1, 2);
oRange = oCell.GetRange();
oRange.InsertAfter(csStdUse);
oCell = oTable.Cell(i+1, 3);
oRange = oCell.GetRange();
oRange.InsertAfter(pData->m_csUnit);
oCell = oTable.Cell(i+1, 4);
oRange = oCell.GetRange();
oRange.InsertAfter(csNum);
oCell = oTable.Cell(i+1, 5);
oRange = oCell.GetRange();
oRange.InsertAfter(csTime);
oCell = oTable.Cell(i+1, 6);
oRange = oCell.GetRange();
oRange.InsertAfter(csFactor);
oCell = oTable.Cell(i+1, 7);
oRange = oCell.GetRange();
oRange.InsertAfter(csMostByDate);
oCell = oTable.Cell(i+1, 8);
oRange = oCell.GetRange();
oRange.InsertAfter(csMostByHour);
oCell = oTable.Cell(i+1, 9);
oRange = oCell.GetRange();
oRange.InsertAfter(csAverage);
nMostByDate += pData->m_nMostByDate;
nMostByHour += pData->m_nMostByHour;
nAverage += pData->m_nAverage;
}
2026-10-04 00:04:20 +08:00
// cet 2013.4.16 add 输出空调补水
2026-09-28 15:28:50 +08:00
int nAcRow = len + 3;
++len;
CString sTemp;
oCell = oTable.Cell(nAcRow, 1);
oRange = oCell.GetRange();
2026-10-04 00:04:20 +08:00
oRange.InsertAfter(_T("空调补水"));
2026-09-28 15:28:50 +08:00
oCell = oTable.Cell(nAcRow, 5);
oRange = oCell.GetRange();
sTemp.Format(_T("%.1f"), _tstof(m_sACUseTime));
oRange.InsertAfter(sTemp);
oCell = oTable.Cell(nAcRow, 6);
oRange = oCell.GetRange();
sTemp.Format(_T("%.2f"), _tstof(m_sACRatio));
oRange.InsertAfter(sTemp);
oCell = oTable.Cell(nAcRow, 7);
oRange = oCell.GetRange();
sTemp.Format(_T("%.2f"), _tstof(m_sACMaxDay));
oRange.InsertAfter(sTemp);
oCell = oTable.Cell(nAcRow, 8);
oRange = oCell.GetRange();
sTemp.Format(_T("%.2f"), _tstof(m_sACMaxTime));
oRange.InsertAfter(sTemp);
oCell = oTable.Cell(nAcRow, 9);
oRange = oCell.GetRange();
sTemp.Format(_T("%.2f"), _tstof(m_sACAvgTime));
oRange.InsertAfter(sTemp);
nMostByDate += _tstof(m_sACMaxDay);
nMostByHour += _tstof(m_sACMaxTime);
nAverage += _tstof(m_sACAvgTime);
for(int j=len + 3; j<len+5;j++)
{
Cell oCell;
oCell = oTable.Cell(j, 1);
oRange = oCell.GetRange();
if (j == len + 3)
2026-10-04 00:04:20 +08:00
oRange.InsertAfter(_T("未预见水"));
2026-09-28 15:28:50 +08:00
else
2026-10-04 00:04:20 +08:00
oRange.InsertAfter(_T("合计"));
2026-09-28 15:28:50 +08:00
2026-10-04 00:04:20 +08:00
csPercent.Format(_T("按本表以上项目的%d%s计\n"), m_iPercent,_T("%"));
2026-09-28 15:28:50 +08:00
oCell = oTable.Cell(j, 2);
oRange = oCell.GetRange();
if (j == len + 3)
oRange.InsertAfter(csPercent);
oCell.Merge(oTable.Cell(j, 3));
oCell.Merge(oTable.Cell(j, 3));
oCell.Merge(oTable.Cell(j, 3));
oCell.Merge(oTable.Cell(j, 3));
if (j != len + 3)
{
csMostByDate.Format(_T("%.2f"), nMostByDate * ((double)m_iPercent / 100 + 1));
csMostByHour.Format(_T("%.2f"), nMostByHour * ((double)m_iPercent / 100 + 1));
csAverage.Format(_T("%.2f"), nAverage * ((double)m_iPercent / 100 + 1));
}
else
{
csMostByDate.Format(_T("%.2f"), nMostByDate * m_iPercent / 100);
csMostByHour.Format(_T("%.2f"), nMostByHour * m_iPercent / 100);
csAverage.Format(_T("%.2f"), nAverage * m_iPercent / 100);
}
oCell = oTable.Cell(j, 3);
oRange = oCell.GetRange();
oRange.InsertAfter(csMostByDate);
oCell = oTable.Cell(j, 4);
oRange = oCell.GetRange();
oRange.InsertAfter(csMostByHour);
oCell = oTable.Cell(j, 5);
oRange = oCell.GetRange();
oRange.InsertAfter(csAverage);
}
/*
COleVariant vtOptional2((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
wordSelection = wordApplication.GetSelection();
wordSelection.GoTo(COleVariant((short)3), // 3 = wdGoToLine
COleVariant((short)-1),vtOptional2,vtOptional2); // -1 = wdGoToLast
wSelection = wordApplication.GetSelection();
wSelection.TypeParagraph();
2026-10-04 00:04:20 +08:00
wordSelection.TypeText(_T("总计如下\n"));
csPercent.Format(_T("未预见水量百分比:%d%\n"), m_iPercent);
csMostByDate.Format(_T("最大日用水量:%.2f (立方米)\n"), nMostByDate * ((double)m_iPercent / 100 + 1));
csMostByHour.Format(_T("最大时用水量:%.2f(立方米)\n"), nMostByHour * ((double)m_iPercent / 100 + 1));
csAverage.Format(_T("平均时用水量:%.2f(立方米)\n"), nAverage * ((double)m_iPercent / 100 + 1));
2026-09-28 15:28:50 +08:00
wordSelection.TypeText(csPercent);
wordSelection.TypeText(csMostByDate);
wordSelection.TypeText(csMostByHour);
wordSelection.TypeText(csAverage);
*/
2026-10-04 00:04:20 +08:00
wordApplication.Activate(); // cet 2013.4.7 add 激活word文档,避免cad获得焦点
2026-09-28 15:28:50 +08:00
}
void CMostuseWaterCalcDlg::OnCancel()
{
PostCommand(_T("~ "));
CModelessDialog::OnCancel();
}
void CMostuseWaterCalcDlg::SetACUseTime( const CString &sTime )
{
m_sACUseTime = sTime;
}
void CMostuseWaterCalcDlg::SetACRatio( const CString &sRatio )
{
m_sACRatio = sRatio;
}
void CMostuseWaterCalcDlg::SetACMaxTime( const CString &sMaxTime )
{
m_sACMaxTime = sMaxTime;
}