#include "stdafx.h" #include "CGZDJDlg.h" #include "KTSetting.h" #include "CHFSetDlg.h" IMPLEMENT_DYNAMIC(CGZDJDlg, CDialog) CGZDJDlg::CGZDJDlg(CWnd* pParent /*=NULL*/) : CDialog(IDD_GZDJ_DLG, pParent) , m_n2DStyle(1) { m_nPipeCp = 1; m_bHasPipeCp = TRUE; m_dDNOn = 80; m_sName = _T(""); m_nMode = 0; m_dDNMin = 0; } CGZDJDlg::~CGZDJDlg() { } void CGZDJDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_COMBO1, m_wndCombList); DDX_Control(pDX, IDC_STATICVIEW, m_wndPreview); DDX_Control(pDX, IDC_LIST2, m_wndListHld); DDX_Control(pDX, IDC_LIST3, m_wndListPCP); DDX_Radio(pDX, IDC_RADIO1, m_nPipeCp); DDX_Check(pDX, IDC_CHECK1, m_bHasPipeCp); DDX_Control(pDX, IDC_RADIO4, m_wndBT2D1); DDX_Control(pDX, IDC_RADIO5, m_wndBT2D2); DDX_Control(pDX, IDC_RADIO6, m_wndBT2D3); DDX_Radio(pDX, IDC_RADIO4, m_n2DStyle); } BEGIN_MESSAGE_MAP(CGZDJDlg, CDialog) ON_BN_CLICKED(IDOK, &CGZDJDlg::OnBnClickedOk) ON_BN_CLICKED(IDC_RADIO1, &CGZDJDlg::OnBnClickedRadio1) ON_BN_CLICKED(IDC_RADIO2, &CGZDJDlg::OnBnClickedRadio2) ON_BN_CLICKED(IDC_RADIO3, &CGZDJDlg::OnBnClickedRadio3) ON_BN_CLICKED(IDCANCEL, &CGZDJDlg::OnBnClickedCancel) ON_WM_SIZE() ON_WM_SIZING() ON_CBN_SELCHANGE(IDC_COMBO1, &CGZDJDlg::OnCbnSelchangeCombo1) ON_NOTIFY(NM_DBLCLK, IDC_LIST2, &CGZDJDlg::OnNMDblclkList2) ON_BN_CLICKED(IDC_BUTTONHF, &CGZDJDlg::OnBnClickedButtonhf) ON_BN_CLICKED(IDC_BUTTONHF2, &CGZDJDlg::OnBnClickedButtonhf2) ON_BN_CLICKED(IDC_BUTTON1, &CGZDJDlg::OnBnClickedButton1) ON_BN_CLICKED(IDC_BUTTON2, &CGZDJDlg::OnBnClickedButton2) END_MESSAGE_MAP() BOOL CGZDJDlg::OnInitDialog() { CDialog::OnInitDialog(); m_wndListHld.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT | LVS_EX_SINGLEROW); m_wndListPCP.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT | LVS_EX_SINGLEROW); ShowHolderList(); OnBnClickedRadio2(); GetClientRect(&m_rcDefault); m_szDefault.SetSize(m_rcDefault.Width(), m_rcDefault.Height()); m_bmp2D1.LoadBitmap(IDB_BITMAP_2D1); m_wndBT2D1.SetBitmap(m_bmp2D1); m_bmp2D2.LoadBitmap(IDB_BITMAP_2D2); m_wndBT2D2.SetBitmap(m_bmp2D2); m_bmp2D3.LoadBitmap(IDB_BITMAP_2D3); m_wndBT2D3.SetBitmap(m_bmp2D3); return TRUE; } void CGZDJDlg::ShowHolderList() { CString sFolder,sPath, sLn,sJpg,sName; KTSetting::GetKTPsPath(sFolder); sPath.Format(_T("%s%s%d.txt"), sFolder,_T("Support\\Holder\\Holder"),m_nMode); int nCurSel = -1; CStdioFile file; if (file.Open(sPath, CFile::modeRead | CFile::typeText)) { int nPos = -1, nItem = -1; while (file.ReadString(sLn)) { nPos = sLn.Find(_T('/')); if (nPos != -1) { sName = sLn.Mid(0, nPos); sJpg = sLn.Mid(nPos + 1); //no sort!! nItem = m_wndCombList.AddString(sName); m_arJPGFiles.Add(sJpg); if (m_sName.CompareNoCase(sName) == 0) nCurSel = nItem; } } file.Close(); } sPath = sFolder + _T("Support\\Holder\\Holder.db"); m_db.InitADOServer(sPath); if (nCurSel != -1) { m_wndCombList.SetCurSel(nCurSel); OnCbnSelchangeCombo1(); } } BOOL CGZDJDlg::MakeSureDNisRight(CListCtrl* pListCtrl) { //变量 POSITION ps = pListCtrl->GetFirstSelectedItemPosition(); if (ps != NULL) { int iItem = pListCtrl->GetNextSelectedItem(ps); if (iItem != -1) { HDITEM hdItem; hdItem.mask = HDI_TEXT; TCHAR szCol[MAX_PATH]; hdItem.pszText = szCol; hdItem.cchTextMax = MAX_PATH; CString sCol, sVal,sTip; for (int n = 0; n < pListCtrl->GetHeaderCtrl()->GetItemCount(); n++) { pListCtrl->GetHeaderCtrl()->GetItem(n, &hdItem); if (_tcscmp(szCol, _T("DN")) == 0) { sVal = pListCtrl->GetItemText(iItem, n); if (fabs(m_dDNOn - _ttof(sVal)) > 1.0) { sTip.Format(_T("请选择公称直径为 %d 管架数据行或需要的管卡数据行!"), (int)(m_dDNOn + 0.5)); AfxMessageBox(sTip); return FALSE; } } } } else { AfxMessageBox(_T("请选择管架数据行或需要的管卡数据行!")); return FALSE; } } else { AfxMessageBox(_T("请选择管架数据行或需要的管卡数据行!")); return FALSE; } return TRUE; } void CGZDJDlg::FilltoXData(CListCtrl* pListCtrl) { //变量 POSITION ps = pListCtrl->GetFirstSelectedItemPosition(); if (ps != NULL) { int iItem = pListCtrl->GetNextSelectedItem(ps); if (iItem != -1) { HDITEM hdItem; hdItem.mask = HDI_TEXT; TCHAR szCol[MAX_PATH]; hdItem.pszText = szCol; hdItem.cchTextMax = MAX_PATH; CString sCol, sVal; for (int n = 0; n < pListCtrl->GetHeaderCtrl()->GetItemCount(); n++) { pListCtrl->GetHeaderCtrl()->GetItem(n, &hdItem); sVal = pListCtrl->GetItemText(iItem, n); sCol = szCol; m_xData.SetAt(sCol, _ttof(sVal)); } } else { AfxMessageBox(_T("请选择管架数据行!")); return; } } } void CGZDJDlg::FilltoXData2(CListCtrl *pListCtrl) { HDITEM hdItem; hdItem.mask = HDI_TEXT; TCHAR szCol[MAX_PATH]; hdItem.pszText = szCol; hdItem.cchTextMax = MAX_PATH; int nDNCol = -1; CString sCol, sVal, sDN; for (int n = 0; n < pListCtrl->GetHeaderCtrl()->GetItemCount(); n++) { pListCtrl->GetHeaderCtrl()->GetItem(n, &hdItem); if (_tcscmp(szCol, _T("DN")) == 0) { nDNCol = n; break; } } int nDNMin = (int)(m_dDNMin + 0.5); int nCount = pListCtrl->GetItemCount(); for (int i = 0;i < nCount;i++) { sDN = pListCtrl->GetItemText(i, nDNCol); if (nDNMin == _ttoi(sDN) )//定位到 { CString sCol; for (int n = 0; n < pListCtrl->GetHeaderCtrl()->GetItemCount(); n++) { pListCtrl->GetHeaderCtrl()->GetItem(n, &hdItem); sVal = pListCtrl->GetItemText(i, n); sCol = szCol; sCol += _T("#"); m_xData.SetAt(sCol, _ttof(sVal)); } break; } } } #ifndef KEY_NAME #define KEY_NAME _T("NAME") #endif #ifndef KEY_MODE #define KEY_MODE _T("MODE") #endif #ifndef KEY_2DStyle #define KEY_2DStyle _T("2dStl") #endif void CGZDJDlg::OnBnClickedOk() { UpdateData(); int nSel = m_wndCombList.GetCurSel(); if (nSel != -1) { //64.jpg CString sJpg = m_arJPGFiles.GetAt(nSel); m_wndCombList.GetLBText(nSel,m_sName); CString sScrFile = sJpg; sScrFile.MakeUpper(); sScrFile.Replace(_T("JPG"), _T("pms")); CString sPNo; int nPos = sScrFile.ReverseFind(_T('.')); if (nPos != -1) { sPNo = sScrFile.Mid(0, nPos); m_xData.SetAt(_T("PAGENO"), sPNo); } CString sFolder; KTSetting::GetKTPsPath(sFolder); m_sScrFullPathFile.Format(_T("%sSupport\\Holder\\%s"), sFolder,sScrFile); } else { AfxMessageBox(_T("请选择管架类型!")); return; } if (!MakeSureDNisRight(&m_wndListHld)) { return; } if (m_bHasPipeCp && !MakeSureDNisRight(&m_wndListPCP)) { return; } FilltoXData(&m_wndListHld); if (m_bHasPipeCp) { FilltoXData(&m_wndListPCP); if (m_dDNMin > 5.0) { FilltoXData2(&m_wndListPCP); } } m_xData.SetAt(KEY_NAME, m_sName); m_xData.SetAt(KEY_MODE, m_nMode); m_xData.SetAt(KEY_2DStyle, m_n2DStyle); CDialog::OnOK(); } BOOL CGZDJDlg::GetHolderData(CString &sName,AecDbObjXDataMap &mpData, CString &sScrFullPathFile) { mpData.AppendFrom(&m_xData); sScrFullPathFile = m_sScrFullPathFile; sName = m_sName; return TRUE; } void CGZDJDlg::OnCbnSelchangeCombo1() { int nSel = m_wndCombList.GetCurSel(); if (nSel != -1) { CString sJpg = m_arJPGFiles.GetAt(nSel); CString sPath; KTSetting::GetKTPsPath(sPath); sPath += _T("Support\\Holder\\"); sPath += sJpg; ShowDataTable(sJpg); m_wndPreview.ShowJPG(sPath); m_wndPreview.Invalidate(); m_wndPreview.RedrawWindow(); } } void CGZDJDlg::ShowToListCtrl(CString& sSQL, CListCtrl * pm_wndList) { if (pm_wndList == NULL) return; pm_wndList->DeleteAllItems(); pm_wndList->GetHeaderCtrl(); while (pm_wndList->GetHeaderCtrl()->GetItemCount() > 0) { pm_wndList->GetHeaderCtrl()->DeleteItem(0); } CUIIValueTable tbl; m_db.GetSelData(sSQL, tbl); if (tbl.GetTableLogicSize() > 0) { CStringArray arFilds; tbl.GetLableRecord(arFilds); int iDN = -1; CString sDN; for (int i = 0; i < arFilds.GetSize(); i++) { sDN = arFilds.GetAt(i); if (sDN.CompareNoCase(_T("DN")) == 0) iDN = i; pm_wndList->InsertColumn(i, arFilds.GetAt(i), LVCFMT_LEFT, 100); } CStringArray arVals; for (int i = 0; i < tbl.GetTableLogicSize(); i++) { arVals.RemoveAll(); tbl.GetValueRecord(i, arVals); if (!arVals.IsEmpty()) { pm_wndList->InsertItem(i, arVals.GetAt(0)); for (int j = 1; j < arVals.GetSize(); j++) { pm_wndList->SetItemText(i, j, arVals.GetAt(j)); } } if (iDN != -1) { sDN = pm_wndList->GetItemText(i, iDN); if (_ttoi(sDN) == (int)(m_dDNOn + 0.5)) { pm_wndList->SetItemState(i, LVIS_SELECTED, LVIS_SELECTED); } } } } } void CGZDJDlg::ShowDataTable(CString& sJpg) { //64.JPG int nPos = sJpg.Find(_T('.')); if (nPos != -1) { CString sName = sJpg.Mid(0, nPos); CString sTbl; sTbl.Format(_T("P%s"), sJpg.Mid(0, nPos)); CString sSQL; sSQL.Format(_T("select * from %s"),sTbl); ShowToListCtrl(sSQL, &m_wndListHld); } } void CGZDJDlg::ShowPipeCp() { //0 保温 1 不保温 2 扁钢管卡 LPCTSTR pszPipeCp[] = { _T("C5"), _T("C6"),_T("C7")}; CString sTbl = pszPipeCp[m_nPipeCp];// ? _T("C6") : _T("C5"); CString sSQL; sSQL.Format(_T("select * from %s"), sTbl); ShowToListCtrl(sSQL, &m_wndListPCP); } void CGZDJDlg::OnBnClickedRadio1() { UpdateData(); ShowPipeCp(); } void CGZDJDlg::OnBnClickedRadio2() { UpdateData(); ShowPipeCp(); } void CGZDJDlg::OnBnClickedRadio3() { UpdateData(); ShowPipeCp(); } void CGZDJDlg::OnBnClickedCancel() { CDialog::OnCancel(); } void CGZDJDlg::OnSize(UINT nType, int cx, int cy) { if (cx < m_rcDefault.Width() || cy < m_rcDefault.Height()) return; CDialog::OnSize(nType, cx, cy); if (nType == -1) return; CRect rc; GetClientRect(&rc); int nH = 0, nW = 0; CRect rect; if (::IsWindow(m_wndListPCP.m_hWnd)) { m_wndListPCP.GetWindowRect(&rect); ScreenToClient(&rect); rect.right = rc.right - 7; m_wndListPCP.MoveWindow(rect); } if (::IsWindow(m_wndListHld.m_hWnd)) { m_wndListHld.GetWindowRect(&rect); ScreenToClient(&rect); rect.right = rc.right - 7; m_wndListHld.MoveWindow(rect); } } void CGZDJDlg::OnSizing(UINT fwSide, LPRECT pRect) { int nWidth = pRect->right - pRect->left; int nHeight = pRect->bottom - pRect->top; if (nWidth < m_rcDefault.Width()) { pRect->right = pRect->left + m_szDefault.cx; } if (nHeight < m_rcDefault.Height()) { pRect->bottom = pRect->top + m_szDefault.cy; } CDialog::OnSizing(fwSide, pRect); } void CGZDJDlg::OnNMDblclkList2(NMHDR *pNMHDR, LRESULT *pResult) { LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast(pNMHDR); *pResult = 0; } void CGZDJDlg::OnBnClickedButtonhf() { POSITION ps = m_wndListHld.GetFirstSelectedItemPosition(); if (ps != NULL) { int nItem = m_wndListHld.GetNextSelectedItem(ps); if (nItem != -1) { HDITEM hdItem; hdItem.mask = HDI_TEXT; TCHAR szCol[MAX_PATH]; hdItem.pszText = szCol; hdItem.cchTextMax = MAX_PATH; bool bHashf = false; CString sCol, sVal; for (int n = 0; n < m_wndListHld.GetHeaderCtrl()->GetItemCount(); n++) { m_wndListHld.GetHeaderCtrl()->GetItem(n, &hdItem); sVal = m_wndListHld.GetItemText(nItem, n); sCol = szCol; if (sCol.Compare(_T("hf")) == 0) { bHashf = true; CHFSetDlg hfDlg; hfDlg.SetPrompt(_T("自定义间距值 (注意是米单位)"),_T("间距值(hf):"),_T("米") ); hfDlg.m_dhf = _ttof(sVal); if (IDOK == hfDlg.DoModal()) { sVal.Format(_T("%.1f"),hfDlg.m_dhf); m_wndListHld.SetItemText(nItem, n, sVal); } break; } } if (!bHashf) { AfxMessageBox(_T("请选择参数表行,确认有间距hf字段要求!")); } } else { AfxMessageBox(_T("请选择参数表行,确认有间距hf字段要求!")); } } } void CGZDJDlg::OnBnClickedButtonhf2() { POSITION ps = m_wndListHld.GetFirstSelectedItemPosition(); if (ps != NULL) { int nItem = m_wndListHld.GetNextSelectedItem(ps); if (nItem != -1) { HDITEM hdItem; hdItem.mask = HDI_TEXT; TCHAR szCol[MAX_PATH]; hdItem.pszText = szCol; hdItem.cchTextMax = MAX_PATH; bool bHashf = false; CString sCol, sVal; for (int n = 0; n < m_wndListHld.GetHeaderCtrl()->GetItemCount(); n++) { m_wndListHld.GetHeaderCtrl()->GetItem(n, &hdItem); sVal = m_wndListHld.GetItemText(nItem, n); sCol = szCol; if (sCol.Compare(_T("H")) == 0 || sCol.Compare(_T("H_")) == 0 ) { bHashf = true; CHFSetDlg hfDlg; hfDlg.SetPrompt(_T("高度 (注意是毫米单位)"), _T("高度:"), _T("毫米")); hfDlg.m_dhf = _ttof(sVal); if (IDOK == hfDlg.DoModal()) { sVal.Format(_T("%.1f"), hfDlg.m_dhf); m_wndListHld.SetItemText(nItem, n, sVal); } break; } } if (!bHashf) { AfxMessageBox(_T("请选择参数表行,确认有高度字段要求!")); } } else { AfxMessageBox(_T("请选择参数表行,确认有高度字段要求!")); } } } void CGZDJDlg::OnBnClickedButton1() { POSITION ps = m_wndListHld.GetFirstSelectedItemPosition(); if (ps != NULL) { int nItem = m_wndListHld.GetNextSelectedItem(ps); if (nItem != -1) { HDITEM hdItem; hdItem.mask = HDI_TEXT; TCHAR szCol[MAX_PATH]; hdItem.pszText = szCol; hdItem.cchTextMax = MAX_PATH; bool bHashf = false; CString sCol, sVal; for (int n = 0; n < m_wndListHld.GetHeaderCtrl()->GetItemCount(); n++) { m_wndListHld.GetHeaderCtrl()->GetItem(n, &hdItem); sVal = m_wndListHld.GetItemText(nItem, n); sCol = szCol; if (sCol.Compare(_T("L")) == 0) { bHashf = true; CHFSetDlg hfDlg; hfDlg.SetPrompt(_T("L尺寸 (注意是毫米单位)"), _T("高度:"), _T("毫米")); hfDlg.m_dhf = _ttof(sVal); if (IDOK == hfDlg.DoModal()) { sVal.Format(_T("%.1f"), hfDlg.m_dhf); m_wndListHld.SetItemText(nItem, n, sVal); } break; } } if (!bHashf) { AfxMessageBox(_T("请选择参数表行,确认有L尺寸字段要求!")); } } else { AfxMessageBox(_T("请选择参数表行,确认有L尺寸字段要求!")); } } } void CGZDJDlg::OnBnClickedButton2() { POSITION ps = m_wndListHld.GetFirstSelectedItemPosition(); if (ps != NULL) { int nItem = m_wndListHld.GetNextSelectedItem(ps); if (nItem != -1) { HDITEM hdItem; hdItem.mask = HDI_TEXT; TCHAR szCol[MAX_PATH]; hdItem.pszText = szCol; hdItem.cchTextMax = MAX_PATH; bool bHashf = false; CString sCol, sVal; for (int n = 0; n < m_wndListHld.GetHeaderCtrl()->GetItemCount(); n++) { m_wndListHld.GetHeaderCtrl()->GetItem(n, &hdItem); sVal = m_wndListHld.GetItemText(nItem, n); sCol = szCol; if (sCol.Compare(_T("L2")) == 0) { bHashf = true; CHFSetDlg hfDlg; hfDlg.SetPrompt(_T("L2尺寸 (注意是毫米单位)"), _T("高度:"), _T("毫米")); hfDlg.m_dhf = _ttof(sVal); if (IDOK == hfDlg.DoModal()) { sVal.Format(_T("%.1f"), hfDlg.m_dhf); m_wndListHld.SetItemText(nItem, n, sVal); } break; } } if (!bHashf) { AfxMessageBox(_T("请选择参数表行,确认有L2尺寸字段要求!")); } } else { AfxMessageBox(_T("请选择参数表行,确认有L2尺寸字段要求!")); } } }