| | |
| | | #include <vector> |
| | | #include <string> |
| | | |
| | | #define PAGE_SIZE 10 |
| | | #define PAGE_SIZE 50 |
| | | #define PAGE_BACKGROUND_COLOR RGB(252, 252, 255) |
| | | |
| | | // WIP 颜色:父(根/无 buddy)= 基础绿;子(buddy)= 更浅 |
| | | static const COLORREF kWipText = RGB(0, 0, 0); |
| | | static const COLORREF kWipParentBk = RGB(201, 228, 180); // 基础绿 |
| | | static const COLORREF kWipChildBk = RGB(221, 241, 208); // 更浅一点 |
| | | |
| | | // ===== 放在 CPageGlassList.cpp 顶部的匿名工具(文件内静态) ===== |
| | | // 把当前“已展开”的父行,用它们的 classId(第4列文本)做 key 记录下来 |
| | |
| | | // 4 组跨页配对(每组中间插 3 条“单条”) |
| | | for (int k = 101; k <= 104; ++k) mkPair(k, true); |
| | | // 若干“单条” |
| | | for (int u = 201; u < 206; ++u) { |
| | | for (int u = 201; u < 806; ++u) { |
| | | CString cid; cid.Format(_T("U%04d"), u); |
| | | outAll.push_back(FakeDbRecord{ |
| | | id++, 500 + u, 600 + u, toAnsi(cid), |
| | |
| | | |
| | | auto* nParent = m_listCtrl.InsertRoot(pcols); |
| | | MaybeRestoreExpandByKey(nParent, expandedKeys); |
| | | m_listCtrl.SetNodeColor(nParent, RGB(0, 0, 0), RGB(201, 228, 180)); |
| | | m_listCtrl.SetNodeColor(nParent, kWipText, kWipParentBk); // 父:基础绿 |
| | | |
| | | std::vector<CString> ccols(colCount); |
| | | ccols[1] = _T(""); |
| | |
| | | ccols[12] = child->getParamsDescription().c_str(); |
| | | |
| | | auto* nChild = m_listCtrl.InsertChild(nParent, ccols); |
| | | m_listCtrl.SetNodeColor(nChild, RGB(0, 0, 0), RGB(201, 228, 180)); |
| | | m_listCtrl.SetNodeColor(nChild, kWipText, kWipChildBk); // 子:更浅 |
| | | |
| | | usedWip.insert(parent); |
| | | usedWip.insert(child); |
| | |
| | | cols[12] = g->getParamsDescription().c_str(); |
| | | |
| | | auto* n = m_listCtrl.InsertRoot(cols); |
| | | m_listCtrl.SetNodeColor(n, RGB(0, 0, 0), RGB(201, 228, 180)); |
| | | m_listCtrl.SetNodeColor(n, kWipText, kWipParentBk); // 仍用基础绿 |
| | | usedWip.insert(g); |
| | | } |
| | | } |
| | |
| | | std::vector<SERVO::CGlass*> wipGlasses; |
| | | theApp.m_model.m_master.getWipGlasses(wipGlasses); |
| | | std::vector<SERVO::CGlass*> tempRetain = wipGlasses; // 稍后统一 release |
| | | /* |
| | | static int i = 0; |
| | | i++; |
| | | if (i == 8) { |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | */ |
| | | auto makeColsFromWip = [&](SERVO::CGlass* g) { |
| | | std::vector<CString> cols(colCount); |
| | | cols[1] = _T(""); // WIP 没 DB id |
| | |
| | | needRebuildChildren = true; |
| | | auto cols = makeColsFromWip(b); |
| | | auto* ch = m_listCtrl.InsertChild(container, cols); |
| | | m_listCtrl.SetNodeColor(ch, RGB(0, 0, 0), RGB(201, 228, 180)); |
| | | m_listCtrl.SetNodeColor(ch, kWipText, kWipChildBk); // 子:更浅 |
| | | m_listCtrl.SetNodeColor(container, kWipText, kWipParentBk); // 父:基础绿(兜底纠正) |
| | | } |
| | | // 若已有子:顺带把子行文本刷新一下(比如 AOI 更新) |
| | | else if (hasChildAlready) { |
| | |
| | | // 可见行刷新 |
| | | for (int r = 0; r < m_listCtrl.GetItemCount(); ++r) { |
| | | if (m_listCtrl.GetNodeByVisibleIndex(r) == ch.get()) { |
| | | for (int c = 1; c < (int)cols.size(); ++c) |
| | | for (int c = 1; c < (int)cols.size(); ++c) { |
| | | m_listCtrl.SetItemText(r, c, cols[c]); |
| | | m_listCtrl.SetNodeColor(ch.get(), kWipText, kWipChildBk); // 保证子行是浅色 |
| | | m_listCtrl.SetNodeColor(container, kWipText, kWipParentBk); // 父保持基础绿 |
| | | } |
| | | rowsToRedraw.push_back(r); |
| | | break; |
| | | } |