From 5a561e4f9d58723623c3641c79ffb6d395468255 Mon Sep 17 00:00:00 2001
From: mrDarker <mr.darker@163.com>
Date: 星期二, 27 五月 2025 14:45:44 +0800
Subject: [PATCH] 1. 补全port设置界面

---
 SourceCode/Bond/Servo/PortConfigurationDlg.cpp |  132 ++++++++++++++++++++++++++++++++++----------
 1 files changed, 102 insertions(+), 30 deletions(-)

diff --git a/SourceCode/Bond/Servo/PortConfigurationDlg.cpp b/SourceCode/Bond/Servo/PortConfigurationDlg.cpp
index 9c88a9f..b19be21 100644
--- a/SourceCode/Bond/Servo/PortConfigurationDlg.cpp
+++ b/SourceCode/Bond/Servo/PortConfigurationDlg.cpp
@@ -5,6 +5,9 @@
 #include "Servo.h"
 #include "afxdialogex.h"
 #include "PortConfigurationDlg.h"
+#include "NewCellTypes/GridCellCheck.h"
+#include "NewCellTypes/GridCellCombo.h"
+#include "NewCellTypes/GridCellNumeric.h"
 
 
 // CPortConfigurationDlg 瀵硅瘽妗�
@@ -21,8 +24,106 @@
 {
 }
 
+void CPortConfigurationDlg::InitGrid()
+{
+    if (m_wndGrid.GetSafeHwnd() == NULL) {
+        return;
+    }
+
+    const int nCols = 4;
+    const int nFixRows = 1;
+    const int nRows = 9;
+
+    int nColIdx = 0;
+    m_wndGrid.DeleteAllItems();
+    m_wndGrid.SetVirtualMode(FALSE);
+
+    // 璁剧疆鏍峰紡棰滆壊
+    m_wndGrid.GetDefaultCell(TRUE, FALSE)->SetBackClr(g_nGridFixCellColor);
+    m_wndGrid.GetDefaultCell(FALSE, TRUE)->SetBackClr(g_nGridFixCellColor);
+    m_wndGrid.GetDefaultCell(FALSE, FALSE)->SetBackClr(g_nGridCellColor);
+    m_wndGrid.SetFixedTextColor(g_nGridFixFontColor);
+
+    // 琛屽垪鏁伴噺
+    m_wndGrid.SetRowCount(nRows);
+    m_wndGrid.SetColumnCount(nCols);
+    m_wndGrid.SetFixedRowCount(nFixRows);
+    m_wndGrid.SetFixedColumnCount(0);
+
+    // 璁剧疆鍒楀
+    m_wndGrid.SetColumnWidth(nColIdx, 50);
+    m_wndGrid.SetItemText(0, nColIdx++, _T("Slot ID"));
+    m_wndGrid.SetColumnWidth(nColIdx, 150);
+    m_wndGrid.SetItemText(0, nColIdx++, _T("EQ Recipe"));
+    m_wndGrid.SetColumnWidth(nColIdx, 150);
+    m_wndGrid.SetItemText(0, nColIdx++, _T("Panel ID"));
+    m_wndGrid.SetColumnWidth(nColIdx, 60);
+    m_wndGrid.SetItemText(0, nColIdx++, _T("鍚敤"));
+
+    // 璁剧疆琛屼负鏍峰紡
+    m_wndGrid.SetFixedRowSelection(FALSE);
+    m_wndGrid.SetFixedColumnSelection(FALSE);
+    m_wndGrid.SetEditable(TRUE);
+    m_wndGrid.SetRowResize(FALSE);
+    m_wndGrid.SetColumnResize(TRUE);
+    m_wndGrid.SetListMode(TRUE);
+    m_wndGrid.EnableSelection(TRUE);
+    m_wndGrid.SetSingleRowSelection(TRUE);
+    m_wndGrid.ExpandColumnsToFit(TRUE);
+    m_wndGrid.ExpandLastColumn();
+
+    // 鑷姩璁$畻骞惰缃瘡琛岄珮搴�
+    CRect rcClient;
+    m_wndGrid.GetClientRect(&rcClient);
+    int nAvailableHeight = rcClient.Height();
+    int nEachRowHeight = max(24, nAvailableHeight / nRows);
+
+    for (int i = 0; i < nRows; ++i) {
+        m_wndGrid.SetRowHeight(i, nEachRowHeight);
+    }
+
+    FillGrid();
+}
+
+void CPortConfigurationDlg::FillGrid()
+{
+    CStringArray recipeOptions;
+    recipeOptions.Add(_T("Recipe A"));
+    recipeOptions.Add(_T("Recipe B"));
+    recipeOptions.Add(_T("Recipe C"));
+
+    for (int i = 1; i < 9; ++i) {
+        CString strIndex;
+        strIndex.Format(_T("%d"), i);
+        m_wndGrid.SetItemText(i, 0, strIndex);
+        m_wndGrid.SetItemState(i, 0, GVIS_READONLY);
+
+        // EQ Recipe - ComboBox
+        if (m_wndGrid.SetCellType(i, 1, RUNTIME_CLASS(CGridCellCombo))) {
+            CGridCellCombo* pCell = static_cast<CGridCellCombo*>(m_wndGrid.GetCell(i, 1));
+            pCell->SetOptions(recipeOptions);
+            pCell->SetStyle(CBS_DROPDOWNLIST);
+        }
+        m_wndGrid.SetItemText(i, 1, recipeOptions[0]);
+
+        // Panel ID - 鍙紪杈�
+        m_wndGrid.SetItemText(i, 2, _T(""));
+
+        // Checkbox
+        m_wndGrid.SetCellType(i, 3, RUNTIME_CLASS(CGridCellCheck));
+        CGridCellCheck* pCheck = static_cast<CGridCellCheck*>(m_wndGrid.GetCell(i, 3));
+        if (pCheck) {
+            pCheck->SetCheck(FALSE);
+        }
+    }
+
+    m_wndGrid.Invalidate();
+    m_wndGrid.UpdateWindow();
+}
+
 void CPortConfigurationDlg::DoDataExchange(CDataExchange* pDX)
 {
+    DDX_Control(pDX, IDC_GRID_PANEL_RECIPE, m_wndGrid);
 	CDialogEx::DoDataExchange(pDX);
 }
 
@@ -38,36 +139,7 @@
 	CDialogEx::OnInitDialog();
 
 	// TODO:  鍦ㄦ娣诲姞棰濆鐨勫垵濮嬪寲
-        // 缁戝畾鑷畾涔夋帶浠讹紙蹇呴』涓庤祫婧愪腑鐨� ID 涓�鑷达級
-    m_wndGrid.SubclassDlgItem(IDC_GRID_PANEL_RECIPE, this);
-
-    // 璁剧疆琛屽垪鏁�
-    m_wndGrid.SetRowCount(9);        // 鍖呮嫭琛ㄥご1琛� + 鏁版嵁8琛�
-    m_wndGrid.SetColumnCount(4);
-
-    // 璁剧疆鍥哄畾鐨勮〃澶磋
-    m_wndGrid.SetFixedRowCount(1);
-    m_wndGrid.SetFixedColumnCount(0);
-
-    // 璁剧疆鍒楁爣棰�
-    m_wndGrid.SetItemText(0, 0, _T("Slot ID"));
-    m_wndGrid.SetItemText(0, 1, _T("EQ Recipe"));
-    m_wndGrid.SetItemText(0, 2, _T("Panel ID"));
-    m_wndGrid.SetItemText(0, 3, _T("鉁�"));
-
-    // 璁剧疆鍒楀
-    m_wndGrid.SetColumnWidth(0, 60);
-    m_wndGrid.SetColumnWidth(1, 150);
-    m_wndGrid.SetColumnWidth(2, 150);
-    m_wndGrid.SetColumnWidth(3, 40);
-
-    // 濉厖鏁版嵁琛�
-    for (int i = 1; i <= 8; ++i)
-    {
-        CString str;
-        str.Format(_T("%d"), i);
-        m_wndGrid.SetItemText(i, 0, str);
-    }
+    InitGrid();
 
 	return TRUE;  // return TRUE unless you set the focus to a control
 	// 寮傚父: OCX 灞炴�ч〉搴旇繑鍥� FALSE

--
Gitblit v1.9.3