Files
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

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