Files
envi-code/SourceCode/Code2026/tg_shs/shs_TwtKernal/EditWaterBucketDlg.cpp
T
2026-09-28 15:28:50 +08:00

223 lines
5.0 KiB
C++

#include "stdafx.h"
#include "EditWaterBucketDlg.h"
#include "SelectBlkDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
//#ifdef _WIN64
#include"TGAs.h"
//#endif
CEditWaterBucketDlg::CEditWaterBucketDlg(CWnd* pParent /*=NULL*/)
: CDialog(CEditWaterBucketDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CEditWaterBucketDlg)
m_strWndCmbPipeDia = _T("");
m_dWndEdtDeep = 0.0;
m_dWndEdtEle = 0.0;
m_dWndEdtSize = 0.0;
m_dWndEdtQ = 0.0;
//}}AFX_DATA_INIT
}
void CEditWaterBucketDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CEditWaterBucketDlg)
DDX_CBString(pDX, IDC_COMBO_PIPEDIA, m_strWndCmbPipeDia);
DDX_Text(pDX, IDC_EDIT_DEEP, m_dWndEdtDeep);
DDX_Text(pDX, IDC_EDIT_ELE, m_dWndEdtEle);
DDX_Text(pDX, IDC_EDIT_SIZE, m_dWndEdtSize);
DDX_Text(pDX, IDC_EDIT_Q, m_dWndEdtQ);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CEditWaterBucketDlg, CDialog)
//{{AFX_MSG_MAP(CEditWaterBucketDlg)
ON_BN_CLICKED(IDC_STATIC_PICTURE, OnStaticPicture)
ON_CBN_SELCHANGE(IDC_COMBO_PIPEDIA, OnSelchangeComboPipedia)
ON_WM_PAINT()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
void CEditWaterBucketDlg::OnStaticPicture()
{
CString csSldName;
CString csTK, csRecord;
SplitBlkStr(m_csBlkName, csTK, csRecord);
csSldName.Format(_T("TWTSYS(%s)"), csRecord);
CTemporaryResourceOverride vTemp;
CSelectBlkDlg dlg;
dlg.m_csTkName = _T("TWTSYS");
dlg.m_csType = _T("虹吸雨水斗");
CWnd *pWnd = GetDlgItem(IDC_STATIC_PICTURE);
CRect rect;
dlg.m_staticSlide.m_csCurRecord = csSldName;
pWnd->GetWindowRect(&rect);
dlg.m_ptBase = rect.TopLeft();
if(dlg.DoModal() == IDOK)
{
CString csRet = dlg.m_staticSlide.m_csCurRecord;
XString xsTKName, xsRocord, xsTmp;
SplitSlbName(csRet, xsTKName, xsRocord);
AcDbDatabase *dwg=acdbCurDwg();
AcAxDocLock docLock(dwg);
VERIFY(docLock.lockStatus() == Acad::eOk);
if(LoadDwbBlock((const TCHAR*)xsTKName, (const TCHAR*)xsRocord, xsTmp) != RTNORM)
return;
m_csBlkName = (const TCHAR*)xsTmp;
OpenSlide();
}
}
void CEditWaterBucketDlg::OpenSlide()
{
UpdateData(TRUE);
CWnd *pImageBox1 = GetDlgItem(IDC_STATIC_PICTURE);
CString csSldName;
CString csTK, csRecord;
SplitBlkStr(m_csBlkName, csTK, csRecord);
csSldName.Format(_T("TWTSYS(%s)"), csRecord);
DrawSlide((const TCHAR*)csSldName, pImageBox1);
}
BOOL CEditWaterBucketDlg::OnInitDialog()
{
CDialog::OnInitDialog();
InitCmb();
OnSelchangeComboPipedia();
return TRUE;
}
void CEditWaterBucketDlg::InitCmb()
{
XString fullFile;
if(!FindFile(_T("datastore.dbf"), fullFile))
{
MessageBox(_T("对不起,没有发现datastore.dbf文件!"));
return;
}
CodeBase db;
db.read_only = 1;
XDbfTable *pTable = db.Open(fullFile);
if(!pTable)
return;
CString strDia, strFlux, strDeep,strNum;
std::set<double> setDia;
for(pTable->MoveFirst(); !pTable->IsEOF(); pTable->MoveNext())
{
GET_FIELD(pTable, _T("Typenumber"), strNum);
if (strNum.Compare(_T("45")) != 0)
{
continue;
}
GET_FIELD(pTable, _T("Typename"), strDia);
GET_FIELD(pTable, _T("Typevalue"), strFlux);
GET_FIELD(pTable, _T("Remark"), strDeep);
WaterBucketInfo info = {_tstof(strDia), _tstof(strFlux), _tstof(strDeep)};
m_vecData.push_back(info);
setDia.insert(_tstof(strDia));
}
pTable->Close();
CComboBox *pWnd = (CComboBox*)GetDlgItem(IDC_COMBO_PIPEDIA);
if (pWnd != NULL)
{
pWnd->Clear();
int i = 0;
std::set<double>::iterator it;
for(it = setDia.begin(); it != setDia.end(); it++)
{
CString strTemp;
strTemp.Format(_T("%.0f"), *it);
strTemp = _T("DN") + strTemp;
pWnd->InsertString(i, strTemp);
++i;
}
}
UpdateData(FALSE);
}
void CEditWaterBucketDlg::SetBlkName(const CString& strBlkName)
{
m_csBlkName = strBlkName;
}
CString CEditWaterBucketDlg::GetBlkName()
{
return m_csBlkName;
}
void CEditWaterBucketDlg::SetPipeDia(double dDia)
{
CString str;
str.Format(_T("%.0f"), dDia);
m_strWndCmbPipeDia = _T("DN") + str;
}
double CEditWaterBucketDlg::GetPipeDia()
{
m_strWndCmbPipeDia.TrimLeft(_T("DN"));
return _tstof(m_strWndCmbPipeDia);
}
void CEditWaterBucketDlg::SetSize(double dSize)
{
m_dWndEdtSize = dSize;
}
double CEditWaterBucketDlg::GetSize()
{
return m_dWndEdtSize;
}
void CEditWaterBucketDlg::SetEle(double dEle)
{
m_dWndEdtEle = dEle;
}
double CEditWaterBucketDlg::GetEle()
{
return m_dWndEdtEle;
}
void CEditWaterBucketDlg::OnSelchangeComboPipedia()
{
UpdateData(TRUE);
m_strWndCmbPipeDia.TrimLeft(_T("DN"));
double dDia = _tstof(m_strWndCmbPipeDia);
std::vector<WATERBUCKETINFO>::iterator it;
for(it = m_vecData.begin(); it != m_vecData.end(); it++)
{
if (fabs((*it).dPipeDia - dDia) < 1e-3)
{
m_dWndEdtQ = (*it).dFlux;
m_dWndEdtDeep = (*it).dDeep;
break;
}
}
UpdateData(FALSE);
}
void CEditWaterBucketDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
OpenSlide();
}