#include "stdafx.h" #include "CQCBDDlg.h" #include "CoreTools.h" IMPLEMENT_DYNAMIC(CQCBDDlg, CDialog) CQCBDDlg::CQCBDDlg(CWnd* pParent /*=NULL*/) : CDialog(IDD_QCBD_DLG, pParent) , m_sXlsFile(_T("")) , m_sWorkSheet(_T("0003-动力电缆管线表")) , m_nRowFrom(9) , m_nRowTo(415) , m_sColTo1(_T("")) , m_sColTo2(_T("")) , m_sColTo(_T("")) , m_nTitleRow(7) { } CQCBDDlg::~CQCBDDlg() { } void CQCBDDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Text(pDX, IDC_EDIT1, m_sXlsFile); DDX_Text(pDX, IDC_EDIT3, m_sWorkSheet); DDX_Text(pDX, IDC_EDIT4, m_nTitleRow); DDX_Text(pDX, IDC_EDIT5, m_nRowTo); DDX_Text(pDX, IDC_EDIT6, m_nRowFrom); DDX_CBString(pDX, IDC_COMBO6, m_sColTo1); DDX_CBString(pDX, IDC_COMBO7, m_sColTo2); DDX_Text(pDX, IDC_EDIT2, m_sColTo); DDX_Control(pDX, IDC_LIST1, m_wndList); } BEGIN_MESSAGE_MAP(CQCBDDlg, CDialog) ON_BN_CLICKED(IDOK, &CQCBDDlg::OnBnClickedOk) ON_BN_CLICKED(IDC_BUTTON1, &CQCBDDlg::OnBnClickedButton1) ON_CBN_SELENDOK(IDC_COMBO7, &CQCBDDlg::OnCbnSelendokCombo7) ON_CBN_SELENDOK(IDC_COMBO6, &CQCBDDlg::OnCbnSelendokCombo6) ON_BN_CLICKED(IDC_BUTTON2, &CQCBDDlg::OnBnClickedButton2) ON_BN_CLICKED(IDC_BUTTON3, &CQCBDDlg::OnBnClickedButton3) ON_BN_CLICKED(IDC_BUTTON5, &CQCBDDlg::OnBnClickedButton5) ON_BN_CLICKED(IDC_BUTTON7, &CQCBDDlg::OnBnClickedButton7) END_MESSAGE_MAP() BOOL CQCBDDlg::OnInitDialog() { CDialog::OnInitDialog(); m_wndList.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT | LVS_EX_SINGLEROW); // 数据库 CString path = FilePath::GetSysDir() + _T("\\PoolStandard.db"); if (!m_dB.InitADOServer(path)) { AfxMessageBox(_T("数据库初始化失败,请检查sys\\PoolStandard.db是否存在!")); return FALSE; } UpdateData(FALSE); return TRUE; } void CQCBDDlg::OnBnClickedOk() { UpdateData(); if (m_sXlsFile.IsEmpty()) { AfxMessageBox(_T("请选择电缆敷设表文件!")); return; } if (m_nRowFrom >= m_nRowTo) { AfxMessageBox(_T("请检查起始行终止行设置!")); return; } int nCount = m_wndList.GetHeaderCtrl()->GetItemCount(); TCHAR szTxt[33]; HDITEM hdItem; hdItem.mask = HDI_TEXT; hdItem.pszText = szTxt; hdItem.cchTextMax = 33; for (int i = 0; i < nCount; i++) { m_wndList.GetHeaderCtrl()->GetItem(i, &hdItem); m_arCols.Add(szTxt); } SaveSetting(); CDialog::OnOK(); } int CQCBDDlg::GetCols(CStringArray &arCols) const { arCols.Append(m_arCols); return arCols.GetCount(); } void CQCBDDlg::OnBnClickedButton1() { UpdateData(); const TCHAR *pszFilter = _T("Excel 文件 (*.xls;)|*.xls|"); CFileDialog dlg(TRUE, _T("dwg"), NULL, OFN_HIDEREADONLY, pszFilter, NULL); TCHAR strFileName[MAX_PATH] = _T(""); TCHAR strFileTitle[] = _T("选择电缆清册xls文件"); int maxChar = MAX_PATH; dlg.m_ofn.lpstrFile = strFileName; dlg.m_ofn.nMaxFile = maxChar; dlg.m_ofn.lpstrTitle = strFileTitle; if (dlg.DoModal() != IDOK) { return; } m_sXlsFile = dlg.GetPathName(); ReadSetting(); UpdateData(FALSE); } void CQCBDDlg::OnCbnSelendokCombo7() { UpdateData(); m_sColTo = m_sColTo1 + m_sColTo2; UpdateData(FALSE); } void CQCBDDlg::OnCbnSelendokCombo6() { UpdateData(); m_sColTo2 = _T(""); m_sColTo = m_sColTo1 + m_sColTo2; UpdateData(FALSE); } void CQCBDDlg::OnBnClickedButton2() { UpdateData(); int nCount = m_wndList.GetHeaderCtrl()->GetItemCount(); TCHAR szTxt[33]; HDITEM hdItem; hdItem.mask = HDI_TEXT; hdItem.pszText = szTxt; hdItem.cchTextMax = 33; CStringList lstCols; for (int i = 0; i < nCount; i++) { m_wndList.GetHeaderCtrl()->GetItem(i, &hdItem); lstCols.AddTail(szTxt); } if (lstCols.Find(m_sColTo) != NULL) { CString sTip; sTip.Format(_T("列 %s 已经存在!"),m_sColTo); AfxMessageBox(sTip); return; } if (!m_sColTo.IsEmpty()) { m_wndList.InsertColumn(nCount, m_sColTo, LVCFMT_LEFT, 40, 40); if (nCount == 0) { m_wndList.InsertItem(0, _T(" ")); } else { m_wndList.SetItemText(0, nCount, _T(" ")); } } } void CQCBDDlg::OnBnClickedButton3() { int nCount = m_wndList.GetHeaderCtrl()->GetItemCount(); TCHAR szTxt[33]; HDITEM hdItem; hdItem.mask = HDI_TEXT; hdItem.pszText = szTxt; hdItem.cchTextMax = 33; for (int i = 0;i < nCount;i++) { m_wndList.GetHeaderCtrl()->GetItem(i, &hdItem); if (m_sColTo.CompareNoCase(szTxt) == 0) { m_wndList.GetHeaderCtrl()->DeleteItem(i); break; } } } void CQCBDDlg::OnBnClickedButton5() { UpdateData(); int nCount = m_wndList.GetHeaderCtrl()->GetItemCount(); TCHAR szTxt[33],szTmp[33]; HDITEM hdItem; hdItem.mask = HDI_TEXT; hdItem.pszText = szTxt; hdItem.cchTextMax = 33; for (int i = 0; i < nCount; i++) { m_wndList.GetHeaderCtrl()->GetItem(i, &hdItem); if (m_sColTo.CompareNoCase(szTxt) == 0) { if (i > 0) { m_wndList.GetHeaderCtrl()->GetItem(i-1, &hdItem); _tcscpy(szTmp, szTxt); _tcscpy(szTxt, m_sColTo); m_wndList.GetHeaderCtrl()->SetItem(i - 1, &hdItem); _tcscpy(szTxt,szTmp); m_wndList.GetHeaderCtrl()->SetItem(i, &hdItem); break; } } } } void CQCBDDlg::OnBnClickedButton7() { UpdateData(); int nCount = m_wndList.GetHeaderCtrl()->GetItemCount(); TCHAR szTxt[33], szTmp[33]; HDITEM hdItem; hdItem.mask = HDI_TEXT; hdItem.pszText = szTxt; hdItem.cchTextMax = 33; for (int i = 0; i < nCount; i++) { m_wndList.GetHeaderCtrl()->GetItem(i, &hdItem); if (m_sColTo.CompareNoCase(szTxt) == 0) { if (i < nCount - 1) { m_wndList.GetHeaderCtrl()->GetItem(i + 1, &hdItem); _tcscpy(szTmp, szTxt); _tcscpy(szTxt, m_sColTo); m_wndList.GetHeaderCtrl()->SetItem(i + 1, &hdItem); _tcscpy(szTxt, szTmp); m_wndList.GetHeaderCtrl()->SetItem(i, &hdItem); break; } } } } void CQCBDDlg::ReadSetting() { //保存如下 /* CString m_sXlsFile; CString m_sWorkSheet; int m_nTitleRow; int m_nRowFrom; int m_nRowTo; CStringArray m_arCols; */ CString sSQL, sCols; sSQL.Format(_T("select xlsFile,workSheet,titleRow,rowFrom,rowTo,cols from QCBDDlg where xlsFile='%s'"), m_sXlsFile); CStringArray arCols; m_dB.GetSelData(sSQL, arCols); if (arCols.GetSize() == 6) { m_sWorkSheet = arCols.GetAt(1); m_nTitleRow = _ttoi(arCols.GetAt(2)); m_nRowFrom = _ttoi(arCols.GetAt(3)); m_nRowTo = _ttoi(arCols.GetAt(4)); sCols = arCols.GetAt(5); std::vector arCols2; CoreTools::SplitStrintToArray(sCols, arCols2, _T(';')); while(m_wndList.GetHeaderCtrl()->GetItemCount() > 0 ) { m_wndList.GetHeaderCtrl()->DeleteItem(0); } for (int i = 0;i < arCols2.size();i++) { m_wndList.InsertColumn(i, arCols2.at(i), LVCFMT_LEFT, 40, 40); } } } void CQCBDDlg::SaveSetting() { CString sSQL,sCols; sSQL.Format(_T("delete from QCBDDlg where xlsFile='%s'"),m_sXlsFile); m_dB.ExecuteSQL(sSQL); int nCount = m_wndList.GetHeaderCtrl()->GetItemCount(); TCHAR szTxt[33]; HDITEM hdItem; hdItem.mask = HDI_TEXT; hdItem.pszText = szTxt; hdItem.cchTextMax = 33; for (int i = 0; i < nCount; i++) { m_wndList.GetHeaderCtrl()->GetItem(i, &hdItem); sCols += szTxt; sCols += _T(";"); } sCols.TrimRight(_T(';')); sSQL.Format(_T("insert into QCBDDlg (xlsFile,workSheet,titleRow,rowFrom,rowTo,cols) \ values ('%s','%s',%d,%d,%d,'%s')"),m_sXlsFile,m_sWorkSheet,m_nTitleRow,m_nRowFrom,m_nRowTo,sCols); m_dB.ExecuteSQL(sSQL); }