#include "stdafx.h"
|
#include "CReportEditDlg.h"
|
#include "Servo.h"
|
#include "resource.h"
|
#include <algorithm>
|
|
IMPLEMENT_DYNAMIC(CReportEditDlg, CDialogEx)
|
|
CReportEditDlg::CReportEditDlg(const CString& title, int rptId, const std::vector<unsigned int>& vids, CWnd* pParent)
|
: CDialogEx(IDD_DIALOG_REPORT_EDIT, pParent)
|
, m_strTitle(title)
|
, m_rptId(rptId)
|
, m_vids(vids)
|
{
|
}
|
|
CReportEditDlg::~CReportEditDlg()
|
{
|
}
|
|
void CReportEditDlg::DoDataExchange(CDataExchange* pDX)
|
{
|
CDialogEx::DoDataExchange(pDX);
|
DDX_Control(pDX, IDC_EDIT_RPT_ID, m_editId);
|
DDX_Control(pDX, IDC_LIST_RPT_VARS, m_listVars);
|
}
|
|
BEGIN_MESSAGE_MAP(CReportEditDlg, CDialogEx)
|
END_MESSAGE_MAP()
|
|
BOOL CReportEditDlg::OnInitDialog()
|
{
|
CDialogEx::OnInitDialog();
|
SetWindowText(m_strTitle);
|
|
CString strId;
|
strId.Format(_T("%d"), m_rptId);
|
m_editId.SetWindowText(strId);
|
m_editId.SetReadOnly(TRUE);
|
|
// 初始化列表
|
m_listVars.SetExtendedStyle(m_listVars.GetExtendedStyle() | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_CHECKBOXES);
|
m_listVars.InsertColumn(0, _T("ID"), LVCFMT_LEFT, 60);
|
m_listVars.InsertColumn(1, _T("名称"), LVCFMT_LEFT, 140);
|
m_listVars.InsertColumn(2, _T("格式"), LVCFMT_LEFT, 80);
|
|
auto& vars = theApp.m_model.m_hsmsPassive.getVariables();
|
for (int i = 0; i < (int)vars.size(); ++i) {
|
auto v = vars[i];
|
if (v == nullptr) continue;
|
int idx = m_listVars.InsertItem(m_listVars.GetItemCount(), std::to_string(v->getVarialbleId()).c_str());
|
m_listVars.SetItemText(idx, 1, v->getName().c_str());
|
m_listVars.SetItemText(idx, 2, SERVO::CVariable::formatToString(v->getFormat()).c_str());
|
m_listVars.SetItemData(idx, (DWORD_PTR)v->getVarialbleId());
|
if (std::find(m_vids.begin(), m_vids.end(), v->getVarialbleId()) != m_vids.end()) {
|
m_listVars.SetCheck(idx, TRUE);
|
}
|
}
|
|
return TRUE;
|
}
|
|
void CReportEditDlg::OnOK()
|
{
|
std::vector<unsigned int> selected;
|
int count = m_listVars.GetItemCount();
|
for (int i = 0; i < count; ++i) {
|
if (m_listVars.GetCheck(i)) {
|
selected.push_back((unsigned int)m_listVars.GetItemData(i));
|
}
|
}
|
if (selected.empty()) {
|
AfxMessageBox(_T("至少选择一个变量"));
|
return;
|
}
|
m_vids.swap(selected);
|
CDialogEx::OnOK();
|
}
|