// PipeMatSpecDlg.cpp : implementation file // #include "stdafx.h" #include "PipeMatSpecDlg.h" #include "twtdef.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif //#ifdef _WIN64 #include"TGAs.h" //#endif //extern BOOL GetPipeMaterialList(XStringList &lstMat); ///////////////////////////////////////////////////////////////////////////// // CPipeMatSpecDlg dialog void SetPipeMatSpec() { CTemporaryResourceOverride vTemp; CPipeMatSpecDlg dlg; dlg.DoModal(); } CPipeMatSpecDlg::CPipeMatSpecDlg(CWnd* pParent /*=NULL*/) : CDialog(CPipeMatSpecDlg::IDD, pParent) { //{{AFX_DATA_INIT(CPipeMatSpecDlg) m_csMat = _T(""); m_csNew = _T(""); m_iNewSpec = 0; //}}AFX_DATA_INIT } void CPipeMatSpecDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CPipeMatSpecDlg) DDX_Control(pDX, IDC_LIST_MAT, m_listMat); DDX_Control(pDX, IDC_LIST_DATA, m_listCtrl); DDX_LBString(pDX, IDC_LIST_MAT, m_csMat); DDX_Text(pDX, IDC_EDIT_NEW, m_csNew); DDX_Text(pDX, IDC_EDIT_NEWSPEC, m_iNewSpec); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CPipeMatSpecDlg, CDialog) //{{AFX_MSG_MAP(CPipeMatSpecDlg) ON_LBN_SELCHANGE(IDC_LIST_MAT, OnSelchangeListMat) ON_BN_CLICKED(IDC_BUTTON_ADD, OnButtonAdd) ON_BN_CLICKED(IDC_BUTTON_ADD2, OnButtonAdd2) ON_BN_CLICKED(IDC_BUTTON_DEL, OnButtonDel) ON_BN_CLICKED(IDC_BUTTON_REMOVE, OnButtonRemove) ON_BN_CLICKED(IDC_BUTTON_DIM, OnButtonDim) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CPipeMatSpecDlg message handlers BOOL CPipeMatSpecDlg::OnInitDialog() { CDialog::OnInitDialog(); XStringList lstMat; GetPipeMaterialList(lstMat); for(int i=0;iMoveFirst();!pTable->IsEOF();pTable->MoveNext()){ GET_FIELD(pTable, _T("GC"), csMaterial); GET_FIELD(pTable, _T("DN"), iDn); if(_tcsicmp((const TCHAR*)csMaterial, (const TCHAR*)m_csMat) == 0 && iDn == _ttoi(csDn)) { SET_FIELD(pTable, _T("D"), _tstof(csDe)); SET_FIELD(pTable, _T("DJ"), _tstof(csDj)); break; } } } } void CPipeMatSpecDlg::OnSelchangeListMat() { WriteData(); UpdateData(TRUE); CodeBase db; XString fullFile; if(!FindFile(_T("pipe.dbf"), fullFile)) { AfxMessageBox(_T("对不起,没有发现pipe.dbf文件!")); return; } XDbfTable *pTable = db.Open(fullFile); if(!pTable) return; // cet 2010.9.7 modify // m_listCtrl.DeleteAllItems(); m_listCtrl.Clear(); CString csMaterial; int iDn(0); double nDe(0), nDj(0); for(pTable->MoveFirst();!pTable->IsEOF();pTable->MoveNext()){ GET_FIELD(pTable, _T("GC"), csMaterial); GET_FIELD(pTable, _T("DN"), iDn); GET_FIELD(pTable, _T("D"), nDe); GET_FIELD(pTable, _T("DJ"), nDj); if(_tcsicmp((const TCHAR*)csMaterial, (const TCHAR*)m_csMat) == 0 ) { CString csDn, csDe, csDj; // cet 2010.9.7 modify // int num = m_listCtrl.GetItemCount(); int num = m_listCtrl.GetRowNum(); for(int j=0;j iDn){ num = j; break; } } csDn.Format(_T("%d"), iDn); csDe.Format(_T("%.1f"), nDe); csDj.Format(_T("%.2f"), nDj); // cet 2010.9.7 modify // m_listCtrl.InsertItem ( num, csDn, 0 ); // m_listCtrl.SetItemText ( num, 1, csDe); // m_listCtrl.SetItemText ( num, 2, csDj); m_listCtrl.InsertRow(num); m_listCtrl.GetCell(num, 0).SetText(csDn); m_listCtrl.GetCell(num, 1).SetText(csDe); m_listCtrl.GetCell(num, 2).SetText(csDj); } } // cet 2010.9.7 del // m_listCtrl.m_iOldSelctedItemIndex = -1; // m_listCtrl.ShowControls(FALSE); UpdateData(FALSE); } void CPipeMatSpecDlg::OnOK() { UpdateData(TRUE); WriteData(); CDialog::OnOK(); } void CPipeMatSpecDlg::OnButtonAdd() { UpdateData(TRUE); XStringList lstMat; GetPipeMaterialList(lstMat); if(lstMat.Index((const TCHAR*)m_csNew) > -1 || m_csNew == _T("")){ MessageBox(_T("请正确输入管材名称!")); return; } m_listMat.AddString(m_csNew); { CodeBase db; XString fullFile; if(!FindFile(_T("pipe.dbf"), fullFile)) { AfxMessageBox(_T("对不起,没有发现pipe.dbf文件!")); return; } XDbfTable *pTable = db.Open(fullFile); if(pTable) { pTable->AppendBegin(); SET_FIELD(pTable, _T("GC"), (const TCHAR*)m_csNew); SET_FIELD(pTable, _T("DN"), 0); SET_FIELD(pTable, _T("D"), 0); SET_FIELD(pTable, _T("Dj"), 0); pTable->AppendEnd(); } } } void CPipeMatSpecDlg::OnButtonAdd2() { UpdateData(TRUE); if(m_iNewSpec <= 0){ MessageBox(_T("请输入管材的公称直径或公称外径!")); return; } DList lstSpec; GetPipeSpecList(lstSpec, m_csMat); for(int i=0;iAppendBegin(); SET_FIELD(pTable, _T("GC"), (const TCHAR*)m_csMat); SET_FIELD(pTable, _T("DN"), m_iNewSpec); SET_FIELD(pTable, _T("D"), 0); SET_FIELD(pTable, _T("Dj"), 0); pTable->AppendEnd(); } } OnSelchangeListMat(); } void CPipeMatSpecDlg::OnButtonDel() { // cet 2010.9.7 modify // POSITION pos = m_listCtrl.GetFirstSelectedItemPosition(); // if(!pos) // return; // int nItem = m_listCtrl.GetNextSelectedItem(pos); int nItem = m_listCtrl.GetCurRowIndex(); if(nItem < 0) return; CString csDn; // cet 2010.9.7 modify // csDn = m_listCtrl.GetItemText(nItem, 0); csDn = m_listCtrl.GetCell(nItem, 0).GetText(); { CodeBase db; XString fullFile; if(!FindFile(_T("pipe.dbf"), fullFile)) { AfxMessageBox(_T("对不起,没有发现pipe.dbf文件!")); return; } XDbfTable *pTable = db.Open(fullFile); if(!pTable) return; CString csMaterial; int iDn(0); for(pTable->MoveFirst();!pTable->IsEOF();pTable->MoveNext()){ GET_FIELD(pTable, _T("GC"), csMaterial); GET_FIELD(pTable, _T("DN"), iDn); if(_tcsicmp((const TCHAR*)csMaterial, (const TCHAR*)m_csMat) == 0 && iDn == _ttoi(csDn)) { pTable->Delete(); break; } } } OnSelchangeListMat(); } void CPipeMatSpecDlg::OnButtonRemove() { UpdateData(TRUE); if(m_csMat == _T("镀锌钢管") || m_csMat == _T("给水铸铁管") || m_csMat == _T("排水铸铁管") || m_csMat == _T("焊接钢管") || m_csMat == _T("PP-R") || m_csMat == _T("薄壁不锈钢管") || m_csMat == _T("铝塑复合管") || m_csMat == _T("给水用硬聚氯乙稀管PVC-U") || m_csMat == _T("排水用硬聚氯乙稀管PVC-U") || m_csMat == _T("无缝钢管") || m_csMat == _T("PEX")){ MessageBox(_T("不能删除系统管材!")); return; } CodeBase db; XString fullFile; if(!FindFile(_T("pipe.dbf"), fullFile)) { AfxMessageBox(_T("对不起,没有发现pipe.dbf文件!")); return; } XDbfTable *pTable = db.Open(fullFile); if(!pTable) return; CString csMaterial; int iDn(0); for(pTable->MoveFirst();!pTable->IsEOF();pTable->MoveNext()){ GET_FIELD(pTable, _T("GC"),csMaterial); GET_FIELD(pTable, _T("DN"), iDn); if(_tcsicmp((const TCHAR*)csMaterial, (const TCHAR*)m_csMat) == 0 ) { pTable->Delete(); } } int idx = m_listMat.FindString(0, m_csMat); m_listMat.DeleteString(idx); } void CPipeMatSpecDlg::OnButtonDim() { RBList rbCmd=ads_buildlist(RTSTR, _T("ISetPipeMatDnType"), NULL); resbuf *rbRes=NULL; if(ads_invoke(rbCmd, &rbRes)==RTNORM && rbRes) { ads_relrb(rbRes); return; } return; }