// PipeVMultDrawDlg.cpp : implementation file // #include "stdafx.h" #include "PipeVMultDrawDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif TGridMultiPipe::TGridMultiPipe() { AppendCol(_T("管线"), 70); AppendCol(_T("距基点距离"),65); AppendCol(_T("标高(米)")); SetColPosFix(); SetColFixLength(); SetNoPaste(); FitLastCol(); GetCol(0).SetComboSel(); } void TGridMultiPipe::OnCellComboString(WDGridCell&cell,CComboBox&combo) { if(cell.GetColIndex()==0){ /* cet 2011.12.9 modify combo.AddString(_T("给水")); combo.AddString(_T("热给水")); combo.AddString(_T("热回水")); combo.AddString(_T("污水")); combo.AddString(_T("废水")); combo.AddString(_T("中水")); combo.AddString(_T("消防")); combo.AddString(_T("喷淋")); combo.AddString(g_csPipeName[0]); combo.AddString(g_csPipeName[1]); combo.AddString(g_csPipeName[2]); combo.AddString(g_csPipeName[3]); combo.AddString(g_csPipeName[4]); combo.AddString(_T("其它")); */ std::vector::iterator it; int nIndex = 0; for (it = m_vecPipeName.begin(); it != m_vecPipeName.end(); it++) { combo.InsertString(nIndex, *it); ++nIndex; } } } void TGridMultiPipe::SetPipeName(const std::vector &data) { m_vecPipeName = data; } ///////////////////////////////////////////////////////////////////////////// // CPipeVMultDrawDlg dialog extern void GetLayerPipeName(std::map &mapLayerPipeName); CPipeVMultDrawDlg::CPipeVMultDrawDlg(CWnd* pParent /*=NULL*/) : CDialog(CPipeVMultDrawDlg::IDD, pParent) { //{{AFX_DATA_INIT(CPipeVMultDrawDlg) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT m_bIsSuperposable = TRUE; } void CPipeVMultDrawDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CPipeVMultDrawDlg) // NOTE: the ClassWizard will add DDX and DDV calls here //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CPipeVMultDrawDlg, CDialog) //{{AFX_MSG_MAP(CPipeVMultDrawDlg) ON_BN_CLICKED(IDC_BUTTON_ADD, OnButtonAdd) ON_BN_CLICKED(IDC_BUTTON_DEL, OnButtonDel) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CPipeVMultDrawDlg message handlers BOOL CPipeVMultDrawDlg::OnInitDialog() { CDialog::OnInitDialog(); // cet 2011.12.9 add InitLayerPipeName(); m_grid.Clear(); m_grid.Create(this, IDC_LIST_PIPE); m_grid.FitLastCol(); LoadLast(); // m_grid.AppendRow(); // m_grid.GetCell(0, 0).SetText(_T("给水")); // m_grid.GetCell(0, 1).SetText(_T("0")); // m_grid.GetCell(0, 2).SetText(_T("0")); m_grid.SetNoAppendButton(TRUE); m_grid.SetNoDefaultMenu(true); std::vector vecPipeName; GetPipeName(vecPipeName); m_grid.SetPipeName(vecPipeName); return TRUE; } void CPipeVMultDrawDlg::OnButtonAdd() { m_grid.AppendRow(); int idx = m_grid.GetRowNum(); m_grid.GetCell(idx-1, 0).SetText(_T("给水")); m_grid.GetCell(idx-1, 1).SetText(_T("200")); m_grid.GetCell(idx-1, 2).SetText(_T("0")); } void CPipeVMultDrawDlg::OnButtonDel() { long idx = m_grid.GetCurRowIndex(); if(idx < 0){ MessageBox(_T("没有选中的行!请点击表格左侧的行标!")); return; } m_grid.DelRow(idx); } void CPipeVMultDrawDlg::OnOK() { for(m_grid.MoveToFirst(); !m_grid.IsOut(); m_grid.MoveToNext()){ WDGridRow *pRow = m_grid.CurRow(); CString csPipe = (*pRow)[0].GetText().cs(); CString csDist = (*pRow)[1].GetText().cs(); CString csEle = (*pRow)[2].GetText().cs(); double nDist = _tstof(csDist); if(nDist > 0.001 || m_grid.GetRowNum() < 2){ m_bIsSuperposable = FALSE; break; } } Save(); CDialog::OnOK(); } void CPipeVMultDrawDlg::Save() { TCHAR strTmpPath[256] = _T(""); GetTempPath(255, strTmpPath); _tcscat(strTmpPath, _T("MultPipe.his")); FILE *fp = fopen(_AS(strTmpPath), "w"); if(!fp) return; for(m_grid.MoveToFirst(); !m_grid.IsOut(); m_grid.MoveToNext()){ WDGridRow *pRow = m_grid.CurRow(); CString csPipe = (*pRow)[0].GetText().cs(); // zxl 2013.04.17 add 改记忆名字为记忆图层 std::map::iterator it; CString sLayer; for (it = m_mapLayerPipeName.begin(); it != m_mapLayerPipeName.end(); it++) { if (it->second.Compare(csPipe) == 0) { sLayer = it->first; } } if (sLayer.IsEmpty()) { continue; } csPipe = sLayer; CString csDist = (*pRow)[1].GetText().cs(); CString csEle = (*pRow)[2].GetText().cs(); CString csTmp3 = csPipe+_T(" ")+csDist+_T(" ")+csEle + _T("\n"); fputs(_AS(csTmp3), fp); } fclose(fp); } void CPipeVMultDrawDlg::LoadLast() { XStringList lstHis; TCHAR strTmpPath[100] = _T(""); GetTempPath(100, strTmpPath); _tcscat(strTmpPath, _T("MultPipe.his")); FILE *fp=fopen(_AS(strTmpPath), "r"); if(!fp){ m_grid.AppendRow(); m_grid.GetCell(0, 0).SetText(_T("给水")); m_grid.GetCell(0, 1).SetText(_T("0")); m_grid.GetCell(0, 2).SetText(_T("0")); return; } while(!feof(fp)) { char sBuf[256]=""; fgets(sBuf, 255, fp); CString csTmp = sBuf; csTmp.TrimRight(); if(csTmp != _T("")) lstHis.Append(tstrnew(csTmp)); } fclose(fp); int len = lstHis.Length(); //zxl 2013.04.17 del // if(len < 1){ // m_grid.AppendRow(); // m_grid.GetCell(0, 0).SetText(_T("给水")); // m_grid.GetCell(0, 1).SetText(_T("0")); // m_grid.GetCell(0, 2).SetText(_T("0")); // return; // } for(int i=0;i::iterator it; for (it = m_mapLayerPipeName.begin(); it != m_mapLayerPipeName.end(); it++) { if (it->second.Compare(sPipeName) == 0) { sPipeLayer = it->first; break; } } if (it == m_mapLayerPipeName.end()) { return -1; } CString sLayer[] = { LAY_PIPE_FEED, LAY_PIPE_HEADFEED, LAY_PIPE_HEADBACK, LAY_PIPE_DIRT, LAY_PIPE_USELESS, LAY_PIPE_RAIN, LAY_PIPE_USED, LAY_PIPE_FIRE, LAY_PIPE_SPRINKLE, LAY_PIPE_COAGULATE, LAY_PIPE_DRINK, LAY_PIPE_PRESSDIRT, LAY_PIPE_PRESSUSELESS, LAY_PIPE_PRESSRAIN, LAY_PIPE_OTHER, LAY_PIPE_USER1, LAY_PIPE_USER2, LAY_PIPE_FEED2, LAY_PIPE_FEED3, LAY_PIPE_HEADFEED2, LAY_PIPE_HEADFEED3, LAY_PIPE_HEADBACK2, LAY_PIPE_HEADBACK3, LAY_PIPE_FIRE2, LAY_PIPE_FIRE3, LAY_PIPE_SPRINKLE2, LAY_PIPE_SPRINKLE3, LAY_PIPE_USED2, LAY_PIPE_USED3, LAY_PIPE_USER3, LAY_PIPE_USER4, LAY_PIPE_USER5, LAY_PIPE_USER6, LAY_PIPE_USER7, LAY_PIPE_USER8 }; int nRet = -1; for (int i = 0; i < 35; i++) { if (sLayer[i].Compare(sPipeLayer) == 0) { nRet = i; break; } } return nRet; } void CPipeVMultDrawDlg::GetPipeName(std::vector &vecPipeName) { vecPipeName.push_back(_T("给水")); vecPipeName.push_back(_T("给水中区")); vecPipeName.push_back(_T("给水高区")); vecPipeName.push_back(_T("热给水")); vecPipeName.push_back(_T("热给水中区")); vecPipeName.push_back(_T("热给水高区")); vecPipeName.push_back(_T("热回水")); vecPipeName.push_back(_T("热回水中区")); vecPipeName.push_back(_T("热回水高区")); vecPipeName.push_back(_T("中水")); vecPipeName.push_back(_T("中水中区")); vecPipeName.push_back(_T("中水高区")); vecPipeName.push_back(_T("消防")); vecPipeName.push_back(_T("消防中区")); vecPipeName.push_back(_T("消防高区")); vecPipeName.push_back(_T("喷淋")); vecPipeName.push_back(_T("喷淋中区")); vecPipeName.push_back(_T("喷淋高区")); vecPipeName.push_back(_T("污水")); vecPipeName.push_back(_T("废水")); vecPipeName.push_back(_T("雨水")); vecPipeName.push_back(m_mapLayerPipeName[LAY_PIPE_COAGULATE]); vecPipeName.push_back(m_mapLayerPipeName[LAY_PIPE_DRINK]); vecPipeName.push_back(m_mapLayerPipeName[LAY_PIPE_PRESSDIRT]); vecPipeName.push_back(m_mapLayerPipeName[LAY_PIPE_PRESSUSELESS]); vecPipeName.push_back(m_mapLayerPipeName[LAY_PIPE_PRESSRAIN]); vecPipeName.push_back(m_mapLayerPipeName[LAY_PIPE_USER1]); vecPipeName.push_back(m_mapLayerPipeName[LAY_PIPE_USER2]); vecPipeName.push_back(m_mapLayerPipeName[LAY_PIPE_USER3]); vecPipeName.push_back(m_mapLayerPipeName[LAY_PIPE_USER4]); vecPipeName.push_back(m_mapLayerPipeName[LAY_PIPE_USER5]); vecPipeName.push_back(m_mapLayerPipeName[LAY_PIPE_USER6]); vecPipeName.push_back(m_mapLayerPipeName[LAY_PIPE_USER7]); vecPipeName.push_back(m_mapLayerPipeName[LAY_PIPE_USER8]); vecPipeName.push_back(_T("其他")); }