#include "stdafx.h" #include "CDKDDlg.h" int g_nNozzY[] = {6,8,10,15,20,25,32,40,50,65,80,100,125,150,200,250,300,350,400,450,500,600,800,850,900,950,1000,1050,1100,1150,1200,1500,2000,0}; int g_nHoleNo = 1; int g_nD5R[] = {200,220,235,255,290,315,375,435,495,545,600,650,705,820,910,1020,1120,1220,0}; int g_nD5F[] = {200,220,235,255,290,315,375,435,495,545,600,650,705,820,910,1020,1120,1220,0}; int g_nD2G[] = {95,105,110,120,135,150,210,230,260,320,375,475,525,575,630,680,830,920,1020,1220,0}; IMPLEMENT_DYNAMIC(CCDKDDlg, CDialog) CCDKDDlg::CCDKDDlg(CWnd* pParent/* = NULL*/) : CDialog(CCDKDDlg::IDD, pParent) ,m_dDL(500) ,m_dW(500) ,m_dE(0) ,m_nShape(0) ,m_nCurSel(10) ,m_bHasCase(FALSE) ,m_bHasNozz(TRUE) ,m_dT(6.0) ,m_sMertial(_T("PVC")) ,m_sNo(_T("H-001")) ,m_sPipeType(_T("A型刚性防水套管")) , m_dHoleDeep(0) , m_bHoleDeep(FALSE) , m_bEnableRadio(TRUE) , m_dTL(200.0) , m_bMultiCurveUI(false) , m_bExt(FALSE) , m_dExt1(0) , m_dExt2(0) , m_nD2(2) , m_sD2(_T("")) , m_sForUse(_T("普通")) { m_bIsArrayKD = FALSE; m_dBomEl = 0.0; m_bBomEl = TRUE; m_bFromPipe = FALSE; GET_CACHE(CCDKDDlg ,%f%f%f%f%d%d%d%d%s%s , &m_dDL , &m_dW , &m_dE , &m_dT , &m_nShape , &m_nCurSel , &m_bHasNozz , &m_bHasCase , &m_sMertial , &m_sNo); m_sNo.Format(_T("H-%d"),g_nHoleNo); g_nHoleNo++; } CCDKDDlg::~CCDKDDlg(void) { } void CCDKDDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Text(pDX, IDC_EDIT1, m_dDL); DDX_Text(pDX, IDC_EDIT2, m_dW); DDX_Text(pDX, IDC_EDIT3, m_dE); DDX_Text(pDX, IDC_EDIT4, m_dT); DDX_Radio(pDX, IDC_RADIO1, m_nShape); DDX_CBIndex(pDX, IDC_COMBOINF, m_nCurSel); DDX_Check(pDX, IDC_CHECK1, m_bHasNozz); DDX_Check(pDX, IDC_CHECK2, m_bHasCase); DDX_CBString(pDX, IDC_COMBO1, m_sMertial); DDX_Text(pDX, IDC_EDIT6, m_sNo); DDX_Control(pDX, IDC_COMBO1, m_wndComboMaters); DDX_Control(pDX, IDC_COMBOINF, m_wndDnCombo); DDX_CBString(pDX, IDC_COMBO3, m_sPipeType); DDX_Control(pDX, IDC_COMBO3, m_wndPipeComboType); DDX_Text(pDX, IDC_EDIT8, m_dHoleDeep); DDX_Check(pDX, IDC_CHECK3, m_bHoleDeep); DDX_Control(pDX, IDC_RADIO1, m_btnRadio1); DDX_Control(pDX, IDC_RADIO2, m_btnRadio2); DDX_Control(pDX, IDC_RADIO3, m_btnRadio3); DDX_Text(pDX, IDC_EDIT9, m_dTL); DDX_Check(pDX, IDC_CHECK6, m_bExt); DDX_Text(pDX, IDC_EDIT10, m_dExt1); DDX_Text(pDX, IDC_EDIT11, m_dExt2); DDX_Control(pDX, IDC_EDIT10, m_wndExtEx1); DDX_Control(pDX, IDC_EDIT11, m_wndEditExt2); DDX_Text(pDX, IDC_EDIT12, m_nD2); DDX_CBString(pDX, IDC_COMBO5, m_sD2); DDX_Control(pDX, IDC_COMBO5, m_wndD2Combo); DDX_Text(pDX, IDC_COMBO10, m_sForUse); } BEGIN_MESSAGE_MAP(CCDKDDlg, CDialog) ON_BN_CLICKED(IDOK, &CCDKDDlg::OnBnClickedOk) ON_BN_CLICKED(IDC_RADIO1, &CCDKDDlg::OnBnClickedRadio1) ON_BN_CLICKED(IDC_RADIO2, &CCDKDDlg::OnBnClickedRadio2) ON_BN_CLICKED(IDC_CHECK2, &CCDKDDlg::OnBnClickedCheck2) ON_BN_CLICKED(IDC_CHECK1, &CCDKDDlg::OnBnClickedCheck1) ON_BN_CLICKED(IDC_RADIO3, &CCDKDDlg::OnBnClickedRadio3) ON_BN_CLICKED(IDC_CHECK6, &CCDKDDlg::OnBnClickedCheck6) ON_CBN_SELCHANGE(IDC_COMBO3, &CCDKDDlg::OnCbnSelchangeCombo3) END_MESSAGE_MAP() BOOL CCDKDDlg::OnInitDialog() { CDialog::OnInitDialog(); m_dDLBk = m_dDL; m_dWBk = m_dW; UpdateData(FALSE); CString path = FilePath::GetSysDir() + Plumbing_DB; if (!m_dbSQLite.InitADOServer(path)) { AfxMessageBox(CString(_T("数据库初始化失败,请检查 sys")) + Plumbing_DB + _T("文件是否存在.")); return FALSE; } InitMaterial(); InitComboDN(); OnBnClickedRadio1(); OnBnClickedCheck1(); if (m_bIsArrayKD) { GetDlgItem(IDC_STATIC_EL)->SetWindowText(_T("最低洞口中心标高(&E):") ); m_dE = m_dBomEl + 500; } //异形洞口的标高锁定. GetDlgItem(IDC_EDIT3)->EnableWindow(m_bBomEl); if (m_bFromPipe) { //GetDlgItem(IDC_EDIT1)->EnableWindow(FALSE); //GetDlgItem(IDC_EDIT2)->EnableWindow(FALSE); } int nSel = m_wndPipeComboType.FindString(0,m_sPipeType); if (nSel == -1) { nSel = 0; } m_wndPipeComboType.SetCurSel(nSel); //更新翼环数据 ShowYHCombo(); m_btnRadio1.EnableWindow(m_bEnableRadio); m_btnRadio2.EnableWindow(m_bEnableRadio); m_btnRadio3.EnableWindow(m_bEnableRadio); UpdateData(FALSE); if (m_bMultiCurveUI) { GetDlgItem(IDC_RADIO1)->EnableWindow(0); GetDlgItem(IDC_RADIO2)->EnableWindow(0); GetDlgItem(IDC_RADIO3)->EnableWindow(0); GetDlgItem(IDC_EDIT1)->EnableWindow(0); GetDlgItem(IDC_EDIT2)->EnableWindow(0); GetDlgItem(IDC_EDIT3)->EnableWindow(0); GetDlgItem(IDC_EDIT6)->EnableWindow(0); GetDlgItem(IDC_EDIT8)->EnableWindow(0); m_wndD2Combo.EnableWindow(0); GetDlgItem(IDC_EDIT12)->EnableWindow(0); } m_wndExtEx1.EnableWindow(m_bExt); m_wndEditExt2.EnableWindow(m_bExt); return TRUE; } void CCDKDDlg::OnBnClickedOk() { UpdateData(); if (m_bIsArrayKD) { if (m_dE - m_dBomEl < 1.e-3) { AfxMessageBox(_T("请检查开洞的洞口标高是否合理!")); return; } } if (m_bHoleDeep) { if (m_dHoleDeep < 5.0)//5毫米 { AfxMessageBox(_T("请检查开洞的洞口深度是否合理!")); return; } } if (m_bHasCase) { if (m_dTL < 1.e-2) { AfxMessageBox(_T("请检查套管的长度是否合理!")); return; } } if (m_bFromPipe)//如果来自管子,则开洞尺寸必须大于外径 { if ( (m_dDLBk - m_dDL) > 1.e-10 || (m_dWBk - m_dW) > 1.e-10) { AfxMessageBox(_T("穿管开洞,洞口尺寸不能小于管子外径!")); return; } } SET_CACHE(CCDKDDlg , %f%f%f%f%d%d%d%d%s%s , m_dDL , m_dW , m_dE , m_dT , m_nShape , m_nCurSel , m_bHasNozz , m_bHasCase , m_sMertial , m_sNo); OnOK(); } void CCDKDDlg::GetHoleData(KHoleData& data) const { data.m_dDL = m_dDL; data.m_dW = m_dW; data.m_dE = m_dE; data.m_dT = m_dT; data.m_dTL = m_dTL; data.m_dDeep = m_dHoleDeep; data.m_bDeep = m_bHoleDeep; data.m_nCurSel = m_nCurSel; data.m_nShape = m_nShape; data.m_bHasCase = m_bHasCase; data.m_bHasNozz = m_bHasNozz; data.m_nD2 = m_nD2; _tcscpy(data.m_sHoles,m_sHoles); _tcscpy(data.m_sMertial,m_sMertial); _tcscpy(data.m_sPipeType,m_sPipeType); _tcscpy(data.m_sD2,m_sD2); _tcscpy(data.m_sNo,m_sNo); _tcscpy(data.m_sForUser, m_sForUse); } void CCDKDDlg::InitMaterial() { //材质 CStringArray arVals; CString sSQL = _T("select [材质] from AecMaterial where [类型]='管道'"); m_dbSQLite.GetSelData(sSQL,arVals); int nSel = 0; m_wndComboMaters.ResetContent(); for (int i = 0;i < arVals.GetSize();i++) { m_wndComboMaters.InsertString(i,arVals.GetAt(i)); if (m_sMertial.CompareNoCase(arVals.GetAt(i)) == 0) { nSel = i; } } m_wndComboMaters.SetCurSel(nSel); } void CCDKDDlg::EnableRadioBtn(BOOL bEnable) { m_bEnableRadio = bEnable; } void CCDKDDlg::setMultiCurveUI() { m_bMultiCurveUI = true; } void CCDKDDlg::InitComboDN() { m_wndDnCombo.ResetContent(); int i = 0,nIndex = 0; CString sText; while(TRUE) { if (g_nNozzY[i] == 0) break; sText.Format(_T("%d"),g_nNozzY[i]); nIndex = m_wndDnCombo.InsertString(i,sText); m_wndDnCombo.SetItemData(nIndex,i); i++; } if (m_wndDnCombo.GetCount() >= 10) m_wndDnCombo.SetCurSel(10); m_nCurSel = 10; } void CCDKDDlg::OnBnClickedRadio1() { UpdateData(); GetDlgItem(IDC_STATIC_W)->EnableWindow(m_nShape); GetDlgItem(IDC_EDIT2)->EnableWindow(m_nShape); GetDlgItem(IDC_STATIC_W2)->EnableWindow(m_nShape); if (m_nShape == 0) { GetDlgItem(IDC_STATIC_DL)->SetWindowText(_T("直径(&D):")); GetDlgItem(IDC_STATIC_Y)->EnableWindow(FALSE); GetDlgItem(IDC_EDIT27)->EnableWindow(FALSE); } else { if (m_nShape == 1) { GetDlgItem(IDC_STATIC_Y)->EnableWindow(TRUE); GetDlgItem(IDC_EDIT27)->EnableWindow(TRUE); } GetDlgItem(IDC_STATIC_DL)->SetWindowText(_T("高度(&H):")); } } void CCDKDDlg::OnBnClickedRadio2() { UpdateData(); GetDlgItem(IDC_STATIC_W)->EnableWindow(m_nShape); GetDlgItem(IDC_EDIT2)->EnableWindow(m_nShape); GetDlgItem(IDC_STATIC_W2)->EnableWindow(m_nShape); if (m_nShape == 0) { GetDlgItem(IDC_STATIC_DL)->SetWindowText(_T("直径(&D):")); } else if (m_nShape == 1) { GetDlgItem(IDC_STATIC_DL)->SetWindowText(_T("高度(&H):")); GetDlgItem(IDC_STATIC_Y)->EnableWindow(TRUE); GetDlgItem(IDC_EDIT27)->EnableWindow(TRUE); } } void CCDKDDlg::OnBnClickedRadio3() { UpdateData(); if (m_nShape == 2) { GetDlgItem(IDC_STATIC_W)->EnableWindow(FALSE); GetDlgItem(IDC_EDIT2)->EnableWindow(FALSE); GetDlgItem(IDC_STATIC_W2)->EnableWindow(FALSE); GetDlgItem(IDC_CHECK2)->EnableWindow(FALSE); GetDlgItem(IDC_EDIT4)->EnableWindow(FALSE); GetDlgItem(IDC_CHECK1)->EnableWindow(FALSE); GetDlgItem(IDC_COMBOINF)->EnableWindow(FALSE); } else { GetDlgItem(IDC_STATIC_W)->EnableWindow(TRUE); GetDlgItem(IDC_EDIT2)->EnableWindow(TRUE); GetDlgItem(IDC_STATIC_W2)->EnableWindow(TRUE); GetDlgItem(IDC_CHECK2)->EnableWindow(TRUE); GetDlgItem(IDC_EDIT4)->EnableWindow(TRUE); GetDlgItem(IDC_CHECK1)->EnableWindow(TRUE); GetDlgItem(IDC_COMBOINF)->EnableWindow(TRUE); OnBnClickedRadio2(); } } void CCDKDDlg::OnBnClickedCheck2() { UpdateData(); GetDlgItem(IDC_EDIT4)->EnableWindow(m_bHasCase); } void CCDKDDlg::OnBnClickedCheck1() { UpdateData(); m_wndDnCombo.EnableWindow(m_bHasNozz); if (m_bHasNozz) { CString sText; for (int i = 0;i < m_wndDnCombo.GetCount();i++) { m_wndDnCombo.GetLBText(i,sText); if ( fabs(_ttof(sText) - m_dDL) < 1.e-3 ) { m_wndDnCombo.SetCurSel(i); break; } } } } void CCDKDDlg::OnBnClickedCheck6() { UpdateData(); m_wndExtEx1.EnableWindow(m_bExt); m_wndEditExt2.EnableWindow(m_bExt); } void CCDKDDlg::OnCbnSelchangeCombo3() { UpdateData(); ShowYHCombo(); } void CCDKDDlg::ShowYHCombo() { CString sTemp; if (m_sPipeType.Find(_T("柔性")) != -1) { m_wndD2Combo.ResetContent(); for (int i = 0;i < 30;i++) { if (g_nD5R[i] == 0) break; sTemp.Format(_T("%d"),g_nD5R[i]); m_wndD2Combo.AddString(sTemp); } } else if ( m_sPipeType.Find(_T("法兰")) != -1) { m_wndD2Combo.ResetContent(); for (int i = 0;i < 30;i++) { if (g_nD5F[i] == 0) break; sTemp.Format(_T("%d"),g_nD5F[i]); m_wndD2Combo.AddString(sTemp); } } else if (m_sPipeType.Find(_T("刚性")) != -1) { m_wndD2Combo.ResetContent(); for (int i = 0;i < 30;i++) { if (g_nD2G[i] == 0) break; sTemp.Format(_T("%d"),g_nD2G[i]); m_wndD2Combo.AddString(sTemp); } } }