345 lines
7.1 KiB
C++
345 lines
7.1 KiB
C++
#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<CString> 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);
|
|
} |