755 lines
22 KiB
C++
755 lines
22 KiB
C++
// 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;
|
||
}
|