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

712 lines
15 KiB
C++

#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<LPNMITEMACTIVATE>(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尺寸字段要求!"));
}
}
}