Files
envi-code/SourceCode/Code2026/tg_shs/shs_TwtCalc/MostuseWaterCalcDlg.cpp
T
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

755 lines
23 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// MostuseWaterCalcDlg.cpp : implementation file
//
#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()
{
// cet 2013.4.7 modify 改成非模态
// CTemporaryResourceOverride vTemp;
// CMostuseWaterCalcDlg dlg
// dlg.DoModal();
CTemporaryResourceOverride vTemp;
CMostuseWaterCalcDlg dlg(1, acedGetAcadFrame());
dlg.Create(IDD_MOSTUSE_WATER_CALC, acedGetAcadFrame());
dlg.ShowWindow(SW_SHOW);
// 通过隐含的用户交互函数暂停程序,以便完成操作
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();
// cet 2010.9.6 del 更改控件类,修改相应用法
// m_listCtrl.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);
// m_listCtrl.SetItemControl(EDITBOX, 3);
// 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 );
//
// 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;
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);
for (int i = 0; i < 9; i++)
{
m_listCtrl.GetCol(i).SetReadOnly();
m_listCtrl.GetCol(i).SetCenterAlign();
}
m_listCtrl.GetCol(3).SetReadOnly(false);
m_listCtrl.GetCol(4).SetReadOnly(false); // cet 2013.4.16 add 4、5、7列可写
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);
if(pData->m_csName == _T("游泳池(游泳池补充水)"))
pData->m_nMostByDate = pData->m_iNum * pData->m_nStdUse;//单位本来就是立方米
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);
// cet 2010.9.6 del 更换控件类修改相应方法
// 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);
// cet 2010.9.6 del 更换控件类修改相应方法
// m_listCtrl.InsertItem ( len, _T("未预见水量"), 0 );
// 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);
// cet 2013.4.16 add 增加空调补水 jzh提供
m_listCtrl.AppendRow();
m_listCtrl.GetCell(len, 0).SetText(_T("空调补水"));
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();
m_listCtrl.GetCell(len, 0).SetText(_T("未预见水量"));
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));
// cet 2010.9.6 del 更换控件类修改相应方法
// m_listCtrl.InsertItem ( len+1, _T("总计"), 0 );
// 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();
m_listCtrl.GetCell(len+1, 0).SetText(_T("总计"));
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)
MessageBox(_T("数量未输入!可直接在表格中编辑。"));
}
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;
//初始化
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")))
{
AfxMessageBox(_T("不能执行Microsoft Word 8.0!"));
return;
}
wordApplication.SetVisible(TRUE);
wordDocuments = wordApplication.GetDocuments();
activeDocument = wordDocuments.Add(vtOptional,vtOptional);
//写一行字
wordSelection = wordApplication.GetSelection();
wordParagraphs = wordSelection.GetParagraphs();
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"));
double nMostByDate(0), nMostByHour(0), nAverage(0);
CString csMostByDate, csMostByHour, csAverage, csPercent;
wordSelection.TypeText(_T("各用水部位统计结果如下:\n"));
//画表格
int rows(len+5), columns(9); // cet 2013.4.16 modify 添加空调补水
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();
oBorders.SetInsideLineStyle(1); // 设置表格线型
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();
oRange.InsertAfter(_T("用水部位"));
oCell = oTable.Cell(1, 2);
oCell.Merge(oTable.Cell(2, 2));
oRange = oCell.GetRange();
oRange.InsertAfter(_T("用水标准"));
oCell = oTable.Cell(1, 3);
oCell.Merge(oTable.Cell(2, 3));
oRange = oCell.GetRange();
oRange.InsertAfter(_T("单位"));
oCell = oTable.Cell(1, 4);
oCell.Merge(oTable.Cell(2, 4));
oRange = oCell.GetRange();
oRange.InsertAfter(_T("数量"));
oCell = oTable.Cell(1, 5);
oCell.Merge(oTable.Cell(2, 5));
oRange = oCell.GetRange();
oRange.InsertAfter(_T("用水时间"));
oCell = oTable.Cell(1, 6);
oCell.Merge(oTable.Cell(2, 6));
oRange = oCell.GetRange();
oRange.InsertAfter(_T("变化系数"));
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);
oRange.InsertAfter(_T("用水量(立方米)"));
oCell = oTable.Cell(2, 7);
oRange = oCell.GetRange();
oRange.InsertAfter(_T("最大日"));
oCell = oTable.Cell(2, 8);
oRange = oCell.GetRange();
oRange.InsertAfter(_T("最大时"));
oCell = oTable.Cell(2, 9);
oRange = oCell.GetRange();
oRange.InsertAfter(_T("平均时"));
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);
if(pData->m_csName == _T("游泳池(游泳池补充水)"))
pData->m_nMostByDate = pData->m_iNum * pData->m_nStdUse;//单位本来就是立方米
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;
}
// cet 2013.4.16 add 输出空调补水
int nAcRow = len + 3;
++len;
CString sTemp;
oCell = oTable.Cell(nAcRow, 1);
oRange = oCell.GetRange();
oRange.InsertAfter(_T("空调补水"));
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)
oRange.InsertAfter(_T("未预见水"));
else
oRange.InsertAfter(_T("合计"));
csPercent.Format(_T("按本表以上项目的%d%s计\n"), m_iPercent,_T("%"));
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();
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));
wordSelection.TypeText(csPercent);
wordSelection.TypeText(csMostByDate);
wordSelection.TypeText(csMostByHour);
wordSelection.TypeText(csAverage);
*/
wordApplication.Activate(); // cet 2013.4.7 add 激活word文档,避免cad获得焦点
}
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;
}