#include "stdafx.h" #include "PipeDDlg.h" IMPLEMENT_DYNAMIC(CPipeDDlg, CDialog) CPipeDDlg::CPipeDDlg(CWnd* pParent /*=NULL*/) : CDialog(CPipeDDlg::IDD, pParent) { m_dDn = 100; m_dOd = 114; m_dThk = 0.0; m_pDb = NULL; m_DNMax = 100; } CPipeDDlg::~CPipeDDlg(void) { } void CPipeDDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_PIPELIST, m_wndPipeList); } BEGIN_MESSAGE_MAP(CPipeDDlg, CDialog) ON_BN_CLICKED(IDOK, &CPipeDDlg::OnBnClickedOk) END_MESSAGE_MAP() void CPipeDDlg::SetDbServer(CUIISQLiteServer* pDb) { m_pDb = pDb; } BOOL CPipeDDlg::OnInitDialog() { CDialog::OnInitDialog(); m_wndPipeList.SetExtendedStyle(LVS_EX_FULLROWSELECT); m_wndPipeList.InsertColumn(0,_T("公称直径"),LVCFMT_LEFT,60); m_wndPipeList.InsertColumn(1,_T("外径"),LVCFMT_LEFT,60); m_wndPipeList.InsertColumn(2,_T("壁厚"),LVCFMT_LEFT,60); m_wndPipeList.InsertColumn(3,_T("重量"),LVCFMT_LEFT,60); m_wndPipeList.InsertColumn(4,_T("执行标准"),LVCFMT_LEFT,0); m_wndPipeList.InsertColumn(5,_T("物料描述"),LVCFMT_LEFT,0); m_wndPipeList.InsertColumn(6,_T("规格型号"),LVCFMT_LEFT,0); InitPipeList(); UpdateData(FALSE); return TRUE; } void CPipeDDlg::InitPipeList() { if (m_pDb != NULL) { m_wndPipeList.DeleteAllItems(); //公称直径系列 CString sSQL,sText; sSQL.Format(_T("select [公称直径],[外径],[壁厚],[重量] from AecOD where [公称直径]=%d order by [公称直径],[壁厚]"),m_DNMax); CUIIValueTable table; m_pDb->GetSelData(sSQL,table); table.ShowToListCtrl(&m_wndPipeList); CString sDnold,sThick; sDnold.Format(_T("%d"),(int)m_dDn); bool bFind = false; for (int i = 0;i < m_wndPipeList.GetItemCount();i++) { sText = m_wndPipeList.GetItemText(i,0); sThick = m_wndPipeList.GetItemText(i,2); if (m_dThk > 1.e-3 ) { if (sText.CompareNoCase(sDnold) == 0 && fabs( _ttof(sThick) - m_dThk ) < 1.e-6 ) { m_wndPipeList.SetItemState(i,LVIS_SELECTED,LVIS_SELECTED); m_wndPipeList.EnsureVisible(i,TRUE); bFind = true; break; } } else { if (sText.CompareNoCase(sDnold) == 0 ) { m_wndPipeList.SetItemState(i,LVIS_SELECTED,LVIS_SELECTED); m_wndPipeList.EnsureVisible(i,TRUE); bFind = true; break; } } } if (!bFind) { if (m_wndPipeList.GetItemCount() > 0) { m_wndPipeList.SetItemState(0,LVIS_SELECTED,LVIS_SELECTED); } } } } void CPipeDDlg::OnBnClickedOk() { POSITION ps = m_wndPipeList.GetFirstSelectedItemPosition(); if (ps != NULL) { int nItem = m_wndPipeList.GetNextSelectedItem(ps); m_dDn = _ttof(m_wndPipeList.GetItemText(nItem,0)); m_dOd = _ttof(m_wndPipeList.GetItemText(nItem,1)); m_dThk = _ttof(m_wndPipeList.GetItemText(nItem,2)); } else { AfxMessageBox(_T("请选择管子规格!")); return; } CDialog::OnOK(); }