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

238 lines
4.9 KiB
C++

#include "stdafx.h"
#include "CalcFeedSettingDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
//#ifdef _WIN64
#include"TGAs.h"
//#endif
WDGridForFeedSet::WDGridForFeedSet()
{
AppendCol(_T("管径"), 96);
AppendCol(_T("流速"), 96);
// SetNoAppendButton();
FitLastCol();
}
//单元内容将改变为text,返回值代表是否确定
bool WDGridForFeedSet::OnModified(WDGridCell&cell,CString &text)
{
WDGrid::OnModified(cell,text);
int nRow = cell.GetRowIndex();
int nCol = cell.GetColIndex();
if(!IsValidRow(nRow))
return true;
double dR = 0.0,dSpeed = 0.0;
CString strT = _T("");
if (nCol == 0) // 修改管径
{
strT = GetCell(nRow,1).GetText();
dR = _tstof(text);;
dSpeed = _tstof(strT);
}
else if (nCol == 1) // 修改流速
{
strT = GetCell(nRow,0).GetText();
dR = _tstof(strT);;
dSpeed = _tstof(text);
}
if (dSpeed < 0)
{
AfxMessageBox(_T("流速值应大于0!"));
return false;
}
if (dR < 0)
{
AfxMessageBox(_T("管径值应大于0!"));
return false;
}
if (dR >= 15 && dR <= 20)
{
if (dSpeed > 1.0)
{
AfxMessageBox(_T("流速值应小于或等于1.0!"));
return false;
}
}
else if (dR >= 25 && dR <= 40)
{
if (dSpeed > 1.2)
{
AfxMessageBox(_T("流速值应小于或等于1.2!"));
return false;
}
}
else if (dR >= 50 && dR <= 70)
{
if (dSpeed > 1.5)
{
AfxMessageBox(_T("流速值应小于或等于1.5!"));
return false;
}
}
else if (dR >= 80)
{
if (dSpeed > 1.8)
{
AfxMessageBox(_T("流速值应小于或等于1.8!"));
return false;
}
}
return true;
}
CCalcFeedSettingDlg::CCalcFeedSettingDlg(CWnd* pParent /*=NULL*/)
: CDialog(CCalcFeedSettingDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CCalcFeedSettingDlg)
//}}AFX_DATA_INIT
}
void CCalcFeedSettingDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CCalcFeedSettingDlg)
DDX_Control(pDX, IDC_LIST_DN, m_gridData);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CCalcFeedSettingDlg, CDialog)
//{{AFX_MSG_MAP(CCalcFeedSettingDlg)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
BOOL CCalcFeedSettingDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_gridData.Clear();
m_gridData.Create(this, IDC_LIST_DN);
// 初始化设置列表数据
InitFeedSettingData();
return TRUE;
}
// 初始化设置列表数据
void CCalcFeedSettingDlg::InitFeedSettingData()
{
XString fullFile;
if(!GlobalFunc::FindFile(_T("datastore.dbf"), fullFile)) {
AfxMessageBox(_T("对不起,没有发现datastore.dbf文件!"));
return;
}
CodeBase db;
db.read_only = 1;
DbfTable *pTable = db.Open(fullFile);
if(!pTable)
return;
int nType = 0,nRowCount = 0;
CString strName = _T(""),strValue = _T("");
for(pTable->MoveFirst();!pTable->IsEOF();pTable->MoveNext())
{
GET_FIELD(pTable, _T("typenumber"), nType);
if (nType == 42)
{
GET_FIELD(pTable, _T("typename"), strName);
GET_FIELD(pTable, _T("typevalue"), strValue);
m_gridData.AppendRow();
nRowCount = m_gridData.GetRowNum();
m_gridData.GetCell(nRowCount-1,0).SetText(strName);
m_gridData.GetCell(nRowCount-1,1).SetText(strValue);
}
}
}
void CCalcFeedSettingDlg::OnOK()
{
if (!MakesureNoRepeatData())
{
AfxMessageBox(_T("管径尺寸不能重复!"));
return;
}
// 先删除原有数据
XString fullFile;
if(!GlobalFunc::FindFile(_T("datastore.dbf"), fullFile)) {
AfxMessageBox(_T("对不起,没有发现datastore.dbf文件!"));
return;
}
CodeBase db;
DbfTable *pTable = db.Open(fullFile);
if(!pTable)
return;
int nType = 0;
for(pTable->MoveFirst();!pTable->IsEOF();pTable->MoveNext())
{
GET_FIELD(pTable, _T("typenumber"), nType);
if (nType == 42)
{
pTable->Delete();
}
}
// 写入当前数据
int nRowCount = m_gridData.GetRowNum();
int nColCount = m_gridData.GetColNum();
if (nColCount < 2)
{
return;
}
CString strName = _T(""),strValue = _T("");
for (int i = 0;i < nRowCount;i++)
{
strName = m_gridData.GetCell(i,0).GetText();
strValue = m_gridData.GetCell(i,1).GetText();
if (!strName.IsEmpty() && !strValue.IsEmpty())
{
pTable->AppendBegin();
SET_FIELD(pTable, _T("typenumber"), 42);
SET_FIELD(pTable, _T("typename"), (const TCHAR*)strName);
SET_FIELD(pTable, _T("typevalue"),(const TCHAR*)strValue);
pTable->AppendEnd();
}
}
CDialog::OnOK();
}
// 判断是否有重复的管径 true 无重复
BOOL CCalcFeedSettingDlg::MakesureNoRepeatData()
{
int nRowCont = m_gridData.GetRowNum();
int nColCount = m_gridData.GetColNum();
if (nColCount < 2)
{
return FALSE;
}
CString strName = _T(""),strT = _T("");
int nEqu = 0;
for (int i = 0;i < nRowCont;i++)
{
strT = m_gridData.GetCell(i,0).GetText();
if (strT.IsEmpty()) {
continue;
}
for (int j = 0;j < nRowCont;j++)
{
strName = m_gridData.GetCell(j,0).GetText();
if (strName == strT)
{
nEqu++;
}
if (nEqu > 1)
{
return FALSE;
}
}
nEqu = 0;
}
return TRUE;
}