#include "stdafx.h" #include "KTPIDPipePageDlg.h" #include "PIDRecDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif #ifndef WM_SHOWPARAMTEXT #define WM_SHOWPARAMTEXT (WM_USER + 0x1001) #endif int getMaxIDFromDB(LPCTSTR pszField, LPCTSTR pszTbl, CUIISQLiteServer *pDb) { if (!pszField || !pszTbl || !pDb) return -1; CString ss(_T("")), v(_T("")); ss.Format(_T("select max(%s) from %s"), pszField, pszTbl); if (!pDb->GetSelData(ss, v)) return -1; return _ttoi(v) + 1; } KTPIDPipePageDlg::KTPIDPipePageDlg(CWnd* pParent /*=NULL*/) : CDialog(KTPIDPipePageDlg::IDD, pParent) { //{{AFX_DATA_INIT(KTPIDPipePageDlg) //}}AFX_DATA_INIT m_pPipeParam = NULL; m_pADOServer = NULL; } KTPIDPipePageDlg::~KTPIDPipePageDlg() { DELETE_PTR(m_pADOServer); } void KTPIDPipePageDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(KTPIDPipePageDlg) DDX_Control(pDX, IDC_LISTPREESS, m_wndPressList); DDX_Control(pDX, IDC_LISTHEATTRA, m_wndHeatTraList); DDX_Control(pDX, IDC_LISTDN, m_wndDNList); DDX_Control(pDX, IDC_MEDIUMLIST, m_wndMedList); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(KTPIDPipePageDlg, CDialog) //{{AFX_MSG_MAP(KTPIDPipePageDlg) ON_NOTIFY(NM_CLICK, IDC_MEDIUMLIST, OnClickMediumlist) ON_LBN_SELCHANGE(IDC_LISTDN, OnSelchangeListdn) //}}AFX_MSG_MAP END_MESSAGE_MAP() BOOL KTPIDPipePageDlg::OnCommand(WPARAM wParam, LPARAM lParam) { WORD lWord = LOWORD(wParam); switch (lWord) { case IDOK: case IDCANCEL: { return TRUE; } default: break; } return CDialog::OnCommand(wParam, lParam); } BOOL KTPIDPipePageDlg::OnInitDialog() { CDialog::OnInitDialog(); m_ImageList.Create(IDB_BITMAPPIPE,16,1,ILC_COLOR16); m_wndMedList.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT); m_wndMedList.SetImageList(&m_ImageList,LVSIL_SMALL); m_wndMedList.InsertColumn(0,_T("介质"),LVCFMT_LEFT,40,100); m_wndMedList.InsertColumn(1,_T("描述"),LVCFMT_LEFT,120,100); m_wndHeatTraList.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT); m_wndHeatTraList.SetImageList(&m_ImageList,LVSIL_SMALL); m_wndHeatTraList.InsertColumn(0,_T("代号 "),LVCFMT_LEFT,40,100); m_wndHeatTraList.InsertColumn(1,_T("说明 "),LVCFMT_LEFT,120,100); m_wndHeatTraList.InsertColumn(2,_T("标注 "),LVCFMT_LEFT,0,0); CString dbPath = FilePath::GetSysDir(); dbPath += _T("\\Plumbing.db"); m_pADOServer = new CUIISQLiteServer; if (!m_pADOServer->InitADOServer(dbPath)) { AfxMessageBox(_T("数据库驱动加载数据库Plumbing.db失败!")); return FALSE; } //1.DN InitDNParam(); //2.Media InitMediumFromDb(); //3.press InitPressFromDb(); //4. InitHeatTraFromDb(); return TRUE; } void KTPIDPipePageDlg::InitDNParam() { CString sSQL,sDN,sRat; sDN.Format(_T("%d"),(int)m_pPipeParam->m_dDN); sSQL = _T("select [公制] from AecDn order by [公制]"); //可能为英制,从设置中读取,待定 CStringArray arValues; m_pADOServer->GetSelData(sSQL,arValues); m_wndDNList.ResetContent(); for (int i = 0;i < arValues.GetSize();i++) { m_wndDNList.InsertString(i,arValues.GetAt(i)); } int nIndex = m_wndDNList.FindString(0,sDN); if (nIndex != -1) m_wndDNList.SetCurSel(nIndex); //英制的记录 CString sInchDN = _T(""); sSQL.Format(_T("select [英制] from AecDn where [公制]=%d"),_ttoi(sDN)); m_pADOServer->GetSelData(sSQL,sInchDN); if (!sInchDN.IsEmpty()) _tcscpy(m_pPipeParam->m_pszInchDN,sInchDN); } BOOL KTPIDPipePageDlg::InitMediumFromDb() { if (m_pADOServer != NULL) { int nSel = 0; //1。介质描述 CUIIValueTable table; CString sSQL,sText,sDescr; sSQL = _T("select [介质代号],[介质] from AecFluid order by ID"); m_pADOServer->GetSelData(sSQL,table); int nCount = table.GetTableLogicSize(); int i = 0,nSize = 0; m_wndMedList.DeleteAllItems(); CStringArray arValue; for(i = 0;im_pszMedia) == 0) { nSel = i; } } m_wndMedList.SetItemState(nSel,LVIS_SELECTED,LVIS_SELECTED); m_wndMedList.EnsureVisible(nSel,FALSE); return TRUE; } return FALSE; } void KTPIDPipePageDlg::InitPressFromDb() { //获取项目名称 AecDbObjXDataMap xDataMap; { xDataMap.SetAt(DOC_TRADE, WPipe::ePetro); //应用行业,石油 xDataMap.SetAt(DOC_SCALE, _T("1:50")); //出图比例 xDataMap.SetAt(DOC_PLOTWIDTH, 0.5); //最小打印线宽 xDataMap.SetAt(DOC_DPLOTWIDTH, 0.5); //双线打印线宽 xDataMap.SetAt(DOC_WELDDIA, 1.0); //焊点直径 xDataMap.SetAt(DOC_PIPEMINDIA, 65.0); //最小管道直径 xDataMap.SetAt(DOC_PIPEMAXDIA, 200.0); //最大管线直径 xDataMap.SetAt(DOC_PERELBOWDIA, 40.0); //垂直弯头直径 xDataMap.SetAt(DOC_BREAKSPACE, 2.0); //交叉断线间距 xDataMap.SetAt(DOC_UNIT, 0); //单位 xDataMap.SetAt(DOC_DIMTERM, 0); //标注端符 xDataMap.SetAt(DOC_DIMTXTH, 2.0); //标注文字高度 xDataMap.SetAt(DOC_DIMTXTF, 0.7); //标注文字宽度系数 xDataMap.SetAt(DOC_EQPTXTH, 2.0); //设备标注文字高度 xDataMap.SetAt(DOC_EQPTXTF, 1.0); //设备标注文字宽度系数 xDataMap.SetAt(DOC_STRTXTH, 2.0); //结构标注文字高度 xDataMap.SetAt(DOC_STRTXTF, 0.7); //结构标注文字宽度系数 xDataMap.SetAt(DOC_SCRIPTT, _T("{0}{-}{1}{-}{2}{-}{3}"));//上标脚本 xDataMap.SetAt(DOC_SCRIPTB, _T("{4}{-}{5}"));//下标脚本 xDataMap.SetAt(DOC_ELTYPE, 0); //标高设置 xDataMap.SetAt(DOC_ELDESCR, _T("--")); //标高文本 } if (!KTModelLayoutXData::ReadModelXData(KT_PIPEINIT,xDataMap)) { acedAlert(_T("\n系统未初始化!")); return; } CString sProject; xDataMap.GetAt(DOC_PIDPROJECT,sProject); CString sSQL; sSQL.Format(_T("select [等级名称] from AecSpecname where [项目名称]='%s'"),sProject); CStringArray arValues; m_pADOServer->GetSelData(sSQL,arValues); m_wndPressList.ResetContent(); for (int i = 0;i < arValues.GetSize();i++) { m_wndPressList.InsertString(i,arValues.GetAt(i)); } int nIndex = m_wndPressList.FindString(0,m_pPipeParam->m_pszLevel); if (nIndex != -1) { m_wndPressList.SetCurSel(nIndex); } else { m_wndPressList.SetCurSel(0); } } void KTPIDPipePageDlg::InitHeatTraFromDb() { CString sSQL; sSQL.Format(_T("select [保温伴热代号],[说明文字],[标注文字] from AecHeat")); CUIIValueTable table; m_pADOServer->GetSelData(sSQL,table); int nSel = -1; CStringArray arValues; m_wndHeatTraList.DeleteAllItems(); for (int i = 0;i < table.GetTableLogicSize();i++) { arValues.RemoveAll(); table.GetValueRecord(i,arValues); if (arValues.GetSize() == 3) { m_wndHeatTraList.InsertItem(i,arValues.GetAt(0),2); m_wndHeatTraList.SetItemText(i,1,arValues.GetAt(1)); m_wndHeatTraList.SetItemText(i,2,arValues.GetAt(2)); if (arValues.GetAt(0).CompareNoCase(m_pPipeParam->m_pszInsTag) == 0) nSel = i; } } if (nSel == -1) nSel = 0; m_wndHeatTraList.SetItemState(nSel,LVIS_SELECTED,LVIS_SELECTED); } BOOL KTPIDPipePageDlg::UpdateDataEx() { //1.DN int nSel = m_wndDNList.GetCurSel(); if (nSel == -1) return FALSE; CString sDN; m_wndDNList.GetText(nSel,sDN); m_pPipeParam->m_dDN = _ttof(sDN); //英制 CString sInchDN = _T(""), sSQL; sSQL.Format(_T("select [英制] from AecDn where [公制]=%d"),_ttoi(sDN)); m_pADOServer->GetSelData(sSQL,sInchDN); if (!sInchDN.IsEmpty()) _tcscpy(m_pPipeParam->m_pszInchDN,sInchDN); //2.介质 POSITION ps = m_wndMedList.GetFirstSelectedItemPosition(); if (ps != NULL) { int nItem = m_wndMedList.GetNextSelectedItem(ps); if (nItem != -1) { CString sMedia = m_wndMedList.GetItemText(nItem,0); CString sDescr = m_wndMedList.GetItemText(nItem,1); _tcscpy(m_pPipeParam->m_pszMedia,sMedia); _tcscpy(m_pPipeParam->m_pszDesc,sDescr); } } //3.压力 nSel = m_wndPressList.GetCurSel(); if (nSel != -1) { CString sText; m_wndPressList.GetText(nSel,sText); _tcscpy(m_pPipeParam->m_pszLevel,sText); } //4.保温伴热 ps = m_wndHeatTraList.GetFirstSelectedItemPosition(); if (ps != NULL) { int nItem = m_wndHeatTraList.GetNextSelectedItem(ps); if (nItem != -1) { CString sTag = m_wndHeatTraList.GetItemText(nItem,0); CString sDimTag = m_wndHeatTraList.GetItemText(nItem,1); _tcscpy(m_pPipeParam->m_pszInsTag,sTag); _tcscpy(m_pPipeParam->m_pszInsTagDim,sDimTag); } } return TRUE; } void KTPIDPipePageDlg::OnClickMediumlist(NMHDR* pNMHDR, LRESULT* pResult) { POSITION ps = m_wndMedList.GetFirstSelectedItemPosition(); if (ps != NULL) { int nItem = m_wndMedList.GetNextSelectedItem(ps); if (nItem != -1) { CString sMedia = m_wndMedList.GetItemText(nItem,0); CString sDescr = m_wndMedList.GetItemText(nItem,1); _tcscpy(m_pPipeParam->m_pszMedia,sMedia); _tcscpy(m_pPipeParam->m_pszDesc,sDescr); GetParent()->GetParent()->SendMessage(WM_SHOWPARAMTEXT); } } *pResult = 0; } void KTPIDPipePageDlg::OnSelchangeListdn() { int nSel = m_wndDNList.GetCurSel(); if (nSel == -1) return; CString sDN; m_wndDNList.GetText(nSel,sDN); m_pPipeParam->m_dDN = _ttof(sDN); GetParent()->GetParent()->SendMessage(WM_SHOWPARAMTEXT); } void KTPIDPipePageDlg::OnAddPipeLine() { CPIDRecDlg dlg; if (IDOK == dlg.DoModal() ) { int nID = getMaxIDFromDB(_T("ID"), _T("AecDn"), m_pADOServer); if (nID == -1) return; //DN CString sSQL; sSQL.Format(_T("insert into AecDn (ID,[公制],[英制]) values (%d,%d,'%s')"), nID,dlg.m_nDN,_T("-1") ); m_pADOServer->ExecuteSQL(sSQL); //介质 nID = getMaxIDFromDB(_T("ID"), _T("AecFluid"), m_pADOServer); sSQL.Format(_T("insert into AecFluid (ID,[行业],[介质代号],[介质]) values (%d,'%s','%s','%s')"), nID,_T("市政"),dlg.m_sMedia,dlg.m_sDescr); m_pADOServer->ExecuteSQL(sSQL); //等级 nID = getMaxIDFromDB(_T("ID"), _T("AecSpecname"), m_pADOServer); sSQL.Format(_T("insert into AecSpecname (ID,[项目名称],[等级名称]) values (%d,'%s','%s')"), nID,_T("KT-1"),dlg.m_sPress); m_pADOServer->ExecuteSQL(sSQL); //保温伴热 nID = getMaxIDFromDB(_T("ID"), _T("AecHeat"), m_pADOServer); sSQL.Format(_T("insert into AecHeat (ID,[保温伴热代号],[说明文字],[标注文字],[标志]) values (%d,'%s','%s','%s',%d)"), nID,dlg.m_sCode,dlg.m_sHotRem,dlg.m_sCode,1); m_pADOServer->ExecuteSQL(sSQL); //1.DN InitDNParam(); //2.Media InitMediumFromDb(); //3.press InitPressFromDb(); //4. InitHeatTraFromDb(); } }