From bea6407b376a4e426f0b120bae569fba6ab867db Mon Sep 17 00:00:00 2001
From: chenluhua1980 <Chenluhua@qq.com>
Date: 星期六, 08 十一月 2025 17:55:47 +0800
Subject: [PATCH] 1.CMaster.cpp 第 1644/1667/1691 行在记录 SV 曲线时通过 getGlassFromSlot(0) 取玻璃,而各设备的 initSlots() 都是从 1 开始编号(例如 CBonder.cpp (line 408)、CVacuumBake.cpp (line 415) 等)。槽位 0 永远不存在,所以 pGlass 始终是 nullptr,pGlass->addSVData(...) 的分支从未执行。结果 SERVO::CGlass::m_svDatas 里没有任何曲线数据,GlassJson::ToPrettyString 生成的 pretty 字符串也就没有 sv_datas,导出 CSV 时自然读不到曲线。 同一段代码还有一个潜在 Bug:虽然判断了 channel - 1 < bonderTypes.size(),但真正索引却用的是 bonderTypes[channel]。索引偏移会导致数据类型错位,最后一个通道甚至可能越界。即使修正了槽位,这里也需要同步改成 bonderTypes[channel - 1](另外两处 vacuumbakeTypes、coolingTypes 也一样)。

---
 SourceCode/Bond/Servo/JobSlotGrid.cpp |   31 ++++++++++++++++++++++++++++---
 1 files changed, 28 insertions(+), 3 deletions(-)

diff --git a/SourceCode/Bond/Servo/JobSlotGrid.cpp b/SourceCode/Bond/Servo/JobSlotGrid.cpp
index 46551e6..32243a9 100644
--- a/SourceCode/Bond/Servo/JobSlotGrid.cpp
+++ b/SourceCode/Bond/Servo/JobSlotGrid.cpp
@@ -1,5 +1,6 @@
 锘�#include "stdafx.h"
 #include "JobSlotGrid.h"
+#include "ServoMemDC.h"
 
 #ifdef _DEBUG
 #define new DEBUG_NEW
@@ -221,13 +222,15 @@
 
 void CJobSlotGrid::OnPaint() {
     CPaintDC dc(this);
-    DrawGrid(&dc);
+    CServoMemDC memDC(&dc);
+    DrawGrid(&memDC);
 }
 
 void CJobSlotGrid::DrawGrid(CDC* pDC)
 {
     CRect rect;
     GetClientRect(&rect);
+	pDC->FillSolidRect(&rect, ::GetSysColor(COLOR_3DFACE)); // 瀹夊叏鑳屾櫙鑹诧紝浠呭唴瀛樼粯鍒�
 
     if (m_nCols == 0 || m_nRows == 0) {
         return;
@@ -257,10 +260,12 @@
             // 閫夋嫨濉厖棰滆壊
             COLORREF fillColor = m_vSlotStatus[i][j] ? m_colorHasJob : m_colorNoJob;
             if (IsSlotClickable(i, j)) {
-                if (bIsClicking)
+                if (bIsClicking) {
                     fillColor = COLOR_CLICK;
-                else if (bIsHover)
+                }
+                else if (bIsHover) {
                     fillColor = COLOR_HOVER;
+                }
             }
 
             // 缁樺埗鑳屾櫙锛堥珮鏁堟浛浠� CBrush锛�
@@ -269,6 +274,26 @@
             // 缁樺埗杈规
             pDC->DrawEdge(&cellRect, EDGE_SUNKEN, BF_RECT);
 
+            // 濡傛灉鏄彲鐐瑰嚮鏍煎瓙锛屽湪宸︿笂瑙掔敾涓�涓皬鍦嗙偣
+            if (IsSlotClickable(i, j)) {
+                constexpr int DOT_RADIUS = 3;
+                int cx = cellRect.left + 5;
+                int cy = cellRect.top + 5;
+
+                // 淇濆瓨鏃х瑪鍜屽埛瀛�
+                CBrush brushDot(RGB(0, 120, 215));
+                CBrush* pOldBrush = pDC->SelectObject(&brushDot);
+                CPen penDot(PS_SOLID, 1, RGB(0, 120, 215));
+                CPen* pOldPen = pDC->SelectObject(&penDot);
+
+                // 缁樺埗鍦嗙偣
+                pDC->Ellipse(cx - DOT_RADIUS, cy - DOT_RADIUS, cx + DOT_RADIUS, cy + DOT_RADIUS);
+
+                // 鎭㈠
+                pDC->SelectObject(pOldBrush);
+                pDC->SelectObject(pOldPen);
+            }
+
             // 鑾峰彇鏂囧瓧锛堝畨鍏級
             CString strText;
             if (i < m_vSlotText.size() && j < m_vSlotText[i].size()) {

--
Gitblit v1.9.3