589 lines
29 KiB
C++
589 lines
29 KiB
C++
#include "stdafx.h"
|
|
#include "resource.h"
|
|
#include "CGLFJDlg.h"
|
|
#include "uitools.h"
|
|
#include "TJDJDlg.h"
|
|
#include "TJZJDlg.h"
|
|
#include "cxlfsdlg.h"
|
|
|
|
namespace
|
|
{
|
|
// 很多截面的附件通过索引号进行删除
|
|
// ,但是m_mapAddtion中的key还包含了其它内容
|
|
// ,所以需要解析出key中的索引才可以进行添加和删除
|
|
// 注意,下面三个函数,只处理索引在附件类型前面的情况(例:x-x-x-idx-type)
|
|
|
|
bool hasAddin(const int &idx, LPCTSTR addinType, const CMapStringToString &mapAddtion)
|
|
{
|
|
CString sK(_T("")), sV(_T("")), sTrait(_T(""));
|
|
sTrait.Format(_T("%d-%s"), idx, addinType);
|
|
int nRes(-1);
|
|
POSITION pos = mapAddtion.GetStartPosition();
|
|
while (pos)
|
|
{
|
|
mapAddtion.GetNextAssoc(pos, sK, sV);
|
|
// 分析sK,看是否存在 索引-类型 的情况
|
|
nRes = sK.Find(sTrait);
|
|
if (nRes != -1)
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
void removeAddin(const int &idx, LPCTSTR addinType, CMapStringToString &mapAddtion)
|
|
{
|
|
std::vector<CString> delKeys(0);
|
|
CString sK(_T("")), sV(_T("")), sTrait(_T(""));
|
|
sTrait.Format(_T("%d-%s"), idx, addinType);
|
|
int nRes(-1);
|
|
POSITION pos = mapAddtion.GetStartPosition();
|
|
while (pos)
|
|
{
|
|
mapAddtion.GetNextAssoc(pos, sK, sV);
|
|
// 分析sK,看是否存在 索引-类型 的情况
|
|
nRes = sK.Find(sTrait);
|
|
if (nRes != -1)
|
|
delKeys.push_back(sK);
|
|
}
|
|
|
|
for (size_t i = 0; i < delKeys.size(); ++i)
|
|
mapAddtion.RemoveKey(delKeys[i]);
|
|
|
|
}
|
|
|
|
CString getMapKey(const PIPECABLE::HOLDER &holder)
|
|
{
|
|
CString sKey(_T(""));
|
|
sKey.Format(_T("%d-%d-%d-%s"), holder.m_nRoomIdx, holder.m_nPos, holder.m_nNo, PIPECABLE::HOLDER::flag());
|
|
return sKey;
|
|
}
|
|
|
|
CString getMapKey(const PIPECABLE::HANGER &hanger)
|
|
{
|
|
CString sKey(_T(""));
|
|
sKey.Format(_T("%d-%d-%d-%s"), hanger.m_nRoomIdx, 0, hanger.m_nNo, PIPECABLE::HANGER::flag());
|
|
return sKey;
|
|
}
|
|
|
|
CString getMapKey(const PIPECABLE::BOSS &boss)
|
|
{
|
|
CString sKey(_T(""));
|
|
sKey.Format(_T("%d-%s-%s"), boss.m_nRoomIdx, boss.m_nNo, PIPECABLE::BOSS::flag());
|
|
return sKey;
|
|
}
|
|
}
|
|
|
|
IMPLEMENT_DYNAMIC(CGLFJDlg, CDialog)
|
|
|
|
CGLFJDlg::CGLFJDlg(const PIPECABLE::ETYPE &type
|
|
, int nRoom
|
|
, LPCTSTR pszScript
|
|
, LPCTSTR pszOffset
|
|
, CMapStringToString &mpAddin
|
|
, CStringArray &rooms
|
|
, CWnd* pParent)
|
|
: CDialog(IDD_GLFJ_DLG, pParent)
|
|
, m_dlgType(type)
|
|
, m_Script(pszScript)
|
|
, m_Addin(mpAddin)
|
|
, m_nRoom(nRoom)
|
|
, m_sOffset(pszOffset)
|
|
{
|
|
m_rooms.Append(rooms);
|
|
}
|
|
|
|
CGLFJDlg::~CGLFJDlg() { }
|
|
|
|
void CGLFJDlg::initUI()
|
|
{
|
|
switch (m_dlgType)
|
|
{
|
|
case PIPECABLE::eHOLDER:
|
|
SetWindowText(_T("管廊支架管理"));
|
|
m_btnCabling.SetWindowText(_T("布线"));
|
|
break;
|
|
case PIPECABLE::eHANGER:
|
|
SetWindowText(_T("管廊吊架管理"));
|
|
m_btnCabling.SetWindowText(_T("布线"));
|
|
break;
|
|
case PIPECABLE::eBOSS:
|
|
SetWindowText(_T("管廊管位管理"));
|
|
m_btnCabling.SetWindowText(_T("布管"));
|
|
break;
|
|
case PIPECABLE::eNone:
|
|
SetWindowText(_T("!!ERROR!!"));
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
initList();
|
|
}
|
|
|
|
void CGLFJDlg::initList()
|
|
{
|
|
m_ctrlList.SetExtendedStyle(LVS_EX_FULLROWSELECT);
|
|
m_ctrlList.InsertColumn(0, _T("编号"), LVCFMT_CENTER, 40);
|
|
m_ctrlList.InsertColumn(1, _T("舱室"), LVCFMT_CENTER, 80);
|
|
m_ctrlList.InsertColumn(2, _T("敷设"), LVCFMT_CENTER, 40);
|
|
|
|
switch (m_dlgType)
|
|
{
|
|
case PIPECABLE::eHOLDER:
|
|
m_ctrlList.InsertColumn(3, _T("位置"), LVCFMT_CENTER, 40);
|
|
m_ctrlList.InsertColumn(4, _T("行数"), LVCFMT_CENTER, 40);
|
|
m_ctrlList.InsertColumn(5, _T("用途"), LVCFMT_CENTER, 80);
|
|
m_ctrlList.InsertColumn(6, _T("材质"), LVCFMT_CENTER, 80);
|
|
break;
|
|
case PIPECABLE::eHANGER:
|
|
m_ctrlList.InsertColumn(3, _T("行数"), LVCFMT_CENTER, 40);
|
|
m_ctrlList.InsertColumn(4, _T("用途"), LVCFMT_CENTER, 80);
|
|
m_ctrlList.InsertColumn(5, _T("材质"), LVCFMT_CENTER, 80);
|
|
break;
|
|
case PIPECABLE::eBOSS:
|
|
m_ctrlList.InsertColumn(3, _T("类型"), LVCFMT_CENTER, 60);
|
|
m_ctrlList.InsertColumn(4, _T("用途"), LVCFMT_CENTER, 80);
|
|
m_ctrlList.InsertColumn(5, _T("材质"), LVCFMT_CENTER, 80);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
refreshListByString();
|
|
}
|
|
|
|
void CGLFJDlg::refreshListByString()
|
|
{
|
|
m_ctrlList.DeleteAllItems();
|
|
|
|
m_holders.clear();
|
|
m_hangers.clear();
|
|
m_bosses.clear();
|
|
|
|
std::vector<CString> items(0);
|
|
switch (m_dlgType)
|
|
{
|
|
case PIPECABLE::eHOLDER:
|
|
{
|
|
PIPECABLE::HOLDER holder;
|
|
if (!PIPECABLE::analyEwAddin(m_Script, m_holders)) break;
|
|
for (PIPECABLE::HolderSet::iterator it = m_holders.begin(); it != m_holders.end(); it++)
|
|
insert2List(*it);
|
|
|
|
break;
|
|
}
|
|
case PIPECABLE::eHANGER:
|
|
{
|
|
PIPECABLE::HANGER hanger;
|
|
if (!PIPECABLE::analyEwAddin(m_Script, m_hangers)) break;
|
|
for (PIPECABLE::HangerSet::iterator it = m_hangers.begin(); it != m_hangers.end(); it++)
|
|
insert2List(*it);
|
|
|
|
break;
|
|
}
|
|
case PIPECABLE::eBOSS:
|
|
{
|
|
PIPECABLE::BOSS boss;
|
|
if (!PIPECABLE::analyEwAddin<PIPECABLE::BOSS>(m_Script, m_bosses)) break;
|
|
for (PIPECABLE::BossSet::iterator it = m_bosses.begin(); it != m_bosses.end(); it++)
|
|
insert2List(*it);
|
|
|
|
break;
|
|
}
|
|
default: break;
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
void CGLFJDlg::refreshListByData()
|
|
{
|
|
m_ctrlList.DeleteAllItems();
|
|
|
|
switch (m_dlgType)
|
|
{
|
|
case PIPECABLE::eHOLDER:
|
|
for (PIPECABLE::HolderSet::iterator it = m_holders.begin(); it != m_holders.end(); ++it)
|
|
insert2List(*it);
|
|
break;
|
|
case PIPECABLE::eHANGER:
|
|
for (PIPECABLE::HangerSet::iterator it = m_hangers.begin(); it != m_hangers.end(); ++it)
|
|
insert2List(*it);
|
|
break;
|
|
case PIPECABLE::eBOSS:
|
|
for (PIPECABLE::BossSet::iterator it = m_bosses.begin(); it != m_bosses.end(); ++it)
|
|
insert2List(*it);
|
|
break;
|
|
default: break;
|
|
}
|
|
return;
|
|
}
|
|
|
|
void CGLFJDlg::insert2List(const PIPECABLE::HOLDER & holder)
|
|
{
|
|
int nRow = m_ctrlList.InsertItem(0, TypeConvert::i2s(holder.m_nNo));
|
|
m_ctrlList.SetItemText(nRow, 1, holder.m_nRoomIdx < m_rooms.GetSize() ? (LPCTSTR)m_rooms[holder.m_nRoomIdx] : _T("ERROR"));
|
|
m_ctrlList.SetItemText(nRow, 2, holder.m_cabling.hasCabling() ? _T("是") : _T("否"));
|
|
m_ctrlList.SetItemText(nRow, 3, holder.m_nPos == 0 ? _T("左") : _T("右"));
|
|
m_ctrlList.SetItemText(nRow, 4, TypeConvert::i2s(holder.m_nRow));
|
|
m_ctrlList.SetItemText(nRow, 5, holder.m_sSpec);
|
|
m_ctrlList.SetItemText(nRow, 6, holder.m_sMaterial);
|
|
}
|
|
|
|
void CGLFJDlg::insert2List(const PIPECABLE::HANGER & hanger)
|
|
{
|
|
int nRow = m_ctrlList.InsertItem(0, TypeConvert::i2s(hanger.m_nNo));
|
|
m_ctrlList.SetItemText(nRow, 1, hanger.m_nRoomIdx < m_rooms.GetSize() ? (LPCTSTR)m_rooms[hanger.m_nRoomIdx] : _T("ERROR"));
|
|
m_ctrlList.SetItemText(nRow, 2, hanger.m_cabling.hasCabling() ? _T("是") : _T("否"));
|
|
m_ctrlList.SetItemText(nRow, 3, TypeConvert::i2s(hanger.m_nRow));
|
|
m_ctrlList.SetItemText(nRow, 4, hanger.m_sSpec);
|
|
m_ctrlList.SetItemText(nRow, 5, hanger.m_sMaterial);
|
|
}
|
|
|
|
void CGLFJDlg::insert2List(const PIPECABLE::BOSS & boss)
|
|
{
|
|
int nRow = m_ctrlList.InsertItem(0, TypeConvert::i2s(boss.m_nNo));
|
|
m_ctrlList.SetItemText(nRow, 1, boss.m_nRoomIdx < m_rooms.GetSize() ? (LPCTSTR)m_rooms[boss.m_nRoomIdx] : _T("ERROR"));
|
|
m_ctrlList.SetItemText(nRow, 2, /*boss.m_cabling.m_bValid ? _T("是") :*/ _T("否"));
|
|
m_ctrlList.SetItemText(nRow, 3, boss.m_nKind == 0 ? _T("水泥支墩") : _T("角钢支架"));
|
|
m_ctrlList.SetItemText(nRow, 4, boss.m_sSpec);
|
|
m_ctrlList.SetItemText(nRow, 5, boss.m_sMertial);
|
|
}
|
|
|
|
void CGLFJDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
DDX_Control(pDX, IDC_BUTTON4, m_btnCabling);
|
|
DDX_Control(pDX, IDC_LIST1, m_ctrlList);
|
|
}
|
|
|
|
BOOL CGLFJDlg::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
initUI();
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
BEGIN_MESSAGE_MAP(CGLFJDlg, CDialog)
|
|
ON_BN_CLICKED(IDC_BUTTON1, &CGLFJDlg::OnBnClickedADD)
|
|
ON_BN_CLICKED(IDC_BUTTON2, &CGLFJDlg::OnBnClickedModify)
|
|
ON_BN_CLICKED(IDC_BUTTON3, &CGLFJDlg::OnBnClickedDelete)
|
|
ON_BN_CLICKED(IDC_BUTTON4, &CGLFJDlg::OnBnClickedCabling)
|
|
ON_NOTIFY(NM_DBLCLK, IDC_LIST1, &CGLFJDlg::OnNMDblclkList1)
|
|
END_MESSAGE_MAP()
|
|
|
|
void CGLFJDlg::OnBnClickedADD()
|
|
{
|
|
switch (m_dlgType)
|
|
{
|
|
case PIPECABLE::eHOLDER:
|
|
{
|
|
CTJZJDlg dlg;
|
|
dlg.m_data.m_nNo = 1;
|
|
if (!m_holders.empty())
|
|
dlg.m_data.m_nNo = m_holders.rbegin()->m_nNo + 1;
|
|
|
|
if (dlg.DoModal() != IDOK) break;
|
|
|
|
PIPECABLE::HOLDER holder(dlg.m_data);
|
|
holder.m_nRoomIdx = m_nRoom;
|
|
holder.m_sOffset = m_sOffset;
|
|
|
|
CString sKey(getMapKey(holder));
|
|
|
|
// 如果存在,先删除
|
|
if (hasAddin(holder.m_nNo, PIPECABLE::HOLDER::flag(), m_Addin))
|
|
m_Addin.RemoveKey(sKey);
|
|
m_Addin.SetAt(sKey, holder.toString(m_nRoom, m_sOffset));
|
|
|
|
m_holders.insert(holder);
|
|
insert2List(holder);
|
|
|
|
break;
|
|
}
|
|
case PIPECABLE::eHANGER:
|
|
{
|
|
CTJDJDlg dlg;
|
|
dlg.m_data.m_nNo = 1;
|
|
if (!m_hangers.empty())
|
|
dlg.m_data.m_nNo = m_hangers.rbegin()->m_nNo + 1;
|
|
|
|
if (dlg.DoModal() != IDOK) break;
|
|
|
|
PIPECABLE::HANGER hanger(dlg.m_data);
|
|
hanger.m_nRoomIdx = m_nRoom;
|
|
hanger.m_sOffset = m_sOffset;
|
|
|
|
CString sKey(getMapKey(hanger));
|
|
|
|
// 如果存在,先删除
|
|
if (hasAddin(hanger.m_nNo, PIPECABLE::HANGER::flag(), m_Addin))
|
|
m_Addin.RemoveKey(sKey);
|
|
m_Addin.SetAt(sKey, hanger.toString(m_nRoom, m_sOffset));
|
|
|
|
m_hangers.insert(hanger);
|
|
insert2List(hanger);
|
|
|
|
break;
|
|
}
|
|
case PIPECABLE::eBOSS:
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void CGLFJDlg::OnBnClickedModify()
|
|
{
|
|
int nRow = m_ctrlList.GetSelectionMark();
|
|
if (nRow == -1)
|
|
{
|
|
AfxMessageBox(_T("请选择一行数据。"));
|
|
return;
|
|
}
|
|
|
|
CString sKey(_T(""))
|
|
, sNo(m_ctrlList.GetItemText(nRow, 0));
|
|
|
|
int nNo(TypeConvert::s2i(sNo));
|
|
|
|
switch (m_dlgType)
|
|
{
|
|
case PIPECABLE::eHOLDER:
|
|
{
|
|
if (nRow >= m_holders.size()) break;
|
|
|
|
PIPECABLE::HolderSet::iterator it(PIPECABLE::findItem(nNo, m_holders));
|
|
if (it == m_holders.end()) break;
|
|
|
|
PIPECABLE::HOLDER &holder(const_cast<PIPECABLE::HOLDER&>(*it));
|
|
|
|
if (!hasAddin(holder.m_nNo, PIPECABLE::HOLDER::flag(), m_Addin)) break;
|
|
|
|
|
|
CTJZJDlg dlg;
|
|
dlg.m_data = holder;
|
|
dlg.m_nOldRow = holder.m_nRow;
|
|
dlg.m_bModify = true;
|
|
if (dlg.DoModal() != IDOK) break;
|
|
|
|
// 先把key取出
|
|
sKey = getMapKey(holder);
|
|
|
|
holder = dlg.m_data;
|
|
|
|
if (m_Addin.RemoveKey(sKey))
|
|
m_Addin.SetAt(sKey, holder.toString(holder.m_nRoomIdx, holder.m_sOffset));
|
|
|
|
break;
|
|
}
|
|
case PIPECABLE::eHANGER:
|
|
{
|
|
if (nRow >= m_hangers.size()) break;
|
|
|
|
PIPECABLE::HangerSet::iterator it(PIPECABLE::findItem(nNo, m_hangers));
|
|
if (it == m_hangers.end()) break;
|
|
|
|
PIPECABLE::HANGER &hanger(const_cast<PIPECABLE::HANGER&>(*it));
|
|
|
|
if (!hasAddin(hanger.m_nNo, PIPECABLE::HANGER::flag(), m_Addin)) break;
|
|
|
|
|
|
CTJDJDlg dlg;
|
|
dlg.m_data = hanger;
|
|
dlg.m_nOldRow = hanger.m_nRow;
|
|
dlg.m_bModify = true;
|
|
|
|
if (dlg.DoModal() != IDOK) break;
|
|
|
|
|
|
hanger = dlg.m_data;
|
|
|
|
sKey = getMapKey(hanger);
|
|
if (m_Addin.RemoveKey(sKey))
|
|
m_Addin.SetAt(sKey, hanger.toString(hanger.m_nRoomIdx, hanger.m_sOffset));
|
|
|
|
break;
|
|
}
|
|
case PIPECABLE::eBOSS:
|
|
{
|
|
if (nRow >= m_bosses.size()) break;
|
|
|
|
PIPECABLE::BossSet::iterator it(PIPECABLE::findItem(nNo, m_bosses));
|
|
if (it == m_bosses.end()) break;
|
|
|
|
PIPECABLE::BOSS &boss(const_cast<PIPECABLE::BOSS&>(*it));
|
|
|
|
if (!hasAddin(boss.m_nNo, PIPECABLE::BOSS::flag(), m_Addin)) break;
|
|
break;
|
|
}
|
|
default:
|
|
break;
|
|
}
|
|
|
|
refreshListByData();
|
|
|
|
return;
|
|
}
|
|
|
|
void CGLFJDlg::OnBnClickedDelete()
|
|
{
|
|
if (AfxMessageBox(_T("确定要删除?此操作不可回复!"), MB_YESNO) != IDYES) return;
|
|
|
|
int nRow = m_ctrlList.GetSelectionMark();
|
|
if (nRow == -1)
|
|
{
|
|
AfxMessageBox(_T("请选择一行数据。"));
|
|
return;
|
|
}
|
|
|
|
CString sKey(_T(""))
|
|
, sNo(m_ctrlList.GetItemText(nRow, 0));
|
|
|
|
int nNo(TypeConvert::s2i(sNo));
|
|
|
|
switch (m_dlgType)
|
|
{
|
|
case PIPECABLE::eHOLDER:
|
|
{
|
|
if (nRow >= m_holders.size()) break;
|
|
|
|
PIPECABLE::HolderSet::iterator it(PIPECABLE::findItem(nNo, m_holders));
|
|
if (it == m_holders.end()) break;
|
|
|
|
sKey = getMapKey(*it);
|
|
|
|
if (m_Addin.RemoveKey(sKey))
|
|
m_holders.erase(it);
|
|
|
|
break;
|
|
}
|
|
case PIPECABLE::eHANGER:
|
|
{
|
|
if (nRow >= m_hangers.size()) break;
|
|
|
|
PIPECABLE::HangerSet::iterator it(PIPECABLE::findItem(nNo, m_hangers));
|
|
if (it == m_hangers.end()) break;
|
|
|
|
sKey = getMapKey(*it);
|
|
|
|
if (m_Addin.RemoveKey(sKey))
|
|
m_hangers.erase(it);
|
|
|
|
break;
|
|
}
|
|
case PIPECABLE::eBOSS:
|
|
{
|
|
if (nRow >= m_bosses.size()) break;
|
|
|
|
PIPECABLE::BossSet::iterator it(PIPECABLE::findItem(nNo, m_bosses));
|
|
if (it == m_bosses.end()) break;
|
|
|
|
sKey = getMapKey(*it);
|
|
|
|
if (m_Addin.RemoveKey(sKey))
|
|
m_bosses.erase(it);
|
|
|
|
break;
|
|
}
|
|
default:
|
|
return;
|
|
}
|
|
refreshListByData();
|
|
return;
|
|
}
|
|
|
|
void CGLFJDlg::OnBnClickedCabling()
|
|
{
|
|
int nRow = m_ctrlList.GetSelectionMark();
|
|
if (nRow == -1)
|
|
{
|
|
AfxMessageBox(_T("请选择一行数据。"));
|
|
return;
|
|
}
|
|
|
|
CString sKey(_T(""))
|
|
, sTitle(_T(""))
|
|
, sNo(m_ctrlList.GetItemText(nRow, 0));
|
|
|
|
int nNo(TypeConvert::s2i(sNo));
|
|
|
|
switch (m_dlgType)
|
|
{
|
|
case PIPECABLE::eHOLDER:
|
|
{
|
|
if (nRow >= m_holders.size()) break;
|
|
|
|
PIPECABLE::HolderSet::iterator it(PIPECABLE::findItem(nNo, m_holders));
|
|
if (it == m_holders.end()) break;
|
|
|
|
PIPECABLE::HOLDER &holder(const_cast<PIPECABLE::HOLDER&>(*it));
|
|
|
|
if (!hasAddin(holder.m_nNo, PIPECABLE::HOLDER::flag(), m_Addin)) break;
|
|
|
|
sTitle.Format(_T("支架%d-%s-共%d层"), holder.m_nNo, m_rooms[holder.m_nRoomIdx], holder.m_nRow);
|
|
|
|
CXLFSDlg dlg(holder.m_cabling, sTitle);
|
|
if (dlg.DoModal() != IDOK) break;
|
|
|
|
holder.m_cabling = dlg.m_cabling;
|
|
|
|
sKey = getMapKey(holder);
|
|
if (m_Addin.RemoveKey(sKey))
|
|
m_Addin.SetAt(sKey, holder.toString(holder.m_nRoomIdx, holder.m_sOffset));
|
|
|
|
break;
|
|
}
|
|
case PIPECABLE::eHANGER:
|
|
{
|
|
if (nRow >= m_hangers.size()) break;
|
|
|
|
PIPECABLE::HangerSet::iterator it(PIPECABLE::findItem(nNo, m_hangers));
|
|
if (it == m_hangers.end()) break;
|
|
|
|
PIPECABLE::HANGER &hanger(const_cast<PIPECABLE::HANGER&>(*it));
|
|
|
|
if (!hasAddin(hanger.m_nNo, PIPECABLE::HANGER::flag(), m_Addin)) break;
|
|
|
|
sTitle.Format(_T("吊架%d-%s-共%d层"), hanger.m_nNo, m_rooms[hanger.m_nRoomIdx], hanger.m_nRow);
|
|
|
|
CXLFSDlg dlg(hanger.m_cabling, sTitle);
|
|
if (dlg.DoModal() != IDOK) break;
|
|
|
|
hanger.m_cabling = dlg.m_cabling;
|
|
|
|
sKey = getMapKey(hanger);
|
|
if (m_Addin.RemoveKey(sKey))
|
|
m_Addin.SetAt(sKey, hanger.toString(hanger.m_nRoomIdx, hanger.m_sOffset));
|
|
|
|
break;
|
|
}
|
|
case PIPECABLE::eBOSS:
|
|
{
|
|
if (nRow >= m_bosses.size()) break;
|
|
|
|
PIPECABLE::BossSet::iterator it(PIPECABLE::findItem(nNo, m_bosses));
|
|
if (it == m_bosses.end()) break;
|
|
|
|
PIPECABLE::BOSS &boss(const_cast<PIPECABLE::BOSS&>(*it));
|
|
|
|
if (!hasAddin(boss.m_nNo, PIPECABLE::BOSS::flag(), m_Addin)) break;
|
|
break;
|
|
}
|
|
default:
|
|
break;
|
|
}
|
|
|
|
refreshListByData();
|
|
return;
|
|
}
|
|
|
|
void CGLFJDlg::OnNMDblclkList1(NMHDR *pNMHDR, LRESULT *pResult)
|
|
{
|
|
LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
|
|
*pResult = 0;
|
|
OnBnClickedModify();
|
|
}
|