From bc7f1c4e028e69be51079b59dae4ae5c4d43f5bb Mon Sep 17 00:00:00 2001
From: chenluhua1980 <Chenluhua@qq.com>
Date: 星期六, 31 一月 2026 21:54:56 +0800
Subject: [PATCH] 1.状态指示图,目前灰色表示掉线,绿色表示在线。增加Slot的小点表示有没有料,及加工状态 。 2.增加图示

---
 SourceCode/Bond/Servo/CPageVarialbles.cpp |   63 ++++++++++++++++++++++++++++++-
 1 files changed, 61 insertions(+), 2 deletions(-)

diff --git a/SourceCode/Bond/Servo/CPageVarialbles.cpp b/SourceCode/Bond/Servo/CPageVarialbles.cpp
index b379c18..f2c2587 100644
--- a/SourceCode/Bond/Servo/CPageVarialbles.cpp
+++ b/SourceCode/Bond/Servo/CPageVarialbles.cpp
@@ -5,6 +5,7 @@
 #include "Servo.h"
 #include "CPageVarialbles.h"
 #include "afxdialogex.h"
+#include "CVariableEditDlg2.h"
 
 
 // CPageVarialbles 瀵硅瘽妗�
@@ -161,7 +162,28 @@
 {
 	ASSERT(btnName);
 	if (_strcmpi(btnName, "鏂板") == 0) {
-		// TODO: 鏂板閫昏緫
+		int rc = UX_CanExecute(L"addVarialbles");
+		if (rc != 1) {
+			AfxMessageBox("鎿嶄綔鏉冮檺涓嶈冻锛岃鑱旂郴绠$悊浜哄憳锛�");
+			return;
+		}
+		unsigned int newId = theApp.m_model.m_hsmsPassive.getMaxVariableId();
+		int newIdInt = static_cast<int>(newId + 1);
+		CVariableEditDlg2 dlg(_T("鏂板鍙橀噺"), newIdInt, _T("U1"), _T(""), _T(""), this);
+		if (dlg.DoModal() != IDOK) return;
+		CString name = dlg.GetNameText();
+		CString fmt = dlg.GetTypeText();
+		CString remark = dlg.GetRemark();
+
+		int ret = theApp.m_model.m_hsmsPassive.addVariable(CT2A(name), CT2A(fmt), CT2A(remark), newIdInt);
+		if (ret == 0) {
+			UX_RecordAction(L"addVarialbles");
+			m_listCtrl.DeleteAllItems();
+			loadVariables();
+		}
+		else {
+			AfxMessageBox(_T("鏂板鍙橀噺澶辫触锛屾牸寮忔槸鍚︽纭紵(U1/U2/I2/A20/A50/L)"));
+		}
 	}
 	else if (_strcmpi(btnName, "鍒犻櫎") == 0) {
 		POSITION pos = m_listCtrl.GetFirstSelectedItemPosition();
@@ -170,8 +192,15 @@
 		auto pVar = reinterpret_cast<SERVO::CVariable*>(m_listCtrl.GetItemData(nItem));
 		if (pVar == nullptr) return;
 
+		int rc = UX_CanExecute(L"delVarialbles");
+		if (rc != 1) {
+			AfxMessageBox("鎿嶄綔鏉冮檺涓嶈冻锛岃鑱旂郴绠$悊浜哄憳锛�");
+			return;
+		}
 		int ret = theApp.m_model.m_hsmsPassive.deleteVariable(pVar->getVarialbleId());
 		if (ret == 0) {
+			UX_RecordAction(L"delVarialbles");
+
 			m_listCtrl.DeleteAllItems();
 			loadVariables();
 			if (CButton* pDel = GetBtnByName("鍒犻櫎")) pDel->EnableWindow(FALSE);
@@ -179,6 +208,36 @@
 		}
 	}
 	else if (_strcmpi(btnName, "缂栬緫") == 0) {
-		// TODO: 缂栬緫閫昏緫
+		POSITION pos = m_listCtrl.GetFirstSelectedItemPosition();
+		if (pos == nullptr) return;
+		int nItem = m_listCtrl.GetNextSelectedItem(pos);
+		auto pVar = reinterpret_cast<SERVO::CVariable*>(m_listCtrl.GetItemData(nItem));
+		if (pVar == nullptr) return;
+
+		int rc = UX_CanExecute(L"editVarialbles");
+		if (rc != 1) {
+			AfxMessageBox("鎿嶄綔鏉冮檺涓嶈冻锛岃鑱旂郴绠$悊浜哄憳锛�");
+			return;
+		}
+		CVariableEditDlg2 dlg(_T("缂栬緫鍙橀噺"),
+			pVar->getVarialbleId(),
+			CString(CA2T(SERVO::CVariable::formatToString(pVar->getFormat()).c_str())),
+			CString(CA2T(pVar->getName().c_str())),
+			CString(CA2T(pVar->getRemark().c_str())),
+			this);
+		if (dlg.DoModal() != IDOK) return;
+		CString name = dlg.GetNameText();
+		CString fmt = dlg.GetTypeText();
+		CString remark = dlg.GetRemark();
+
+		int ret = theApp.m_model.m_hsmsPassive.updateVariable(pVar->getVarialbleId(), CT2A(name), CT2A(fmt), CT2A(remark));
+		if (ret == 0) {
+			UX_RecordAction(L"editVarialbles");
+			m_listCtrl.DeleteAllItems();
+			loadVariables();
+		}
+		else {
+			AfxMessageBox(_T("缂栬緫鍙橀噺澶辫触锛屾牸寮忔槸鍚︽纭紵(U1/U2/I2/A20/A50/L)"));
+		}
 	}
 }

--
Gitblit v1.9.3