Files
envi-code/SourceCode/Code2026/PipelineCmd/CPXSTDlg.cpp
T
2026-09-28 15:28:50 +08:00

170 lines
3.6 KiB
C++

#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();
}