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

694 lines
19 KiB
C++

// PrinciplePubFeedDlg.cpp : implementation file
//
#include "stdafx.h"
#include "DbEquipment.h"
#include "AcDbObjectPtr.h"
#include "PickEntSet.h"
#include "dbpipe.h"
#include "PrinciplePubFeedDlg.h"
#include "DistFloorDlg.h"
#include "SanitaryDangDlg.h"
#include "SantaryIndustryDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern void DrawFloorLine(XPoint p1, XPoint p2, const TCHAR*szPipeLayer, const TCHAR*szText, double nHeight, const TCHAR*szSerial);
/////////////////////////////////////////////////////////////////////////////
// 工业建筑给水原理
/////////////////////////////////////////////////////////////////////////////
extern AcDbObjectId InitLayer(const TCHAR *szLayer, AcDbDatabase *pDb = NULL);
extern AcDbObjectId DrawSysPipeByLayer(XPoint ptStart, XPoint ptEnd, const TCHAR *szLayer, int iLevel = 0);
extern AcDbObjectId InsEquipmentByName(const TCHAR *szName, XPoint pt, double nAng, const TCHAR *szLayer, BOOL bReversal, BOOL bHidePipe);
extern TCHAR *LAY_PIPE_FEED;
extern TCHAR *LAY_EQ_FEED;
void PrincipleIndustryFeed()
{
CTemporaryResourceOverride vTemp;
CPrinciplePubFeedDlg dlg(1);
if(dlg.DoModal() != IDOK)
return;
CString csLayer = LAY_PIPE_FEED;
GlobalFunc::InitPipeLayer(LAY_PIPE_FEED);
InitLayer(LAY_EQ_FEED);
XPoint ptIns, ptStart, ptEnd, ptFloor;
xg_getvar(_T("VIEWCTR"), ptIns);
ptIns = GlobalFunc::Ucs2Wcs(ptIns);
PickSet ss(SS_FREE);
ss.IncludeBegin();
ptStart = ptIns;
ads_polar(ptStart, PI/2*3, 1000, ptStart);
ptFloor = ptIns;
CString csDwb = g_csDwbPath + _T("TwtSys");
double nCountHeight(0);
GlobalFunc::InitTwtTextStyle(g_Option::instance().g_csTwtDimStyle);
int idx(1);
for(int i=0;i<dlg.m_lstData.Length();i++){
double dCurFloorHeight = dlg.m_lstData[i]->m_dHeight;
for(int j=0;j<dlg.m_lstData[i]->m_iNum;j++){
ptStart = ptFloor;
XPoint ptVerPipeS, ptVerPipeE;
ads_polar(ptStart, PI/2, dlg.m_nElevation*1000, ptVerPipeS);
ads_polar(ptVerPipeS, PI/2*3, dCurFloorHeight, ptVerPipeE);
//绘制每层立管
AcDbObjectId idPipe = DrawSysPipeByLayer(ptVerPipeE, ptVerPipeS, LAY_PIPE_FEED);
OPENOBJ_BEGIN(idPipe, AcDb::kForWrite, CDbPipe, pPipe);
if(pPipe){
pPipe->SetSysLabel(XString(_T("%d楼立管-1"), idx));
}
OPENOBJ_END();
if(dlg.m_bFloor){
//楼板线和字
ads_polar(ptStart, PI, dlg.m_nFloorLen*6, ptStart);
ads_polar(ptFloor, 0, dlg.m_nFloorLen, ptEnd);
CString csText;
csText.Format(_T("%d楼"), idx);
DrawFloorLine(ptStart, ptEnd, csLayer, csText, nCountHeight,_T(""));
nCountHeight += dCurFloorHeight/1000;
}
//干管
XPoint ptPipeS, ptPipeE, ptValve, ptAmmeter;
ads_polar(ptFloor, PI/2, dlg.m_nElevation*1000, ptPipeS);
BOOL bLeft = FALSE;
double nRotate(0);
int len = dlg.m_lstData[i]->m_lstFloor.Length();
for(int m=0;m<len;m++){
CString csName = dlg.m_lstData[i]->m_lstFloor[m]->m_csName;
int iNum = dlg.m_lstData[i]->m_lstFloor[m]->m_iNum;
double dNg = dlg.m_lstData[i]->m_lstFloor[m]->m_dNg;
double dQ = dlg.m_lstData[i]->m_lstFloor[m]->m_dQ;
CString csBlkRec;
if(csName == _T("大便器(延时自闭式冲洗阀)") || csName == _T("大便器自闭式冲洗阀"))
csBlkRec = _T("00000291");
else if(csName == _T("小便器") || csName.Find(_T("小便器")) > -1)
csBlkRec = _T("00000046");
else if(csName == _T("洗手盆") || csName == _T("洗脸盆") || csName.Find(_T("洗脸盆")) > -1)
csBlkRec = _T("00000038");
else if(csName.Find(_T("洗涤盆")) > -1)
csBlkRec = _T("00000037");
else if(csName.Find(_T("大便器(冲洗水箱浮球阀)")) > -1 || csName.Find(_T("大便器冲洗水箱")) > -1)
csBlkRec = _T("00000296");
else if(csName == _T("浴盆") || csName == _T("淋浴器") || csName.Find(_T("淋浴器")) > -1)
csBlkRec = _T("00000048");
if(csBlkRec == _T(""))
continue;
for(int m=0;m<iNum;m++){
ads_polar(ptPipeS, nRotate, dlg.m_nLen, ptPipeE);
if(bLeft)
DrawSysPipeByLayer(ptPipeE, ptPipeS, csLayer);
else
DrawSysPipeByLayer(ptPipeS, ptPipeE, csLayer);
XString xsTmp;
if(GlobalFunc::LoadDwbBlock(csDwb, csBlkRec, xsTmp) != RTNORM)
continue;
InsEquipmentByName(xsTmp, ptPipeE, nRotate, LAY_EQ_FEED, FALSE, FALSE);
Entity entLast;
entLast.GetLast();
OPENOBJ_BEGIN(entLast, AcDb::kForWrite, CDbEquipment, pEquipTmp);
if(pEquipTmp){
pEquipTmp->SetDang(dNg);
pEquipTmp->SetSpare(dQ);
}
OPENOBJ_END();
ptPipeS = ptPipeE;
}
}
idx++;
if(j == dlg.m_lstData[i]->m_iNum - 1){
if(i != dlg.m_lstData.Length() -1){
dCurFloorHeight = dlg.m_lstData[i+1]->m_dHeight;
}
}
ads_polar(ptFloor, PI/2, dCurFloorHeight, ptFloor);
}
}
ss.IncludeEnd();
PickSet ssCopy(SS_FREE);
for(long m=0;m<ss.Length();m++){
Entity entTmp = ss[m];
if(!(entTmp.Is(_T("LINE")) || entTmp.Is(_T("ATS_ELEVATION")) || entTmp.Is(_T("ATS_TEXT"))))
ssCopy += entTmp;
OPENOBJ_BEGIN(entTmp, AcDb::kForWrite, CDbPipe, pPipe);
if(pPipe){
pPipe->SetMaterial(dlg.m_iMaterial);
}
OPENOBJ_END();
}
int nOsMode=0;
xg_getvar(_T("OSMODE"), &nOsMode);
nOsMode &= ~0x4000;
nOsMode |= OS_INT|OS_END|OS_NEA|OS_MID;
XPushVar<int> vOsMode(_T("OSMODE"), nOsMode);
ptIns = GlobalFunc::Wcs2Ucs(ptIns);
ss.Redraw(2);
XPoint ptFinal;
actrTransactionManager->flushGraphics(); //acad 刷新
int nRet = GlobalFunc::DragMovePickSet(ss, _T("\n请点取系统图位置<退出>: "), ptIns, ptFinal);
if(nRet != RTNORM){
ss.Erase();
//TPipePerDocData *pData = GetCurPipeDocData();
//pData->EnableWork(FALSE);
return;
}
ss.Redraw(1);
}
/////////////////////////////////////////////////////////////////////////////
// 公共建筑给水原理
/////////////////////////////////////////////////////////////////////////////
void PrinciplePubFeed()
{
CTemporaryResourceOverride vTemp;
CPrinciplePubFeedDlg dlg(0);
if(dlg.DoModal() != IDOK)
return;
CString csLayer = LAY_PIPE_FEED;
GlobalFunc::InitPipeLayer(LAY_PIPE_FEED);
InitLayer(LAY_EQ_FEED);
XPoint ptIns, ptStart, ptEnd, ptFloor;
xg_getvar(_T("VIEWCTR"), ptIns);
ptIns = GlobalFunc::Ucs2Wcs(ptIns);
PickSet ss(SS_FREE);
ss.IncludeBegin();
ptStart = ptIns;
ads_polar(ptStart, PI/2*3, 1000, ptStart);
ptFloor = ptIns;
CString csDwb = g_csDwbPath + _T("TwtSys");
double nCountHeight(0);
GlobalFunc::InitTwtTextStyle(g_Option::instance().g_csTwtDimStyle);
int idx(1);
for(int i=0;i<dlg.m_lstData.Length();i++){
double dCurFloorHeight = dlg.m_lstData[i]->m_dHeight;
for(int j=0;j<dlg.m_lstData[i]->m_iNum;j++){
ptStart = ptFloor;
XPoint ptVerPipeS, ptVerPipeE;
ads_polar(ptStart, PI/2, dlg.m_nElevation*1000, ptVerPipeS);
ads_polar(ptVerPipeS, PI/2*3, dCurFloorHeight, ptVerPipeE);
//绘制每层立管
AcDbObjectId idPipe = DrawSysPipeByLayer(ptVerPipeE, ptVerPipeS, LAY_PIPE_FEED);
OPENOBJ_BEGIN(idPipe, AcDb::kForWrite, CDbPipe, pPipe);
if(pPipe){
pPipe->SetSysLabel(XString(_T("%d楼立管-1"), idx));
}
OPENOBJ_END();
if(dlg.m_bFloor){
//楼板线和字
ads_polar(ptStart, PI, dlg.m_nFloorLen*6, ptStart);
ads_polar(ptFloor, 0, dlg.m_nFloorLen, ptEnd);
CString csText;
csText.Format(_T("%d楼"), idx);
DrawFloorLine(ptStart, ptEnd, csLayer, csText, nCountHeight,_T(""));
nCountHeight += dCurFloorHeight/1000;
}
//干管
XPoint ptPipeS, ptPipeE, ptValve, ptAmmeter;
ads_polar(ptFloor, PI/2, dlg.m_nElevation*1000, ptPipeS);
BOOL bLeft = FALSE;
double nRotate(0);
int len = dlg.m_lstData[i]->m_lstFloor.Length();
for(int m=0;m<len;m++){
CString csName = dlg.m_lstData[i]->m_lstFloor[m]->m_csName;
int iNum = dlg.m_lstData[i]->m_lstFloor[m]->m_iNum;
double dNg = dlg.m_lstData[i]->m_lstFloor[m]->m_dNg;
double dQ = dlg.m_lstData[i]->m_lstFloor[m]->m_dQ;
CString csBlkRec;
if(csName == _T("大便器(延时自闭式冲洗阀)"))
csBlkRec = _T("00000291");
else if(csName == _T("小便器"))
csBlkRec = _T("00000046");
else if(csName == _T("洗手盆") || csName == _T("洗脸盆"))
csBlkRec = _T("00000038");
else if(csName.Find(_T("洗涤盆")) > -1)
csBlkRec = _T("00000037");
else if(csName.Find(_T("大便器(冲洗水箱浮球阀)")) > -1)
csBlkRec = _T("00000296");
else if(csName == _T("浴盆") || csName == _T("淋浴器"))
csBlkRec = _T("00000048");
if(csBlkRec == _T(""))
continue;
for(int m=0;m<iNum;m++){
ads_polar(ptPipeS, nRotate, dlg.m_nLen, ptPipeE);
if(bLeft)
DrawSysPipeByLayer(ptPipeE, ptPipeS, csLayer);
else
DrawSysPipeByLayer(ptPipeS, ptPipeE, csLayer);
XString xsTmp;
if(GlobalFunc::LoadDwbBlock(csDwb, csBlkRec, xsTmp) != RTNORM)
continue;
InsEquipmentByName(xsTmp, ptPipeE, nRotate, LAY_EQ_FEED, FALSE, FALSE);
Entity entLast;
entLast.GetLast();
OPENOBJ_BEGIN(entLast, AcDb::kForWrite, CDbEquipment, pEquipTmp);
if(pEquipTmp){
pEquipTmp->SetDang(dNg);
pEquipTmp->SetSpare(dQ);
}
OPENOBJ_END();
ptPipeS = ptPipeE;
}
}
idx++;
if(j == dlg.m_lstData[i]->m_iNum - 1){
if(i != dlg.m_lstData.Length() -1){
dCurFloorHeight = dlg.m_lstData[i+1]->m_dHeight;
}
}
ads_polar(ptFloor, PI/2, dCurFloorHeight, ptFloor);
}
}
ss.IncludeEnd();
PickSet ssCopy(SS_FREE);
for(long m=0;m<ss.Length();m++){
Entity entTmp = ss[m];
if(!(entTmp.Is(_T("LINE")) || entTmp.Is(_T("ATS_ELEVATION")) || entTmp.Is(_T("ATS_TEXT"))))
ssCopy += entTmp;
OPENOBJ_BEGIN(entTmp, AcDb::kForWrite, CDbPipe, pPipe);
if(pPipe){
pPipe->SetMaterial(dlg.m_iMaterial);
}
OPENOBJ_END();
}
int nOsMode=0;
xg_getvar(_T("OSMODE"), &nOsMode);
nOsMode &= ~0x4000;
nOsMode |= OS_INT|OS_END|OS_NEA|OS_MID;
XPushVar<int> vOsMode(_T("OSMODE"), nOsMode);
ptIns = GlobalFunc::Wcs2Ucs(ptIns);
ss.Redraw(2);
XPoint ptFinal;
actrTransactionManager->flushGraphics(); //acad 刷新
int nRet = GlobalFunc::DragMovePickSet(ss, _T("\n请点取系统图位置<退出>: "), ptIns, ptFinal);
if(nRet != RTNORM){
ss.Erase();
//TPipePerDocData *pData = GetCurPipeDocData();
//pData->EnableWork(FALSE);
return;
}
ss.Redraw(1);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
TGridPubFeed::TGridPubFeed()
{
m_iOld=0;
}
void TGridPubFeed::OnCurChanged()
{
WDGrid::OnCurChanged();
int idx = GetCurRowIndex();
if(IsValidRow(idx))
{
CPrinciplePubFeedDlg *pDlg=(CPrinciplePubFeedDlg*)GetParent();
if(pDlg!=NULL){
pDlg->UpdateSanGrid2List();
pDlg->UpdateSanGrid();
pDlg->UpdateGrid2List();
m_iOld = idx;
}
}
}
/////////////////////////////////////////////////////////////////////////////
// CPrinciplePubFeedDlg dialog
CString CPrinciplePubFeedDlg::m_csMaterial = "";
CPrinciplePubFeedDlg::CPrinciplePubFeedDlg(int mode, CWnd* pParent /*=NULL*/)
: CDialog(CPrinciplePubFeedDlg::IDD, pParent), m_spinLen(50)
{
m_iMode = mode;
//{{AFX_DATA_INIT(CPrinciplePubFeedDlg)
m_nLen = 800;
m_nFloorLen = 500;
m_nElevation = 0.3;
m_bFloor = TRUE;
m_iMaterial = -1;
//}}AFX_DATA_INIT
}
void CPrinciplePubFeedDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CPrinciplePubFeedDlg)
DDX_Control(pDX, IDC_COMBO_MATERIAL, m_comboMat);
DDX_Control(pDX, IDC_SPIN_LEN, m_spinLen);
DDX_Text(pDX, IDC_FLOOR_LEN, m_nLen);
DDX_Text(pDX, IDC_FLOOR_LEN2, m_nFloorLen);
DDX_Text(pDX, IDC_EDIT_ELEVATION, m_nElevation);
DDX_Check(pDX, IDC_CHECK_FLOOR, m_bFloor);
DDX_CBIndex(pDX, IDC_COMBO_MATERIAL, m_iMaterial);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CPrinciplePubFeedDlg, CDialog)
//{{AFX_MSG_MAP(CPrinciplePubFeedDlg)
ON_BN_CLICKED(IDC_BUTTON_ADD, OnButtonAdd)
ON_WM_PAINT()
ON_BN_CLICKED(IDC_BUTTON_DEL, OnButtonDel)
ON_BN_CLICKED(IDC_BUTTON_ADD2, OnButtonAdd2)
ON_BN_CLICKED(IDC_BUTTON_DEL2, OnButtonDel2)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CPrinciplePubFeedDlg message handlers
BOOL CPrinciplePubFeedDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_spinLen.SetRange(50, 5000);
if(m_iMode == 0)
{
this->SetWindowText(_T("绘制公共建筑给水原理图"));
m_grid.AppendCol(_T("卫生器具"), 160);
m_grid.AppendCol(_T("数量"), 50);
m_grid.AppendCol(_T("当量"), 50);
m_grid.AppendCol(_T("额定流量"), 50);
}
else
{
this->SetWindowText(_T("绘制工业建筑给水原理图"));
m_grid.AppendCol(_T("卫生器具"), 150);
m_grid.AppendCol(_T("数量"), 30);
m_grid.AppendCol(_T("同时给水百分数"), 80);
m_grid.AppendCol(_T("额定流量"), 50);
}
m_grid.Clear();
m_grid.Create(this, IDC_LIST_FLOOR);
m_grid.FitLastCol();
m_grid.SetNoAppendButton(TRUE);
m_grid.SetNoDefaultMenu(true);
m_grid.Refresh();
//////////////////////////////////////////////////
m_gridFloor.AppendCol(_T("楼层"), 30);
m_gridFloor.AppendCol(_T("标准层数"), 50);
m_gridFloor.AppendCol(_T("层高"), 50);
m_gridFloor.Clear();
m_gridFloor.Create(this, IDC_LIST_LAYER);
m_gridFloor.FitLastCol();
m_gridFloor.SetNoAppendButton(TRUE);
m_gridFloor.SetNoDefaultMenu(true);
m_gridFloor.Refresh();
TPubFeedData *pData = new TPubFeedData();
pData->m_csName = _T("1层");
pData->m_iNum = 6;
pData->m_dHeight = 3000;
m_lstData.Append(pData);
UpdateGrid();
m_gridFloor.SetCurRowIndex(0);
XStringList lstMat;
GlobalFunc::GetPipeMaterialList(lstMat);
for(int i=0;i<lstMat.Length();i++){
m_comboMat.AddString(lstMat[i]);
CString csTmp = lstMat[i];
if(m_csMaterial == csTmp)
m_iMaterial = i;
}
if(m_iMaterial < 0)
m_iMaterial = g_Option::instance().g_iPipeMaterial[0];
UpdateData(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CPrinciplePubFeedDlg::UpdateSanGrid()
{
m_grid.Clear();
long idx = m_gridFloor.GetCurRowIndex();
if(idx < 0)
return;
int len = m_lstData[idx]->m_lstFloor.Length();
for(int i=0;i<len;i++){
m_grid.AppendRow();
m_grid.GetCell(i, 0).SetText(m_lstData[idx]->m_lstFloor[i]->m_csName);
CString csNum, csNg, csQ;
csNum.Format(_T("%d"), m_lstData[idx]->m_lstFloor[i]->m_iNum);
m_grid.GetCell(i, 1).SetText(csNum);
csNg.Format(_T("%.2f"), m_lstData[idx]->m_lstFloor[i]->m_dNg);
m_grid.GetCell(i, 2).SetText(csNg);
csQ.Format(_T("%.2f"), m_lstData[idx]->m_lstFloor[i]->m_dQ);
m_grid.GetCell(i, 3).SetText(csQ);
}
}
void CPrinciplePubFeedDlg::UpdateGrid()
{
m_gridFloor.Clear();
int len = m_lstData.Length();
for(int i=0;i<len;i++){
m_gridFloor.AppendRow();
m_gridFloor.GetCell(i, 0).SetText(m_lstData[i]->m_csName);
CString csNum, csHeight;
csNum.Format(_T("%d"), m_lstData[i]->m_iNum);
m_gridFloor.GetCell(i, 1).SetText(csNum);
csHeight.Format(_T("%.0f"), m_lstData[i]->m_dHeight);
m_gridFloor.GetCell(i, 2).SetText(csHeight);
}
}
void CPrinciplePubFeedDlg::UpdateSanGrid2List()
{
UpdateData(TRUE);
long idx = m_gridFloor.m_iOld;
if(idx < 0)
return;
for(m_grid.MoveToFirst(); !m_grid.IsOut(); m_grid.MoveToNext()){
WDGridRow *pRow = m_grid.CurRow();
CString csName = (LPCTSTR)(*pRow)[0].GetText();
CString csNum = (LPCTSTR)(*pRow)[1].GetText();
CString csNg = (LPCTSTR)(*pRow)[2].GetText();
CString csQ = (LPCTSTR)(*pRow)[3].GetText();
int iRow = pRow->GetIndex();
m_lstData[idx]->m_lstFloor[iRow]->m_iNum = _ttoi(csNum);
m_lstData[idx]->m_lstFloor[iRow]->m_dNg = _tstof(csNg);
m_lstData[idx]->m_lstFloor[iRow]->m_dQ = _tstof(csQ);
}
}
void CPrinciplePubFeedDlg::UpdateGrid2List()
{
UpdateData(TRUE);
for(m_gridFloor.MoveToFirst(); !m_gridFloor.IsOut(); m_gridFloor.MoveToNext()){
WDGridRow *pRow = m_gridFloor.CurRow();
CString csName = (LPCTSTR)(*pRow)[0].GetText();
CString csNum = (LPCTSTR)(*pRow)[1].GetText();
CString csHeight = (LPCTSTR)(*pRow)[2].GetText();
int iRow = pRow->GetIndex();
m_lstData[iRow]->m_csName = csName;
m_lstData[iRow]->m_iNum = _ttoi(csNum);
m_lstData[iRow]->m_dHeight = _tstof(csHeight);
}
}
void CPrinciplePubFeedDlg::OnButtonAdd2()
{
UpdateGrid2List();
int len = m_lstData.Length();
TPubFeedData *pData = new TPubFeedData();
pData->m_csName = XString(_T("%d层"), len+1);
pData->m_iNum = 1;
pData->m_dHeight = 3000;
m_lstData.Append(pData);
UpdateGrid();
}
void CPrinciplePubFeedDlg::OnButtonDel2()
{
UpdateGrid2List();
long idx = m_gridFloor.GetCurRowIndex();
if(idx < 0)
return;
if(m_lstData.Length() < 1)
return;
m_gridFloor.m_iOld = -1;
m_lstData.Remove(idx);
UpdateGrid();
}
void CPrinciplePubFeedDlg::OnButtonAdd()
{
UpdateSanGrid2List();
long idx = m_gridFloor.GetCurRowIndex();
if(idx < 0)
return;
if(m_lstData.Length() < 1)
return;
UpdateData();
if(m_iMode == 0)
{
CTemporaryResourceOverride vTemp;
CSanitaryDangDlg dlg;
if(dlg.DoModal() == IDOK){
TPubFeedFloorData *pData = new TPubFeedFloorData();
pData->m_csName = dlg.m_csRetName;
pData->m_dNg = dlg.m_nRet;
pData->m_dQ = dlg.m_nRet2;
pData->m_iNum = 1;
m_lstData[idx]->m_lstFloor.Append(pData);
UpdateSanGrid();
}
}
else
{
CTemporaryResourceOverride vTemp;
CSantaryIndustryDlg dlg;
if(dlg.DoModal() == IDOK){
TPubFeedFloorData *pData = new TPubFeedFloorData();
pData->m_csName = dlg.m_csRetName;
pData->m_dNg = dlg.m_nRet;
pData->m_dQ = dlg.m_nRet2;
pData->m_iNum = 1;
m_lstData[idx]->m_lstFloor.Append(pData);
UpdateSanGrid();
}
}
}
void CPrinciplePubFeedDlg::OnButtonDel()
{
UpdateSanGrid2List();
long idx = m_gridFloor.GetCurRowIndex();
if(idx < 0)
return;
if(m_lstData.Length() < 1)
return;
long idx2 = m_grid.GetCurRowIndex();
if(idx2 < 0 || !m_grid.IsValidRow(idx2)){
MessageBox(_T("没有选中的行!请点击表格左侧的行标!"));
return;
}
m_lstData[idx]->m_lstFloor.Remove(idx2);
UpdateSanGrid();
}
void CPrinciplePubFeedDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
}
void CPrinciplePubFeedDlg::OnOK()
{
UpdateData(TRUE);
UpdateSanGrid2List();
UpdateGrid2List();
m_comboMat.GetLBText(m_iMaterial, m_csMaterial);
BOOL bHasEq(FALSE);
for(int i=0;i<m_lstData.Length();i++){
int len = m_lstData[i]->m_lstFloor.Length();
if(len > 0){
bHasEq = TRUE;
break;
}
}
if(!bHasEq){
AfxMessageBox(_T("\n公建给水系统没有用水设备!"));
return;
}
CDialog::OnOK();
}