#include "stdafx.h" #include "CPXSTDlg.h" IMPLEMENT_DYNAMIC(CPXSTDlg, CDialog) CPXSTDlg::CPXSTDlg(CWnd* pParent /*=NULL*/) : CDialog(IDD_PXST_DLG, pParent) , m_dDN(0) , m_dThick(0) , m_dL1(0) , m_dL2(0) , m_dL3(0) , m_dTOD(0) , m_dTThick(0) , m_bOff(TRUE) { m_pDb = NULL; m_pParam = NULL; } CPXSTDlg::~CPXSTDlg() { } void CPXSTDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Text(pDX, IDC_EDIT1, m_dDN); DDX_Text(pDX, IDC_EDIT2, m_dThick); DDX_Text(pDX, IDC_EDIT3, m_dL1); DDX_Text(pDX, IDC_EDIT4, m_dL2); DDX_Text(pDX, IDC_EDIT5, m_dL3); DDX_Control(pDX, IDC_LIST1, m_wndList); DDX_Control(pDX, IDC_EDIT4, m_wndEditL2); } BEGIN_MESSAGE_MAP(CPXSTDlg, CDialog) ON_BN_CLICKED(IDOK, &CPXSTDlg::OnBnClickedOk) ON_EN_CHANGE(IDC_EDIT3, &CPXSTDlg::OnEditChang1) END_MESSAGE_MAP() void CPXSTDlg::SetAdoDb(CUIISQLiteServer *pDb) { m_pDb = pDb; } void CPXSTDlg::SetPipeParam(WPipe::PipeParam *pParam) { m_pParam = pParam; m_dDN = pParam->m_dDN; m_dTDN = m_dDN; } BOOL CPXSTDlg::OnInitDialog() { CDialog::OnInitDialog(); m_wndList.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_SINGLEROW); m_wndList.InsertColumn(0,_T("公称直径"), LVCFMT_CENTER, 120); m_wndList.InsertColumn(1,_T("外径"), LVCFMT_CENTER, 120); m_wndList.InsertColumn(2,_T("壁厚"), LVCFMT_CENTER, 120); m_dDN = m_pParam->m_dDN; m_dThick = m_pParam->m_dThick; m_dTThick = m_dThick; QueryDefaultL(); m_wndEditL2.SetReadOnly(!m_bOff); UpdateData(FALSE); return TRUE; } void CPXSTDlg::OnEditChang1() { UpdateData(); m_dL2 = m_dL1; UpdateData(FALSE); } void CPXSTDlg::QueryDefaultL() { CString sSQL; sSQL.Format(_T("select [长度L],[长度S],[公称直径S] from AecTeeData where [公称直径L]=%d order by [公称直径S] desc"),(int)(m_dDN+0.5)); CUIIValueTable tbl; m_pDb->GetSelData(sSQL, tbl); if (tbl.GetTableLogicSize() > 0) { CStringArray arVal; tbl.GetValueRecord(0, arVal); if (arVal.GetSize() >= 2) { m_dL1 = _ttof(arVal.GetAt(0)); m_dL2 = _ttof(arVal.GetAt(0)); m_dL3 = _ttof(arVal.GetAt(1)); } int nItem = 0; CString sDN,sThk,sOD; sThk.Format(_T("%.1f"),m_dThick); sSQL = _T("select [公称直径],[外径] from [AecOD] where [外径系列]='A'"); CMapStringToString mapDn2OD; m_pDb->GetSelData(sSQL, mapDn2OD); //sSQL.Format(_T("select [公称直径],[壁厚] from [AecOD] where [壁厚]<=%.1f and [外径系列]='A'"),m_dThick); //CMapStringToString mapDn2Thk; //m_pDb->GetSelData(sSQL, mapDn2Thk); sThk.Format(_T("%.1f"), m_dThick); for (int i = 0; i < tbl.GetTableLogicSize();i++) { arVal.RemoveAll(); tbl.GetValueRecord(i, arVal); //[长度L],[长度S],[公称直径S] from AecTeeData if (arVal.GetSize() == 3) { sDN = arVal.GetAt(2); sOD = _T(""); if (mapDn2OD.Lookup(sDN, sOD)) { nItem = m_wndList.InsertItem(m_wndList.GetItemCount(), sDN); m_wndList.SetItemText(nItem, 1, sOD); m_wndList.SetItemText(nItem, 2, sThk); } } } m_wndList.SetItemState(0, LVIS_SELECTED, LVIS_SELECTED); } } void CPXSTDlg::OnBnClickedOk() { UpdateData(); if (m_dL1 < 1.e-1 || m_dL2 < 1.e-1 || m_dL3 < 1.e-1) { AfxMessageBox(_T("请检查L1,L2,L3尺寸是否过小!")); return; } POSITION ps = m_wndList.GetFirstSelectedItemPosition(); if (ps != NULL) { int nItem = m_wndList.GetNextSelectedItem(ps); if (nItem != -1) { m_dTDN = _ttof(m_wndList.GetItemText(nItem, 0)); m_dTOD = _ttof(m_wndList.GetItemText(nItem, 1)); m_dTThick = _ttof(m_wndList.GetItemText(nItem, 2)); } } if ( (m_dL1+ m_dL2) < m_dTOD ||m_dL3 < 0.6 * m_dDN) { AfxMessageBox(_T("请检查L1,L2,L3尺寸是否过小!")); return; } CDialog::OnOK(); }