Files
envi-code/SourceCode/Code2026/EarthWormCmd/CXLFSDlg.cpp
T
2026-09-28 15:28:50 +08:00

151 lines
7.7 KiB
C++

#include "stdafx.h"
#include "CXLFSDlg.h"
#include "resource.h"
#include "UITools.h"
#include "XSXLDlg.h"
namespace
{
DWORD colorIdx2RGB(int &clr)
{
AcCmColor color;
color.setColorIndex(clr);
return RGB(color.red(), color.green(), color.blue());
}
}
IMPLEMENT_DYNAMIC(CXLFSDlg, CDialog)
CXLFSDlg::CXLFSDlg(PIPECABLE::Cabling &cabling, LPCTSTR pszTitle, CWnd* pParent)
: CDialog(IDD_XLFS_DLG, pParent)
, m_cabling(cabling)
, m_sTitle(pszTitle)
{
m_cabling.sort();
}
CXLFSDlg::~CXLFSDlg()
{
}
void CXLFSDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_LIST1, m_ctrlList);
}
BOOL CXLFSDlg::OnInitDialog()
{
CDialog::OnInitDialog();
initList();
refreshList();
SetWindowText(m_sTitle);
return TRUE;
}
void CXLFSDlg::initList()
{
m_ctrlList.SetExtendedStyle(LVS_EX_FULLROWSELECT);
m_ctrlList.InsertColumn(0, _T("位置(层)"), LVCFMT_CENTER, 60);
m_ctrlList.InsertColumn(1, _T("数目(条)"), LVCFMT_CENTER, 60);
m_ctrlList.InsertColumn(2, _T("间距(毫米)"), LVCFMT_CENTER, 80);
m_ctrlList.InsertColumn(3, _T("外径(毫米)"), LVCFMT_CENTER, 80);
m_ctrlList.InsertColumn(4, _T("曲率半径(毫米)"), LVCFMT_CENTER, 100);
m_ctrlList.InsertColumn(5, _T("颜色"), LVCFMT_CENTER, 40);
m_ctrlList.InsertColumn(6, _T("线型"), LVCFMT_CENTER, 100);
m_ctrlList.InsertColumn(7, _T("型号"), LVCFMT_CENTER, 150);
m_ctrlList.InsertColumn(8, _T("厂家"), LVCFMT_CENTER, 150);
}
void CXLFSDlg::refreshList()
{
m_ctrlList.DeleteAllItems();
int nRow(0), prec(1);
for (size_t i = 0; i < m_cabling.m_cables.size(); ++i)
{
PIPECABLE::SubCabling &sc(m_cabling.m_cables[i]);
nRow = m_ctrlList.InsertItem(0, TypeConvert::i2s(sc.m_nFloor));
m_ctrlList.SetItemText(nRow, 1, sc.m_bValid ? (LPCTSTR)TypeConvert::i2s(sc.m_nCount) : _T("---"));
m_ctrlList.SetItemText(nRow, 2, sc.m_bValid ? (LPCTSTR)TypeConvert::f2s(sc.m_dSpace, &prec) : _T("---"));
m_ctrlList.SetItemText(nRow, 3, sc.m_bValid ? (LPCTSTR)TypeConvert::f2s(sc.m_dD, &prec) : _T("---"));
m_ctrlList.SetItemText(nRow, 4, sc.m_bValid ? (LPCTSTR)TypeConvert::f2s(sc.m_dDn, &prec) : _T("---"));
m_ctrlList.SetItemText(nRow, 5, sc.m_bValid ? (LPCTSTR)TypeConvert::i2s(sc.m_nClr) : _T("---"));
m_ctrlList.SetItemText(nRow, 6, sc.m_bValid ? (LPCTSTR)sc.m_linetype : _T("---"));
m_ctrlList.SetItemText(nRow, 7, sc.m_bValid ? (LPCTSTR)sc.m_sModel : _T("---"));
m_ctrlList.SetItemText(nRow, 8, sc.m_bValid ? (LPCTSTR)sc.m_sFactory : _T("---"));
m_ctrlList.SetItemData(nRow, (DWORD_PTR)&sc);
}
}
BEGIN_MESSAGE_MAP(CXLFSDlg, CDialog)
ON_BN_CLICKED(IDC_BUTTON1, &CXLFSDlg::OnBnClickedModify)
ON_BN_CLICKED(IDC_BUTTON2, &CXLFSDlg::OnBnClickedDelete)
ON_BN_CLICKED(IDOK, &CXLFSDlg::OnBnClickedOk)
ON_NOTIFY(NM_DBLCLK, IDC_LIST1, &CXLFSDlg::OnNMDblclkList1)
END_MESSAGE_MAP()
void CXLFSDlg::OnBnClickedModify()
{
int nRow = m_ctrlList.GetSelectionMark();
if (nRow == -1)
{
AfxMessageBox(_T("请选择一行数据。"));
return;
}
if (nRow >= m_cabling.m_cables.size()) return;
PIPECABLE::SubCabling &sc(*(PIPECABLE::SubCabling*)m_ctrlList.GetItemData(nRow));
CXSXLDlg dlg;
if (sc.m_bValid) // 如果有效,则取出所有数据
dlg.m_data = sc;
else // 如无效,则只要层号
dlg.m_data.m_nFloor = sc.m_nFloor;
if (dlg.DoModal() != IDOK) return;
sc = dlg.m_data;
refreshList();
}
void CXLFSDlg::OnBnClickedDelete()
{
int nRow = m_ctrlList.GetSelectionMark();
if (nRow == -1)
{
AfxMessageBox(_T("请选择一行数据。"));
return;
}
if (nRow >= m_cabling.m_cables.size()) return;
PIPECABLE::SubCabling &sc(*(PIPECABLE::SubCabling*)m_ctrlList.GetItemData(nRow));
sc.m_bValid = false;
refreshList();
}
void CXLFSDlg::OnBnClickedOk()
{
CDialog::OnOK();
}
void CXLFSDlg::OnNMDblclkList1(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
*pResult = 0;
OnBnClickedModify();
}