From 43419b86d6a4a2d879454938fb7db7cc84d8c011 Mon Sep 17 00:00:00 2001
From: LAPTOP-T815PCOQ\25526 <mr.liuyang@126.com>
Date: 星期三, 11 十二月 2024 14:51:38 +0800
Subject: [PATCH] 1. 添加自定义限制编辑框 2. 在axis设定界面实现输入限制功能
---
SourceCode/Bond/BondEq/View/AxisSettingsDlg.cpp | 82 ++++++++++++++++++++++++++++++++---------
1 files changed, 64 insertions(+), 18 deletions(-)
diff --git a/SourceCode/Bond/BondEq/View/AxisSettingsDlg.cpp b/SourceCode/Bond/BondEq/View/AxisSettingsDlg.cpp
index 28d37c1..b5aae05 100644
--- a/SourceCode/Bond/BondEq/View/AxisSettingsDlg.cpp
+++ b/SourceCode/Bond/BondEq/View/AxisSettingsDlg.cpp
@@ -44,8 +44,13 @@
m_bReady = FALSE;
m_bBusy = FALSE;
m_bErr = FALSE;
+
for (int i = 0; i < BTN_MAX; i++) {
m_pBlBtns[i] = new CBlButton();
+ }
+
+ for (int i = 0; i < EDIT_MAX; i++) {
+ m_pRegexEdit[i] = new CRegexEdit();
}
for (int i = 0; i < LABEL_MAX; i++) {
@@ -68,6 +73,10 @@
for (int i = 0; i < BTN_MAX; i++) {
delete m_pBlBtns[i];
+ }
+
+ for (int i = 0; i < EDIT_MAX; i++) {
+ delete m_pRegexEdit[i];
}
for (int i = 0; i < LABEL_MAX; i++) {
@@ -93,11 +102,6 @@
DDX_Control(pDX, IDC_STATIC_AXIS_NUMBER, m_staticAxisNO);
DDX_Control(pDX, IDC_STATIC_AXIS_DESCRIP, m_staticAxisDescription);
DDX_Control(pDX, IDC_STATIC_START_ADDRESS, m_staticStartAddress);
- DDX_Control(pDX, IDC_EDIT_AXIS_MODITFY_POS, m_editManualSpeed);
- DDX_Control(pDX, IDC_EDIT_AXIS_MODITFY_AUTO_SPEED, m_editAutoSpeed);
- DDX_Control(pDX, IDC_EDIT_AXIS_MODITFY_ACCE_TIME, m_editAccelerationTime);
- DDX_Control(pDX, IDC_EDIT_AXIS_MODITFY_DECE_TIME, m_editDecelerationTime);
- DDX_Control(pDX, IDC_EDIT_AXIS_MODITFY_MICROMENTUM, m_editJogDistance);
}
UINT CAxisSettingsDlg::FindIDByName(const CString& strControlID)
@@ -238,6 +242,24 @@
SetLabelColorBasedOnState(*m_pBlLabels[LABEL_ERR], m_bErr, COLOR_RED, COLOR_GREEN_OFF);
}
+void CAxisSettingsDlg::UpdateRegexEdit(CRegexEdit* pRegexEdit, const ValueRange& range, const CString& title)
+{
+ auto formatDouble = [](double value) -> CString {
+ CString str;
+ str.Format(_T("%.3f"), value);
+ return str;
+ };
+
+ pRegexEdit->SetWindowText(formatDouble(range.currentValue));
+ pRegexEdit->SetRegexType(RegexType::Decimal);
+ pRegexEdit->SetValueRange(range.minValue, range.maxValue);
+ pRegexEdit->SetInvalidInputCallback([title, range]() {
+ CString strError;
+ strError.Format(_T("%s鐨勫�煎繀椤诲湪 %.3f 鍜� %.3f 涔嬮棿锛�"), title, range.minValue, range.maxValue);
+ AfxMessageBox(strError);
+ });
+}
+
void CAxisSettingsDlg::updatePageButtonStates()
{
for (int i = 0; i < AXIS_PAGE_SIZE; ++i) {
@@ -313,14 +335,15 @@
};
// 鏇存柊鎺т欢鏄剧ず
- m_staticAxisNO.SetWindowText(CString(axisDetails.number.c_str())); // 杞寸紪鍙�
- m_staticAxisDescription.SetWindowText(CString(axisDetails.description.c_str())); // 杞存弿杩�
- m_staticStartAddress.SetWindowText(CString(axisDetails.startAddress.c_str())); // 璧峰鍦板潃
- m_editJogDistance.SetWindowText(formatDouble(axisDetails.jogDistance.currentValue)); // 寰姩閲�
- m_editManualSpeed.SetWindowText(formatDouble(axisDetails.manualSpeed.currentValue)); // 鎵嬪姩閫熷害
- m_editAutoSpeed.SetWindowText(formatDouble(axisDetails.autoSpeed.currentValue)); // 鑷姩閫熷害
- m_editAccelerationTime.SetWindowText(formatDouble(axisDetails.accelerationTime.currentValue)); // 鍔犻�熸椂闂�
- m_editDecelerationTime.SetWindowText(formatDouble(axisDetails.decelerationTime.currentValue)); // 鍑忛�熸椂闂�
+ m_staticAxisNO.SetWindowText(CString(axisDetails.number.c_str())); // 杞寸紪鍙�
+ m_staticAxisDescription.SetWindowText(CString(axisDetails.description.c_str())); // 杞存弿杩�
+ m_staticStartAddress.SetWindowText(CString(axisDetails.startAddress.c_str())); // 璧峰鍦板潃
+
+ UpdateRegexEdit(m_pRegexEdit[EDIT_MICROMENTUM], axisDetails.jogDistance, _T("寰姩閲�"));
+ UpdateRegexEdit(m_pRegexEdit[EDIT_MANUAL_SPEED], axisDetails.manualSpeed, _T("鎵嬪姩閫熷害"));
+ UpdateRegexEdit(m_pRegexEdit[EDIT_AUTO_SPEED], axisDetails.autoSpeed, _T("鑷姩閫熷害"));
+ UpdateRegexEdit(m_pRegexEdit[EDIT_ACCE_TIME], axisDetails.accelerationTime, _T("鍔犻�熸椂闂�"));
+ UpdateRegexEdit(m_pRegexEdit[EDIT_DECE_TIME], axisDetails.decelerationTime, _T("鍑忛�熸椂闂�"));
}
void CAxisSettingsDlg::refreshPositionDetails(int nAxisId, int pageNumber)
@@ -357,6 +380,12 @@
if (pPositionCtrl) {
pPositionCtrl->SetWindowText(value);
pPositionCtrl->EnableWindow(position.isEnable);
+
+ if (position.isEnable) {
+ CString strError;
+ strError.Format(_T("瀹氫綅鐐�%d"), i + 1);
+ UpdateRegexEdit((CRegexEdit*)pPositionCtrl, position.range, strError);
+ }
}
}
else {
@@ -445,19 +474,19 @@
// 鑾峰彇鐣岄潰涓婄殑淇敼鍙傛暟
CString text;
- m_editManualSpeed.GetWindowText(text);
+ m_pRegexEdit[EDIT_MANUAL_SPEED]->GetWindowText(text);
axisData.manualSpeed.currentValue = _ttof(text);
- m_editAutoSpeed.GetWindowText(text);
+ m_pRegexEdit[EDIT_AUTO_SPEED]->GetWindowText(text);
axisData.autoSpeed.currentValue = _ttof(text);
- m_editAccelerationTime.GetWindowText(text);
+ m_pRegexEdit[EDIT_ACCE_TIME]->GetWindowText(text);
axisData.accelerationTime.currentValue = _ttof(text);
- m_editDecelerationTime.GetWindowText(text);
+ m_pRegexEdit[EDIT_DECE_TIME]->GetWindowText(text);
axisData.decelerationTime.currentValue = _ttof(text);
- m_editJogDistance.GetWindowText(text);
+ m_pRegexEdit[EDIT_MICROMENTUM]->GetWindowText(text);
axisData.jogDistance.currentValue = _ttof(text);
// 鏇存柊瀹氫綅鐐规暟鎹�
@@ -866,6 +895,18 @@
pLabel->SetDynamicFont(TRUE);
}
+ // 鍒濆鍖栫紪杈戞
+ m_pRegexEdit[EDIT_MANUAL_SPEED]->SubclassDlgItem(IDC_EDIT_AXIS_MODITFY_MANUAL_SPEED, this);
+ m_pRegexEdit[EDIT_AUTO_SPEED]->SubclassDlgItem(IDC_EDIT_AXIS_MODITFY_AUTO_SPEED, this);
+ m_pRegexEdit[EDIT_ACCE_TIME]->SubclassDlgItem(IDC_EDIT_AXIS_MODITFY_ACCE_TIME, this);
+ m_pRegexEdit[EDIT_DECE_TIME]->SubclassDlgItem(IDC_EDIT_AXIS_MODITFY_DECE_TIME, this);
+ m_pRegexEdit[EDIT_MICROMENTUM]->SubclassDlgItem(IDC_EDIT_AXIS_MODITFY_MICROMENTUM, this);
+ m_pRegexEdit[EDIT_ANCHOR_POINT1]->SubclassDlgItem(IDC_EDIT_AXIS_ANCHOR_POINT1, this);
+ m_pRegexEdit[EDIT_ANCHOR_POINT2]->SubclassDlgItem(IDC_EDIT_AXIS_ANCHOR_POINT2, this);
+ m_pRegexEdit[EDIT_ANCHOR_POINT3]->SubclassDlgItem(IDC_EDIT_AXIS_ANCHOR_POINT3, this);
+ m_pRegexEdit[EDIT_ANCHOR_POINT4]->SubclassDlgItem(IDC_EDIT_AXIS_ANCHOR_POINT4, this);
+ m_pRegexEdit[EDIT_ANCHOR_POINT5]->SubclassDlgItem(IDC_EDIT_AXIS_ANCHOR_POINT5, this);
+
// 鎸夐挳鍒濆鍖�
m_pBlBtns[BTN_PAGE1]->SubclassDlgItem(IDC_BUTTON_AXIS_ANCHOR_POINT_GROUP1, this);
m_pBlBtns[BTN_PAGE2]->SubclassDlgItem(IDC_BUTTON_AXIS_ANCHOR_POINT_GROUP2, this);
@@ -980,6 +1021,11 @@
CWnd* pWnd = CWnd::FromHandle(pMsg->hwnd);
if (pWnd) {
+ if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN) {
+ // 闃绘鍥炶溅閿粯璁ゅ鐞嗭紝闃叉瀵硅瘽妗嗗叧闂�
+ return TRUE;
+ }
+
// 鍒ゆ柇榧犳爣鏄惁杩涘叆鎸囧畾鎺т欢鍖哄煙
if (pWnd->GetSafeHwnd() == GetDlgItem(IDC_EDIT_AXIS_ANCHOR_POINT_DESCRIP1)->m_hWnd ||
pWnd->GetSafeHwnd() == GetDlgItem(IDC_EDIT_AXIS_ANCHOR_POINT_DESCRIP2)->m_hWnd ||
--
Gitblit v1.9.3