From 0756bf12d10cf1b7f78c571de0a9ad69cbaeb7ca Mon Sep 17 00:00:00 2001
From: curtis <curtis@i-mps.com>
Date: 星期一, 30 三月 2026 14:24:17 +0800
Subject: [PATCH] fix: 更新內部引用方法參照

---
 doc/curtis/prompt/scanimpl_analysis/scanimpl_annalysis.UIView.json | 5535 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 5,535 insertions(+), 0 deletions(-)

diff --git a/doc/curtis/prompt/scanimpl_analysis/scanimpl_annalysis.UIView.json b/doc/curtis/prompt/scanimpl_analysis/scanimpl_annalysis.UIView.json
new file mode 100644
index 0000000..e577acf
--- /dev/null
+++ b/doc/curtis/prompt/scanimpl_analysis/scanimpl_annalysis.UIView.json
@@ -0,0 +1,5535 @@
+[
+  {
+    "matcher": "function TCB_IMGPSScanX.GetCurrentVersionNo: String; //獲取自身版本號所需要",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "其他內部"
+    ],
+    "deps": [],
+    "lIndex": "1052",
+    "rIndex": "1085",
+    "description": "獲取當前模組的版本號。透過 GetModuleFileName 獲取檔案路徑,再利用 GetFileVersionInfoSize 和 GetFileVersionInfo 讀取版本資訊。接著從 VarFileInfo\\Translation 取得語系資訊,最後從 StringFileInfo 中提取 FileVersion 並回傳為字串。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.WMMOUSEWHEEL(var message: TWMMouseWheel);",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "其他內部"
+    ],
+    "deps": [],
+    "lIndex": "1086",
+    "rIndex": "1171",
+    "description": "處理滑鼠滾輪事件。根據滾輪捲動方向(WHEEL_DELTA)對 ScrollBox1 或當前顯示的影像捲軸盒(DisplayISB)進行垂直捲動(SB_Lineup 或 SB_LINEDOWN)。若同時按下特定鍵(message.Keys=50),則會調整影像的縮放百分比(ZoomPercent)。此外也會遍歷所有影像捲軸盒元件並對取得焦點的元件執行捲動操作。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.WNoteBtnClick(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.toolBar"
+    ],
+    "deps": [
+      "FileExists",
+      "LoadFromFile",
+      "SaveToFile"
+    ],
+    "lIndex": "1172",
+    "rIndex": "1246",
+    "description": "開啟備註編輯視窗。首先初始化多國語言並從 MEMO_INF_List 載入註記範本資訊。若存在 Scan_Memo.dat,則讀取既有的註記內容。顯示 TSortMemoForm 供使用者編輯,確認後將編輯結果存回 Scan_Memo.dat。最後視需要觸發 CaseHelpBtnClick 以更新狀態。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.DefinePropertyPages(DefinePropertyPage: TDefinePropertyPage);",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "初始化與生命週期"
+    ],
+    "deps": [],
+    "lIndex": "1247",
+    "rIndex": "1253",
+    "description": "Delphi ActiveForm 用於定義屬性頁面的存根方法,目前未實作具體內容。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.EventSinkChanged(const EventSink: IUnknown);",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "初始化與生命週期"
+    ],
+    "deps": [],
+    "lIndex": "1254",
+    "rIndex": "1259",
+    "description": "當事件接收器改變時觸發。將傳入的 EventSink 轉換為 ICB_IMGPSScanXEvents 並賦值給 FEvents,同時呼叫繼承的 EventSinkChanged 方法。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.FC0Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.toolBar"
+    ],
+    "deps": [],
+    "lIndex": "1260",
+    "rIndex": "1270",
+    "description": "工具列功能按鈕 0 的點擊處理。若重複點擊則關閉影像顯示(DesableImage),否則啟用索引為 0 的影像顯示(EnableImage)並更新 NowClick 狀態。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.FC1Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.toolBar"
+    ],
+    "deps": [],
+    "lIndex": "1271",
+    "rIndex": "1281",
+    "description": "工具列功能按鈕 1 的點擊處理。若重複點擊則關閉影像顯示,否則啟用索引為 1 的影像顯示並更新 NowClick 狀態。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.FC2Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.toolBar"
+    ],
+    "deps": [],
+    "lIndex": "1282",
+    "rIndex": "1292",
+    "description": "工具列功能按鈕 2 的點擊處理。若重複點擊則關閉影像顯示,否則啟用索引為 2 的影像顯示並更新 NowClick 狀態。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.FC3Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.toolBar"
+    ],
+    "deps": [],
+    "lIndex": "1293",
+    "rIndex": "1303",
+    "description": "工具列功能按鈕 3 的點擊處理。若重複點擊則關閉影像顯示,否則啟用索引為 3 的影像顯示並更新 NowClick 狀態。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.FC4Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.toolBar"
+    ],
+    "deps": [],
+    "lIndex": "1304",
+    "rIndex": "1314",
+    "description": "工具列功能按鈕 4 的點擊處理。若重複點擊則關閉影像顯示,否則啟用索引為 4 的影像顯示並更新 NowClick 狀態。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.FC5Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.toolBar"
+    ],
+    "deps": [],
+    "lIndex": "1315",
+    "rIndex": "1325",
+    "description": "工具列功能按鈕 5 的點擊處理。若重複點擊則關閉影像顯示,否則啟用索引為 5 的影像顯示並更新 NowClick 狀態。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.FC6Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.toolBar"
+    ],
+    "deps": [],
+    "lIndex": "1326",
+    "rIndex": "1337",
+    "description": "工具列功能按鈕 6 的點擊處理。目前的實作已註解掉原有的影像啟用邏輯,改為直接呼叫 PM605Click(nil),即觸發右鍵選單中的刪除影像功能。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.InitExistImgList(casepath: String);",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "其他內部"
+    ],
+    "deps": [
+      "LoadFileGetMD5",
+      "LoadFromFile"
+    ],
+    "lIndex": "1338",
+    "rIndex": "1362",
+    "description": "初始化已存在的影像清單。讀取案件路徑下 Download\\Context.dat 的檔案內容,計算每個檔案的 MD5 雜湊值並存入 ExistImgList,同時將處理過程記錄至日誌檔。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Initialize;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "TDibGraphic"
+    ],
+    "lIndex": "1363",
+    "rIndex": "1386",
+    "description": "初始化元件狀態。註冊各類視窗與滑鼠事件處理函式(如 OnActivate, OnClick, OnCreate 等),並設定多項預設參數,包含 MpsKey、瀏覽窗邊界、檔案副檔名、案件與表單編號長度、去直線容忍值及切圖條碼類型。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.ISB1Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.scrollView"
+    ],
+    "deps": [],
+    "lIndex": "1387",
+    "rIndex": "1406",
+    "description": "影像滾輪盒(ISB)的點擊處理。更新當前顯示的 ISB 對象,調整 Shape1 標記框的位置以框選當前 ISB。根據 ISB 名稱與捲軸位置計算並更新 PageLV 清單中的選取狀態(NowPage 與 ItemIndex)。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.ISB1EndScroll(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.scrollView"
+    ],
+    "deps": [],
+    "lIndex": "1407",
+    "rIndex": "1421",
+    "description": "當影像滾輪盒停止捲動時觸發。呼叫 SetScrollData 將當前的水平/垂直捲軸位置與縮放百分比存回緩存中,以維持影像顯示的一致性。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.ISB1Enter(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.scrollView"
+    ],
+    "deps": [],
+    "lIndex": "1422",
+    "rIndex": "1426",
+    "description": "當滑鼠進入影像滾輪盒區域時,強制將焦點設為 ISB1。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.ISB1ImageMouseDown(Sender: TObject; Button: TMouseButton;",
+    "tags": [
+      "UIView",
+      "UIView.scrollView"
+    ],
+    "deps": [
+      "LoadFromFile"
+    ],
+    "lIndex": "1427",
+    "rIndex": "1463",
+    "description": "影像滑鼠按下事件。設定當前 DisplayISB 並視情況取得焦點,更新 Shape1 的選取框位置。同步更新 PageLV 的選取頁面。若處於特定模式(NowClick = -1)且按下左鍵,則啟動影像的拖曳操作(BeginDrag)。此外也會處理旋轉模式下的影像載入。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.ISB1ImageMouseMove(Sender: TObject; Shift: TShiftState;",
+    "tags": [
+      "UIView",
+      "UIView.scrollView"
+    ],
+    "deps": [],
+    "lIndex": "1464",
+    "rIndex": "1489",
+    "description": "影像滑鼠移動事件。根據當前是否有載入影像檔案,動態切換滑鼠模式(MouseMode)。若無檔案則設為使用者模式(mmUser),否則根據 NowClick 狀態呼叫 ViewMouseMode 切換至對應的檢視模式。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.ISB1ImageMouseUp(Sender: TObject; Button: TMouseButton;",
+    "tags": [
+      "UIView",
+      "UIView.scrollView"
+    ],
+    "deps": [
+      "SaveQuality",
+      "SaveToFile",
+      "TJpegGraphic"
+    ],
+    "lIndex": "1490",
+    "rIndex": "1524",
+    "description": "影像滑鼠放開事件。處理多種滑鼠模式:在 mmDelete 模式下觸發刪除功能;在旋轉模式(mmR90等)下儲存旋轉後的影像檔案,並同步更新預覽圖(SelectISB)與清空檢核記錄。最後針對縮放或拖曳模式更新捲軸位置數據。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_Active: WordBool;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1525",
+    "rIndex": "1529",
+    "description": "獲取元件的 Active 狀態。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_AlignDisabled: WordBool;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1530",
+    "rIndex": "1534",
+    "description": "獲取元件的 AlignDisabled 狀態。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_AlignWithMargins: WordBool;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1535",
+    "rIndex": "1539",
+    "description": "獲取元件的 AlignWithMargins 狀態。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_AutoScroll: WordBool;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1540",
+    "rIndex": "1544",
+    "description": "獲取元件的 AutoScroll 狀態。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_AutoSize: WordBool;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1545",
+    "rIndex": "1549",
+    "description": "獲取元件的 AutoSize 狀態。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_AxBorderStyle: TxActiveFormBorderStyle;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1550",
+    "rIndex": "1554",
+    "description": "獲取元件的 AxBorderStyle 邊框樣式。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_Caption: WideString;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1555",
+    "rIndex": "1559",
+    "description": "獲取元件的標題文字。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_Color: OLE_COLOR;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1560",
+    "rIndex": "1564",
+    "description": "獲取元件的背景顏色。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_DockSite: WordBool;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1565",
+    "rIndex": "1569",
+    "description": "獲取元件的 DockSite 狀態。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_DoubleBuffered: WordBool;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1570",
+    "rIndex": "1574",
+    "description": "獲獲取元件的 DoubleBuffered 狀態。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_DropTarget: WordBool;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1575",
+    "rIndex": "1579",
+    "description": "獲取元件的 DropTarget 狀態。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_Enabled: WordBool;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1580",
+    "rIndex": "1584",
+    "description": "獲取元件的啟用狀態。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_ExplicitHeight: Integer;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1585",
+    "rIndex": "1589",
+    "description": "獲取元件的明確高度。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_ExplicitLeft: Integer;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1590",
+    "rIndex": "1594",
+    "description": "獲取元件的明確左座標。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_ExplicitTop: Integer;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1595",
+    "rIndex": "1599",
+    "description": "獲取元件的明確頂座標。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_ExplicitWidth: Integer;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1600",
+    "rIndex": "1604",
+    "description": "獲取元件的明確寬度。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_Font: IFontDisp;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1605",
+    "rIndex": "1609",
+    "description": "獲取元件的字型。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_HelpFile: WideString;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1610",
+    "rIndex": "1614",
+    "description": "獲取元件的說明檔路徑。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_KeyPreview: WordBool;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1615",
+    "rIndex": "1619",
+    "description": "獲取元件的鍵盤預覽狀態。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_MouseInClient: WordBool;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1620",
+    "rIndex": "1624",
+    "description": "獲取滑鼠是否在元件內部區域。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_ParentCustomHint: WordBool;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1625",
+    "rIndex": "1629",
+    "description": "獲取元件的 ParentCustomHint 狀態。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_ParentDoubleBuffered: WordBool;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1630",
+    "rIndex": "1634",
+    "description": "獲取元件的 ParentDoubleBuffered 狀態。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_PixelsPerInch: Integer;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1635",
+    "rIndex": "1639",
+    "description": "獲取元件的 PixelsPerInch 設定。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_PopupMode: TxPopupMode;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1640",
+    "rIndex": "1644",
+    "description": "獲取元件的彈出視窗模式。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_PrintScale: TxPrintScale;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1645",
+    "rIndex": "1649",
+    "description": "獲取元件的列印縮放比例。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_Scaled: WordBool;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1650",
+    "rIndex": "1654",
+    "description": "獲取元件的 Scaled 縮放狀態。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_ScreenSnap: WordBool;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1655",
+    "rIndex": "1659",
+    "description": "獲取元件的 ScreenSnap 狀態。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_SnapBuffer: Integer;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1660",
+    "rIndex": "1664",
+    "description": "獲取元件的 SnapBuffer 設定。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_UseDockManager: WordBool;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1665",
+    "rIndex": "1669",
+    "description": "獲取元件是否使用 Dock 管理。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_Visible: WordBool;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1670",
+    "rIndex": "1674",
+    "description": "獲取元件的顯示狀態。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_VisibleDockClientCount: Integer;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1675",
+    "rIndex": "1679",
+    "description": "獲取元件的可見 Dock 客戶端數量。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX._Set_Font(var Value: IFontDisp);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1680",
+    "rIndex": "1684",
+    "description": "設定元件的字型。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.ActivateEvent(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "初始化與生命週期"
+    ],
+    "deps": [],
+    "lIndex": "1685",
+    "rIndex": "1689",
+    "description": "觸發 COM 介面的 OnActivate 事件。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.ClickEvent(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "初始化與生命週期"
+    ],
+    "deps": [],
+    "lIndex": "1690",
+    "rIndex": "1694",
+    "description": "觸發 COM 介面的 OnClick 事件。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.CreateEvent(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "初始化與生命週期"
+    ],
+    "deps": [],
+    "lIndex": "1695",
+    "rIndex": "1699",
+    "description": "觸發 COM 介面的 OnCreate 事件。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.DblClickEvent(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "初始化與生命週期"
+    ],
+    "deps": [],
+    "lIndex": "1700",
+    "rIndex": "1704",
+    "description": "觸發 COM 介面的 OnDblClick 事件。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.DeactivateEvent(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "初始化與生命週期"
+    ],
+    "deps": [],
+    "lIndex": "1705",
+    "rIndex": "1709",
+    "description": "觸發 COM 介面的 OnDeactivate 事件。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.DestroyEvent(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "初始化與生命週期"
+    ],
+    "deps": [
+      "_DelTree"
+    ],
+    "lIndex": "1710",
+    "rIndex": "1755",
+    "description": "銷毀元件時的清理工作。負責釋放大量的 TStringList 物件,包含各類資訊清單(表單、規則、註記、工作、影像路徑、條碼等)。針對特定模式(DSCAN/ESCAN),若 ImagePath 不為空則刪除該目錄及其子目錄。最後觸發 COM 介面的 OnDestroy 事件。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.KeyPressEvent(Sender: TObject; var Key: Char);",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "初始化與生命週期"
+    ],
+    "deps": [],
+    "lIndex": "1756",
+    "rIndex": "1764",
+    "description": "處理鍵盤按鈕事件,並將按鍵資訊傳遞至 COM 介面的 OnKeyPress 事件。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.mode1Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1765",
+    "rIndex": "1772",
+    "description": "切換至檢視模式 0(單頁顯示),呼叫 GoViewMode 更新佈局,並隱藏 Panel14 控制面版。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.mode2Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1773",
+    "rIndex": "1780",
+    "description": "切換至檢視模式 1(兩頁顯示),呼叫 GoViewMode 更新佈局,並顯示 Panel14 控制面版。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.mode3Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1781",
+    "rIndex": "1787",
+    "description": "切換至檢視模式 2(多頁網格顯示),呼叫 GoViewMode 更新佈局,並觸發捲軸變動以重新載入影像。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.mode4Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1788",
+    "rIndex": "1794",
+    "description": "切換至檢視模式 3(自定義檢視模式),呼叫 GoViewMode 更新佈局,並觸發捲軸變動以重新載入影像。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.MouseEnterEvent(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "初始化與生命週期"
+    ],
+    "deps": [],
+    "lIndex": "1795",
+    "rIndex": "1799",
+    "description": "當滑鼠進入元件時,觸發 COM 介面的 OnMouseEnter 事件。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.MouseLeaveEvent(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "初始化與生命週期"
+    ],
+    "deps": [],
+    "lIndex": "1800",
+    "rIndex": "1804",
+    "description": "當滑鼠離開元件時,觸發 COM 介面的 OnMouseLeave 事件。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.PaintEvent(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "初始化與生命週期"
+    ],
+    "deps": [],
+    "lIndex": "1805",
+    "rIndex": "1809",
+    "description": "當元件需要重繪時,觸發 COM 介面的 OnPaint 事件。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_AlignWithMargins(Value: WordBool);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1810",
+    "rIndex": "1814",
+    "description": "設定元件的 AlignWithMargins 屬性。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_AutoScroll(Value: WordBool);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1815",
+    "rIndex": "1819",
+    "description": "設定元件的 AutoScroll 屬性。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_AutoSize(Value: WordBool);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1820",
+    "rIndex": "1824",
+    "description": "設定元件的 AutoSize 屬性。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_AxBorderStyle(Value: TxActiveFormBorderStyle);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1825",
+    "rIndex": "1829",
+    "description": "設定元件的 AxBorderStyle 屬性。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_Caption(const Value: WideString);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1830",
+    "rIndex": "1834",
+    "description": "設定元件的標題文字。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_Color(Value: OLE_COLOR);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1835",
+    "rIndex": "1839",
+    "description": "設定元件的背景顏色。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_DockSite(Value: WordBool);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1840",
+    "rIndex": "1844",
+    "description": "設定元件的 DockSite 屬性。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_DoubleBuffered(Value: WordBool);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1845",
+    "rIndex": "1849",
+    "description": "設定元件的 DoubleBuffered 屬性。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_DropTarget(Value: WordBool);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1850",
+    "rIndex": "1854",
+    "description": "設定元件的 DropTarget 屬性。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_Enabled(Value: WordBool);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1855",
+    "rIndex": "1859",
+    "description": "設定元件的啟用狀態。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_Font(const Value: IFontDisp);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1860",
+    "rIndex": "1864",
+    "description": "設定元件的字型。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_HelpFile(const Value: WideString);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1865",
+    "rIndex": "1869",
+    "description": "設定元件的說明檔路徑。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_KeyPreview(Value: WordBool);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1870",
+    "rIndex": "1874",
+    "description": "設定元件的鍵盤預覽狀態。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_ParentCustomHint(Value: WordBool);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1875",
+    "rIndex": "1879",
+    "description": "設定元件的 ParentCustomHint 屬性。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_ParentDoubleBuffered(Value: WordBool);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1880",
+    "rIndex": "1884",
+    "description": "設定元件的 ParentDoubleBuffered 屬性。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_PixelsPerInch(Value: Integer);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1885",
+    "rIndex": "1889",
+    "description": "設定元件的 PixelsPerInch 屬性。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_PopupMode(Value: TxPopupMode);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1890",
+    "rIndex": "1894",
+    "description": "設定元件的彈出視窗模式。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_PrintScale(Value: TxPrintScale);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1895",
+    "rIndex": "1899",
+    "description": "設定元件的列印縮放比例。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_Scaled(Value: WordBool);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1900",
+    "rIndex": "1904",
+    "description": "設定元件的 Scaled 屬性。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_ScreenSnap(Value: WordBool);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1905",
+    "rIndex": "1909",
+    "description": "設定元件的 ScreenSnap 屬性。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_SnapBuffer(Value: Integer);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1910",
+    "rIndex": "1914",
+    "description": "設定元件的 SnapBuffer 屬性。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_UseDockManager(Value: WordBool);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1915",
+    "rIndex": "1919",
+    "description": "設定元件是否使用 Dock 管理。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_Visible(Value: WordBool);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "1920",
+    "rIndex": "1924",
+    "description": "設定元件的顯示狀態。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.PM401Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.popupMenu"
+    ],
+    "deps": [
+      "FileExists",
+      "GetNoNameCase",
+      "LoadFromFile",
+      "RenameFile",
+      "SaveToFile",
+      "Str2Dir"
+    ],
+    "lIndex": "1925",
+    "rIndex": "1978",
+    "description": "影像列表右鍵選單功能:從指定頁面分出新案。確認使用者選取的分案起點(不能為第一頁)後,取得新的流水案號並建立目錄。將原案件中該頁碼之後的所有影像檔案更名並搬移至新案目錄,同步更新原案與新案的 Context.dat 與 CaseIndex.dat。完成後重新載入影像列表並提示完成。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.PM402Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.popupMenu"
+    ],
+    "deps": [],
+    "lIndex": "1979",
+    "rIndex": "1988",
+    "description": "將影像列表(PageLV)中的所有項目設為選取狀態。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.PM403Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.popupMenu"
+    ],
+    "deps": [],
+    "lIndex": "1989",
+    "rIndex": "1998",
+    "description": "將影像列表(PageLV)中的所有項目設為取消選取狀態。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.PM404Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.popupMenu"
+    ],
+    "deps": [],
+    "lIndex": "1999",
+    "rIndex": "2067",
+    "description": "影像列表右鍵選單功能:文件歸類。開啟 TDocListForm 顯示可用的表單清單供使用者選擇。確認後根據當前 TreeView 的選取層級(案件級別、文件級別或特定表單),呼叫 PageReplaceFormID 將影像重新歸類至選定的表單類型。歸類完成後重新繪製樹狀結構並清空檢核記錄,最後回到原先選取的節點。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.PM601Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.popupMenu"
+    ],
+    "deps": [
+      "CopyFile",
+      "DeleteImageFile",
+      "DirectoryExists",
+      "FileExists",
+      "LoadFromFile",
+      "ReSortFileName",
+      "RenameFile",
+      "SaveToFile"
+    ],
+    "lIndex": "2068",
+    "rIndex": "2221",
+    "description": "縮圖瀏覽區右鍵選單功能:文件歸類。針對所有被選取(由 Shape 標記)的影像,開啟 TDocListForm 選擇目標表單。核心邏輯包含:判斷目標文件是否需要區分份數、自動產生新的文件目錄或沿用既有目錄、根據檔案序號產生新檔名、執行檔案複製並更新 ContextList。最後刪除原檔案、重新排序原目錄並重新繪製樹狀結構。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.PM602Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.popupMenu"
+    ],
+    "deps": [
+      "CopyFile",
+      "DeleteImageFile",
+      "FileExists",
+      "LoadFromFile",
+      "ReSortFileName",
+      "SaveToFile",
+      "Str2Dir"
+    ],
+    "lIndex": "2222",
+    "rIndex": "2300",
+    "description": "縮圖瀏覽區右鍵選單功能:歸類至自定義文件。彈出對話框要求使用者輸入新文件名稱,檢核名稱是否重複後產生新的自定義文件編號。接著將所有選取的影像複製到新建立的文件目錄下,更新 ContextList並刪除原檔案。最後重新排序並刷新樹狀顯示。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.PM604Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.popupMenu"
+    ],
+    "deps": [
+      "DeskewImg",
+      "LoadFromFile",
+      "SaveToFile"
+    ],
+    "lIndex": "2301",
+    "rIndex": "2323",
+    "description": "縮圖瀏覽區右鍵選單功能:自動去偏斜(Deskew)。遍歷所有選取的影像元件,對其 Graphic 執行 DeskewImg 操作,重新繪製並將結果存回原檔案。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.PM605Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.popupMenu"
+    ],
+    "deps": [
+      "DeleteImageFile",
+      "ReSortFileName"
+    ],
+    "lIndex": "2324",
+    "rIndex": "2361",
+    "description": "縮圖瀏覽區右鍵選單功能:刪除影像。在使用者確認後,遍歷所有選取的影像元件,呼叫 DeleteImageFile 刪除實際檔案。刪除完成後,執行檔案重新排序(ReSortFileName),更新樹狀結構上的頁數統計文字,並刷新顯示。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.N1Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "2362",
+    "rIndex": "2372",
+    "description": "彈出對話框要求使用者輸入目標頁碼,呼叫 MoveImage 將當前顯示的影像移動到指定的位置。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.N51Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "2373",
+    "rIndex": "2379",
+    "description": "切換至檢視模式 4,呼叫 GoViewMode 更新佈局,並觸發捲軸變動以重新載入影像。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.NewScanBtnClick(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.toolBar"
+    ],
+    "deps": [
+      "StatrTwainScan"
+    ],
+    "lIndex": "2380",
+    "rIndex": "2427",
+    "description": "點擊「新案掃瞄」按鈕的處理。首先檢查初始化狀態。針對重掃(RSCAN)、異動(ESCAN)或重掃指定件(DSCAN),會自動選取新件節點並觸發追加掃瞄。若是全新掃瞄,則重設掃瞄模式與路徑,清空清單,最後呼叫 StatrTwainScan 啟動掃瞄程序,並在結束後重新載入影像檔案。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.NextPageBtnClick(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.toolBar"
+    ],
+    "deps": [],
+    "lIndex": "2428",
+    "rIndex": "2450",
+    "description": "處理「下一頁」按鈕點擊。若有選取影像,則呼叫 NextPage 跳轉至下一頁,並判斷選取影像的位置是否超出目前滾輪區域的高度,若是則自動調整 ScrollBox1 的垂直捲軸位置,以確保新頁面影像能正確顯示在視線範圍內。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.OptionBtnClick(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.toolBar"
+    ],
+    "deps": [
+      "Scanner"
+    ],
+    "lIndex": "2451",
+    "rIndex": "2527",
+    "description": "處理「掃瞄參數設定」按鈕點擊。首先確認系統初始化是否完成,接著建立 TPatchDlg 對話框並載入多國語言。將目前的掃瞄設定(如自動刪除空白頁、DPI、單/雙面、反白、去邊、去偏斜、亮度、對比、旋轉角度及顯示模式等)同步至對話框。使用者完成設定後,將新參數存回系統變數,並呼叫 R_W_ScanIni 將設定寫入設定檔。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.PageLVClick(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.listView"
+    ],
+    "deps": [],
+    "lIndex": "2528",
+    "rIndex": "2535",
+    "description": "處理影像列表點擊。選取項目後同步更新 ScrollBar1 的位置。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.PageLVKeyUp(Sender: TObject; var Key: Word;",
+    "tags": [
+      "UIView",
+      "UIView.listView"
+    ],
+    "deps": [],
+    "lIndex": "2536",
+    "rIndex": "2542",
+    "description": "處理影像列表按鍵放開事件。若有選取項目,則同步更新 ScrollBar1 的位置。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.PageLVMouseDown(Sender: TObject; Button: TMouseButton;",
+    "tags": [
+      "UIView",
+      "UIView.listView"
+    ],
+    "deps": [],
+    "lIndex": "2543",
+    "rIndex": "2554",
+    "description": "處理影像列表滑鼠按下事件。若是右鍵,則選取該項目並彈出右鍵選單。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Panel11DblClick(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "2555",
+    "rIndex": "2561",
+    "description": "Panel11 的連按兩下事件,目前實作已註解掉。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Panel1DblClick(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "2562",
+    "rIndex": "2567",
+    "description": "Panel1 的連按兩下事件,用於切換 Button1 與 Button2 的顯示狀態。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Panel9Resize(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "2568",
+    "rIndex": "2572",
+    "description": "當 Panel9 大小改變時,呼叫 GoViewMode 重新調整影像佈局。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.PM101Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.popupMenu"
+    ],
+    "deps": [
+      "DeleteDocNoFile",
+      "DirectoryExists",
+      "_DelTree"
+    ],
+    "lIndex": "2573",
+    "rIndex": "2677",
+    "description": "處理樹狀結構(TreeView)的右鍵刪除選單。根據選取的節點類型(新掃瞄件、案件、文件或表單)執行不同範圍的刪除:包含刪除實體目錄、清空影像清單、更新案件索引及檢核記錄。針對異動模式(ESCAN),若刪除後無影像則會重建空案件以維持結構。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.DocNoIsExistImg(DocNopath:String):boolean;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "FileExists",
+      "LoadFromFile"
+    ],
+    "lIndex": "2678",
+    "rIndex": "2701",
+    "description": "檢查指定的文件目錄路徑下是否存在影像檔案。首先讀取目錄中的 Context.dat 檔案,接著遍歷清單中的所有檔名並檢查實際檔案是否存在。若發現任何一個影像檔案存在則回傳 False(表示非空),否則回傳 True。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX._DelTreeForExistImg(ASourceDir:String);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "_DelTree"
+    ],
+    "lIndex": "2702",
+    "rIndex": "2709",
+    "description": "存根方法,目前未包含具體實作邏輯。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.PM102Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.popupMenu"
+    ],
+    "deps": [
+      "DirectoryExists",
+      "RenameFile"
+    ],
+    "lIndex": "2710",
+    "rIndex": "2750",
+    "description": "處理「修改案件編號」右鍵選單。彈出輸入盒要求輸入新編號並驗證長度與是否重複。確認修改後,先清空當前影像顯示,接著執行磁碟目錄更名並更新案件清單文字。最後重新繪製該案件的文件樹狀結構並提示完成。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.PM103Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.popupMenu"
+    ],
+    "deps": [],
+    "lIndex": "2751",
+    "rIndex": "2788",
+    "description": "處理樹狀結構的「掃瞄/追加掃瞄」右鍵選單。根據選取的節點層級,決定是啟動全新的案件掃瞄程序(NewScanBtnClick)或是針對現有案件進行追加掃瞄(AddScanBtnclick),並在日誌中記錄操作行為。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.PM104Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.popupMenu"
+    ],
+    "deps": [
+      "CheckNeedCrop",
+      "ConvertToBW",
+      "ConvertToGray",
+      "CropImg",
+      "DeskewImg",
+      "DirectoryExists",
+      "FJpgCompression",
+      "FileExists",
+      "FindFirst",
+      "GetNoNameCase",
+      "LoadFromFile",
+      "MpsGetBarcode",
+      "Rotate",
+      "SaveQuality",
+      "SaveToFile",
+      "Str2Dir",
+      "TJpegGraphic",
+      "TTiffGraphic",
+      "_DelTree",
+      "ifBlackWhite",
+      "ifColor25",
+      "ifGray256",
+      "ifTrueColor",
+      "tcGroup4",
+      "tcJpeg"
+    ],
+    "lIndex": "2789",
+    "rIndex": "3186",
+    "description": "處理「匯入影像檔案」右鍵選單。開啟檔案對話框選取 TIF/JPG/PNG 檔,並檢查檔案大小是否超過限制。核心流程包含:計算總頁數、逐頁載入、執行自動去偏斜(Deskew)、條碼辨識以判斷 FormID、處理 A3 切圖(左右分割)、將影像轉換為對應格式(黑白轉 TIF G4,彩色/灰階轉 JPG)並寫入磁碟,最後更新索引、樹狀結構與頁數統計。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.PM106Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.popupMenu"
+    ],
+    "deps": [
+      "CopyFile",
+      "LoadFromFile",
+      "SaveToFile"
+    ],
+    "lIndex": "3187",
+    "rIndex": "3280",
+    "description": "處理「複製文件」右鍵選單。開啟對話框供使用者選擇來源文件與目標案件。使用者確認後,遍歷目標案件並將符合條件的來源影像複製到目標目錄下,同步產生新的序號檔名、更新目標案件的 Context.dat 並清空其檢核記錄。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.PM107Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.popupMenu"
+    ],
+    "deps": [],
+    "lIndex": "3281",
+    "rIndex": "3285",
+    "description": "觸發右鍵選單中的備註點擊事件。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.PM108Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.popupMenu"
+    ],
+    "deps": [],
+    "lIndex": "3286",
+    "rIndex": "3381",
+    "description": "處理樹狀結構的「文件歸類」右鍵選單。開啟對話框顯示表單清單,使用者可選擇歸類至既有文件或新增自定義文件。若為自定義,則驗證名稱後取得新編號。隨後執行 FormIDReplace 搬移影像檔案、更新索引、清空檢核記錄並刷新樹狀結構顯示。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.PM109Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.popupMenu"
+    ],
+    "deps": [
+      "SaveToFile"
+    ],
+    "lIndex": "3382",
+    "rIndex": "3411",
+    "description": "處理「案件 OMR 檢核」右鍵選單。清空當前顯示並開啟檢核進度,呼叫 OMRCheckCase 對案件執行光學劃記辨識檢核。若檢核成功則建立 OMRCheckOk.dat 標記檔,最後重新載入影像、刷新樹狀結構並提示檢核完成。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.PM110Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.popupMenu"
+    ],
+    "deps": [
+      "Str2Dir"
+    ],
+    "lIndex": "3412",
+    "rIndex": "3441",
+    "description": "處理「新增其他文件」右鍵選單。彈出對話框要求輸入自定義名稱,驗證無誤後產生新的文件編號並在案件目錄下建立實體子目錄。隨後將新目錄加入清單並重新繪製樹狀結構,最後自動展開新建立的節點。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.PM111Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.popupMenu"
+    ],
+    "deps": [],
+    "lIndex": "3442",
+    "rIndex": "3472",
+    "description": "處理「修改文件份數」右鍵選單。取得當前份數並供使用者修改(範圍 1-9999)。若份數有變動則執行驗證(如分份文件限制),確認後更新 SetDocDirCopies 設定並標記文件已編輯,最後刷新樹狀結構統計。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.PM301Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.popupMenu"
+    ],
+    "deps": [
+      "ifBlackWhite"
+    ],
+    "lIndex": "3473",
+    "rIndex": "3480",
+    "description": "將掃瞄模式設定為黑白(ifBlackWhite)並指定副檔名為 .tif。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.PM302Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.popupMenu"
+    ],
+    "deps": [
+      "ifGray256"
+    ],
+    "lIndex": "3481",
+    "rIndex": "3489",
+    "description": "將掃瞄模式設定為灰階(ifGray256)並指定副檔名為 .jpg。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.PM303Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.popupMenu"
+    ],
+    "deps": [
+      "ifTrueColor"
+    ],
+    "lIndex": "3490",
+    "rIndex": "3498",
+    "description": "將掃瞄模式設定為全彩(ifTrueColor)並指定副檔名為 .jpg。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.PM501Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.popupMenu"
+    ],
+    "deps": [],
+    "lIndex": "3499",
+    "rIndex": "3505",
+    "description": "將影像縮放模式設為「符合寬度」並開啟反鋸齒。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.PM502Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.popupMenu"
+    ],
+    "deps": [],
+    "lIndex": "3506",
+    "rIndex": "3512",
+    "description": "將影像縮放模式設為「符合高度」並開啟反鋸齒。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.PM503Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.popupMenu"
+    ],
+    "deps": [],
+    "lIndex": "3513",
+    "rIndex": "3519",
+    "description": "將影像縮放模式設為「符合頁面」並開啟反鋸齒。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.PM504Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.popupMenu"
+    ],
+    "deps": [],
+    "lIndex": "3520",
+    "rIndex": "3526",
+    "description": "將影像縮放模式設為「原始大小」並開啟反鋸齒。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.PM505Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.popupMenu"
+    ],
+    "deps": [
+      "StatrTwainScan"
+    ],
+    "lIndex": "3527",
+    "rIndex": "3547",
+    "description": "處理「掃瞄替換此頁」右鍵選單。檢查當前影像後,設定掃瞄模式為 smReplace 並指定儲存路徑與檔名為當前顯示之影像。啟動 StatrTwainScan 掃瞄以覆蓋原檔案,完成後清空該案件的檢核記錄。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.PM507Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.popupMenu"
+    ],
+    "deps": [
+      "RenameFile"
+    ],
+    "lIndex": "3548",
+    "rIndex": "3615",
+    "description": "處理影像區域的「文件歸類」右鍵選單。彈出對話框供使用者選取目標表單,隨後根據選取的 FormID 產生新的序號檔名。執行 RenameFile 進行實際更名並同步更新 Context.dat。最後重新整理樹狀結構、清空檢核記錄並使焦點回到原文件節點。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.PM508Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.popupMenu"
+    ],
+    "deps": [
+      "FileExists",
+      "LoadFromFile",
+      "ReSortFileName",
+      "SaveToFile",
+      "_DelTree"
+    ],
+    "lIndex": "3616",
+    "rIndex": "3656",
+    "description": "處理影像區域的「刪除影像」右鍵選單。若案件僅剩一張影像則詢問是否刪除整個案件目錄。否則,在確認後從影像清單中移除該項目、刪除實體檔案並呼叫 ReSortFileName 重新排序。最後刷新樹狀統計文字、清空檢核記錄並更新顯示。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.PM509Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.popupMenu"
+    ],
+    "deps": [],
+    "lIndex": "3657",
+    "rIndex": "3661",
+    "description": "觸發「從此分案」功能,內部轉呼叫 PM401Click。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.PM510Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.popupMenu"
+    ],
+    "deps": [
+      "DeskewImg",
+      "SaveToFile"
+    ],
+    "lIndex": "3662",
+    "rIndex": "3668",
+    "description": "對當前 Graphic 執行去偏斜處理後存回原檔案。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.PopupMenu1Popup(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.popupMenu"
+    ],
+    "deps": [],
+    "lIndex": "3669",
+    "rIndex": "3826",
+    "description": "處理樹狀結構右鍵選單彈出時的動態項目控制。根據選取節點的層級(根、案件、文件、表單)與系統模式(如 FMode、FImgDelete 權限等)動態設定各項選單(刪除、修改、掃瞄加入、歸類、檢核等)的可見度與可用性。例如在文件層會受影像引用狀態限制刪除功能。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.PopupMenu4Popup(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.popupMenu"
+    ],
+    "deps": [],
+    "lIndex": "3827",
+    "rIndex": "3844",
+    "description": "處理影像列表右鍵選單彈出邏輯。僅在樹狀結構選取文件或表單層級時顯示全選、取消全選及歸類功能,並特別判斷「分出新案」在非重掃模式下才可見。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.PopupMenu5Popup(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.popupMenu"
+    ],
+    "deps": [],
+    "lIndex": "3845",
+    "rIndex": "3874",
+    "description": "處理影像顯示區域右鍵選單彈出邏輯。當有載入影像時啟用各類縮放選單項目,並根據樹狀選取層級與掃瞄模式決定是否顯示「分出新案」功能。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.PopupMenu6Popup(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.popupMenu"
+    ],
+    "deps": [],
+    "lIndex": "3875",
+    "rIndex": "3924",
+    "description": "處理縮圖區右鍵選單彈出邏輯。動態設定歸類、自定義文件及刪除項目的可見度。若選取附件目錄則開啟特殊功能。同時根據權限設定與影像引用狀態(UseCase)限制歸類與刪除功能的可用性。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.PrePageBtnClick(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.toolBar"
+    ],
+    "deps": [],
+    "lIndex": "3925",
+    "rIndex": "3952",
+    "description": "處理「上一頁」按鈕點擊。跳轉至前一頁並判斷影像位置,若向上超出捲軸區域則自動滾動垂直捲軸,將影像帶入可見區域。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.SampleScanBtnClick(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.toolBar"
+    ],
+    "deps": [
+      "BWTif2Jpg",
+      "FileExists",
+      "LoadFromFile",
+      "SaveToFile",
+      "StatrTwainScan",
+      "upFile"
+    ],
+    "lIndex": "3953",
+    "rIndex": "4068",
+    "description": "處理「範本掃瞄」按鈕點擊。切換為範本模式並引導使用者輸入 FormID,掃瞄後產生 TIF 與 JPG 影像。隨後透過 HTTPS 將範本上傳至伺服器,上傳過程中會嚴格檢查網路狀態、Session 有效性與伺服器回傳結果。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.ScrollBar1Change(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "4069",
+    "rIndex": "4086",
+    "description": "捲軸變動處理,目前實作已透過 Exit 暫時停用。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.ScrollBox1MouseEnter(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.scrollView"
+    ],
+    "deps": [],
+    "lIndex": "4087",
+    "rIndex": "4091",
+    "description": "當滑鼠進入捲軸區域時,自動將焦點設定至 ScrollBox1。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.SelectScanBtnClick(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.toolBar"
+    ],
+    "deps": [
+      "Scanner",
+      "SelectScanner",
+      "scanner.SelectScanner"
+    ],
+    "lIndex": "4092",
+    "rIndex": "4100",
+    "description": "開啟系統掃瞄器選擇視窗。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.StatusBar1DblClick(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.statusMessenger"
+    ],
+    "deps": [],
+    "lIndex": "4101",
+    "rIndex": "4116",
+    "description": "處理狀態列連按兩下事件。用於切換測試功能按鈕及除錯訊息視窗(Memo1/Display1)的顯示,支援搭配 Control 鍵切換授權匯出/匯入功能。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.ActiveFormCreate(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "初始化與生命週期"
+    ],
+    "deps": [],
+    "lIndex": "4117",
+    "rIndex": "4138",
+    "description": "ActiveForm 建立時的初始化處理。發送啟動訊息、設定預設檢視模式並初始化影像顯示區域。遍歷所有影像捲軸盒(ISB),設定預設滑鼠模式為 mmUser 並將縮放模式設為全頁顯示,最後延遲啟動 Timer。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.ActiveFormKeyUp(Sender: TObject; var Key: Word;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "4139",
+    "rIndex": "4164",
+    "description": "處理 ActiveForm 按鍵放開事件。當文字輸入框取得焦點且有選取影像時,攔截上下方向鍵並將其轉化為 PriorPage 或 NextPage 翻頁操作,並同步滾動捲軸。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.AddAttFileLBClick(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "CopyFile",
+      "FileExists"
+    ],
+    "lIndex": "4165",
+    "rIndex": "4194",
+    "description": "處理「加入附加電子檔」按鈕點擊。開啟檔案對話框選取多個 PDF 檔案,支援覆蓋檢查。執行 CopyFile 將檔案複製到案件目錄下,並呼叫 SetAttContextList 更新附加檔案清單後載入顯示。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.AddCredit1RGClick(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "4195",
+    "rIndex": "4207",
+    "description": "處理信用註記點擊,更新 Case_loandoc 狀態並寫入索引檔。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.AddScanBtnClick(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.toolBar"
+    ],
+    "deps": [
+      "StatrTwainScan"
+    ],
+    "lIndex": "4208",
+    "rIndex": "4249",
+    "description": "處理「追加掃瞄」按鈕點擊。檢查狀態後設定掃瞄模式為 smInsert(插入模式),初始化掃瞄參數並啟動 StatrTwainScan。完成後重新繪製樹狀結構、更新筆數統計並清空檢核記錄,最後自動選取新文件節點。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.AttListBoxClick(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.listView"
+    ],
+    "deps": [],
+    "lIndex": "4250",
+    "rIndex": "4256",
+    "description": "處理附加檔案列表點擊,若有選取則啟用刪除按鈕。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.AttListBoxDblClick(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.listView"
+    ],
+    "deps": [
+      "FileExists"
+    ],
+    "lIndex": "4257",
+    "rIndex": "4269",
+    "description": "處理附加檔案列表連按兩下,呼叫 ShellExecute 開啟檔案。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.BtnMouseEnter(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "4270",
+    "rIndex": "4274",
+    "description": "當滑鼠進入按鈕區域時,顯示該按鈕的 Hint 文字提示。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Button3Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "initkscan"
+    ],
+    "lIndex": "4275",
+    "rIndex": "4334",
+    "description": "工程師測試用按鈕。用於顯示當前系統環境變數與參數狀態,包含伺服器 URL、案件資訊、權限、DPI 設定及各類長度限制,最後重新載入影像檔案。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Button4Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "4335",
+    "rIndex": "4369",
+    "description": "工程師測試用按鈕。用於傾印內部多個 TStringList 與 Record 資料,包含 OMR 錯誤資訊、表單與檢核規則清單、範本與已存在影像清單等,用於除錯。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Button5Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "IIS_Ftp",
+      "SetFtpInfo"
+    ],
+    "lIndex": "4370",
+    "rIndex": "4378",
+    "description": "測試 FTP 上傳功能。連線 FTP 後嘗試將特定的 PDF 檔案上傳至伺服器路徑。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Button6Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "FJpgCompression",
+      "IIS_Ftp",
+      "Rotate",
+      "Scanner",
+      "SetFtpInfo"
+    ],
+    "lIndex": "4379",
+    "rIndex": "4389",
+    "description": "測試 FTP 下載功能。連線 FTP 後嘗試從伺服器下載 ZIP 案件檔至本地。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.ExportBtClick(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "En_DecryptionStr_Base64",
+      "FileExists",
+      "SaveToFile",
+      "dnFile",
+      "dnFile_Get"
+    ],
+    "lIndex": "4951",
+    "rIndex": "5013",
+    "description": "處理「匯出授權檔」按鈕點擊。透過 HTTPS 下載掃瞄與檢視用的 .lic 授權檔案。將授權檔連同加密的 mps.dat 檔案打包成帶有密碼保護的 mps.zip 壓縮包,完成後清理暫存檔並提示路徑。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.ImportBtClick(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "En_DecryptionStr_Base64",
+      "FileExists",
+      "LoadFromFile",
+      "RenameFile",
+      "Str2Dir",
+      "_DelTree",
+      "upFile"
+    ],
+    "lIndex": "5014",
+    "rIndex": "5089",
+    "description": "處理「匯入授權檔」按鈕點擊。選取 mps.zip 授權包後進行解壓與過期驗證。驗證通過後對授權檔執行重新命名,並透過 upFile 函式逐一上傳至伺服器範本目錄,過程中會嚴格檢查 Session 與回傳狀態。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.HotKeyDown (var Msg : TMessage);",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "初始化與生命週期"
+    ],
+    "deps": [],
+    "lIndex": "5090",
+    "rIndex": "5094",
+    "description": "熱鍵按下處理程序,目前為空實作。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.InitialLanguage(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.i18n",
+      "初始化與生命週期"
+    ],
+    "deps": [],
+    "lIndex": "5095",
+    "rIndex": "5172",
+    "description": "元件多國語言初始化核心函式。讀取 Language.Lng 設定檔,根據指定的語系遞迴設定畫面上所有控制項(按鈕、選單、標籤、清單、群組框等)的 Caption 或 Hint 文字,實現介面語系動態切換。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.FindISB2View(Vmode:Integer):TImageScrollBox; //找空的ISB來顯示",
+    "tags": [
+      "UIView",
+      "UIView.scrollView",
+      "影像瀏覽/顯示"
+    ],
+    "deps": [],
+    "lIndex": "5228",
+    "rIndex": "5253",
+    "description": "根據檢視模式,在畫面中尋找下一個可顯示影像的 TImageScrollBox。遍歷 ISB1-ISB8,檢查 FileName 是否為空;若已滿則會清空特定位置影像並重新開始,確保影像載入有對應視窗。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.HTTPSClientRedirection(Sender: TObject;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "5479",
+    "rIndex": "5484",
+    "description": "處理 HTTPS 客戶端的重導向事件,目前為空實作。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.EnableImage(v:integer;Sender : TObject);",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "影像瀏覽/顯示"
+    ],
+    "deps": [],
+    "lIndex": "5485",
+    "rIndex": "5498",
+    "description": "啟用滑鼠工具列功能,更新按鈕圖示並切換滑鼠模式。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.DesableImage;",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "影像瀏覽/顯示"
+    ],
+    "deps": [],
+    "lIndex": "5499",
+    "rIndex": "5518",
+    "description": "停用所有工具列功能。重置點選狀態,將所有功能按鈕(FC0-FC6)圖示切換為灰階,並將所有影像捲軸盒的滑鼠模式切換回一般使用者模式。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.ViewMouseMode(v:Integer);",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "影像瀏覽/顯示"
+    ],
+    "deps": [],
+    "lIndex": "5519",
+    "rIndex": "5543",
+    "description": "設定全域的滑鼠作業模式。根據參數對應至放大鏡、縮放、拖曳、旋轉或刪除等模式,並同步更新所有影像捲軸盒(ISB1-ISB8)的屬性,確保行為一致。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.GoViewMode;",
+    "tags": [
+      "UIView",
+      "UIView.layouts",
+      "影像瀏覽/顯示"
+    ],
+    "deps": [],
+    "lIndex": "5544",
+    "rIndex": "5555",
+    "description": "依檢視模式索引 VMode,呼叫 DisplayMode 來調整佈局。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.DisplayMode(index,H_Count,W_Count:Integer;BasePanel:TPanel);",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "影像瀏覽/顯示"
+    ],
+    "deps": [],
+    "lIndex": "5556",
+    "rIndex": "5599",
+    "description": "調整影像視窗的網格佈局(1x1, 2x2 等)。隱藏所有影像面板後,根據行數與列數計算面板寬高與位置,重新排列並顯示。同時調整標記框 Shape1 的大小,最後更新模式圖示並初始化首個視窗。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.GetServerDate : Boolean;",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "API 呼叫相關"
+    ],
+    "deps": [
+      "ProcessServlet_Get"
+    ],
+    "lIndex": "5600",
+    "rIndex": "5631",
+    "description": "從伺服器獲取伺服器時間。透過 HTTPS 請求取得時間字串,解析日期與時間,並計算 Server 與本機的時間差(Balance)供後續校時使用。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.GetSampleInf : Boolean;",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "API 呼叫相關"
+    ],
+    "deps": [
+      "ProcessServlet_Get"
+    ],
+    "lIndex": "5632",
+    "rIndex": "5664",
+    "description": "從伺服器獲取已註冊的範本表單 ID 清單,並存入 SampleFormIDList。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.SetFormID_DocNo; //將FormID及Docno抽出來另存入list裡    20130403增加",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "清單管理"
+    ],
+    "deps": [],
+    "lIndex": "5947",
+    "rIndex": "5958",
+    "description": "提取 FORM_INF_List 中的 FormID 與 DocNo 欄位至獨立清單。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.SetIn_WH_DocNo; //將要入庫的DocNo抽出來另存入list裡",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "清單管理"
+    ],
+    "deps": [],
+    "lIndex": "5959",
+    "rIndex": "5972",
+    "description": "提取所有入庫屬性(IS_IN_WH)為 'Y' 的文件編號至清單。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.CheckRequiredColumnValues(workno, caseno:String): Boolean;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "5973",
+    "rIndex": "5982",
+    "description": "檢查特定業務邏輯下的必填欄位。針對特定的 workno 與案號格式(caseno[9])判斷是否符合要求。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.CheckRule2OMRErrInfo;   //檢核規則填入OMRErrINFo Record",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "OMR 檢核"
+    ],
+    "deps": [],
+    "lIndex": "5983",
+    "rIndex": "6010",
+    "description": "將檢核規則清單(CHECK_RULE_INF_List)中的資料轉換為內部的 OMRErrInfo Record 陣列,設定各項規則的顯示類型(Display)、是否可忽略(Ignore)及提示訊息與掃瞄模式。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.ReNameContext(Path,OldName,NewName:String);",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "檔案操作"
+    ],
+    "deps": [
+      "SaveToFile"
+    ],
+    "lIndex": "6011",
+    "rIndex": "6027",
+    "description": "在指定路徑下執行影像清單的更名同步。遍歷 ContextList,比對舊檔名後更新為新檔名,同步更新 Context.dat 及對應的文件編號清單(Context_DocNo.dat)。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.DeleteImageFile(Path,FileName,CaseID:String); // 刪除檔案  (無法得到DocDir用)",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "檔案操作"
+    ],
+    "deps": [
+      "DeleteImageFile",
+      "FileExists",
+      "LoadFromFile",
+      "SaveToFile"
+    ],
+    "lIndex": "6028",
+    "rIndex": "6059",
+    "description": "刪除指定的影像檔案。執行實體刪除後,自動計算文件目錄,並呼叫 SetContextList 從 Context 清單中移除對應的影像記錄。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.DeleteFormCodeFile(CaseID,DocDir,FormID:String);  //刪除指定FormID文件",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "檔案操作"
+    ],
+    "deps": [
+      "DeleteImageFile",
+      "FileExists",
+      "LoadFromFile",
+      "ReSortFileName",
+      "SaveToFile"
+    ],
+    "lIndex": "6060",
+    "rIndex": "6114",
+    "description": "刪除案件中指定 FormID 的所有文件。讀取 Context.dat 並遍歷,若 FormID 匹配則執行刪除(在 ESCAN 模式下會檢查是否非當次掃瞄以保護舊圖)。刪除後執行檔案序號重新排序。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.DeleteDocNoFile(Path,DocNo:String):Boolean;  //刪除指定DocNo文件",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "檔案操作"
+    ],
+    "deps": [
+      "DeleteDocNoFile",
+      "FileExists",
+      "LoadFromFile",
+      "ReSortFileName",
+      "SaveToFile"
+    ],
+    "lIndex": "6115",
+    "rIndex": "6140",
+    "description": "刪除指定的文件編號(DocNo)影像。遍歷 ContextList,比對文件編號後執行實體刪除與清單移除(含 Context 與 Context_DocNo)。處理完成後執行檔案重新排序並重新載入清單。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.DeleteShowFile(Path:String); //刪除顯示中的影像",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "檔案操作"
+    ],
+    "deps": [
+      "DeleteShowFile"
+    ],
+    "lIndex": "6175",
+    "rIndex": "6188",
+    "description": "刪除當前顯示清單(NowShowFileList)中的影像檔案並更新索引。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.GetDataDocNoPage(MainDocNo,MainVersion:String):Integer;  //取記錄的文件_版本頁數",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "文件份數/頁數/查詢"
+    ],
+    "deps": [],
+    "lIndex": "6189",
+    "rIndex": "6203",
+    "description": "從 DOC_INF_List 資料中查詢特定文件與版本的預設頁數設定。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.CheckCaseDocNoPage(CaseID,DocNo,Version:String;Pages:Integer):Integer; //取案件裡的文件_版本頁數",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "文件份數/頁數/查詢"
+    ],
+    "deps": [
+      "LoadFromFile"
+    ],
+    "lIndex": "6204",
+    "rIndex": "6277",
+    "description": "計算案件中特定文件與版本的實際頁數。透過讀取 upload 目錄下的 Context.dat 與 DocDir.dat,精確比對 FormID、DocNo、版本與頁碼索引,並排除入庫狀態影像,回傳符合條件的影像總數。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.FindFormCodePages(CaseID,FormCode:String):Integer;  //計算案件裡FormID的頁數",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "文件份數/頁數/查詢"
+    ],
+    "deps": [
+      "LoadFromFile"
+    ],
+    "lIndex": "6278",
+    "rIndex": "6308",
+    "description": "計算案件中特定 FormID 的實際影像總數,可用於檢核。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.GetDataFormCodePages(FormCode:String):Integer;   //取記錄的FormcID的頁數",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "文件份數/頁數/查詢"
+    ],
+    "deps": [],
+    "lIndex": "6309",
+    "rIndex": "6319",
+    "description": "查詢特定表單 ID 的最大頁數限制,若未設定則回傳 9999。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.CaseReSize(CaseID:String); //案件的影像縮放",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "影像處理"
+    ],
+    "deps": [
+      "FileExists",
+      "ImageReSize_FormID",
+      "ImageResize",
+      "LoadFromFile"
+    ],
+    "lIndex": "6320",
+    "rIndex": "6342",
+    "description": "對案件執行影像縮放處理。清空舊有的檢核與定位錯誤記錄,隨後遍歷影像清單,對每個檔案執行 ImageReSize_FormID 處理。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.ImageScrollBox1NewGraphic(const Graphic: TDibGraphic);",
+    "tags": [
+      "UIView",
+      "UIView.scrollView",
+      "影像處理"
+    ],
+    "deps": [
+      "ConvertToBW",
+      "TDibGraphic"
+    ],
+    "lIndex": "6447",
+    "rIndex": "6456",
+    "description": "當載入新影像時觸發。將當前 Graphic 內容同步至黑白影像處理元件(ISB_BW),若原始影像非黑白格式則執行 ConvertToBW 轉換。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.TransCaseID(Path,CaseID:String;MainCase:Boolean):Boolean; //傳送案件",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "CopyFile",
+      "FileExists",
+      "FindFirst",
+      "FtpCaseComplete",
+      "IIS_Ftp",
+      "LoadFromFile",
+      "SetFtpInfo",
+      "_DelTree",
+      "upFile"
+    ],
+    "lIndex": "6457",
+    "rIndex": "6734",
+    "description": "傳送案件核心程序。包含排序影像、產生描述檔(FormID/DocNo對照、OMR資訊、附件狀態等)、建立 ZIP 壓縮包(含主圖與遮罩)並檢查大小。最後根據 HTTP 或 FTP 模式上傳至伺服器。上傳完成後針對異動模式處理舊件引入,並在最後清理本地暫存目錄。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.NewTreeNodeRefresh;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "6735",
+    "rIndex": "6745",
+    "description": "更新樹狀結構根節點文字,顯示總案件筆數與總頁數。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.MyTreeNode1Refresh;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "6746",
+    "rIndex": "6753",
+    "description": "更新樹狀結構案件層級節點文字,顯示該層下的項目數量。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.MyTreeNode2ReFresh(CaseID:String);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "6754",
+    "rIndex": "6763",
+    "description": "重新整理並繪製指定案件的文件層級樹狀結構。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.MyTreeNode3ReFresh(CaseID:String);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "6764",
+    "rIndex": "6771",
+    "description": "重新整理並繪製指定案件的表單層級樹狀結構。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.Node2DocNo(Node2:TTreeNode):String;  //MyTreeNode2取DocNo出來",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "案件管理(TreeView / 案件操作)"
+    ],
+    "deps": [],
+    "lIndex": "6772",
+    "rIndex": "6785",
+    "description": "從樹狀結構節點 2(文件層)的文字中解析並提取文件編號(DocNo)。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.Node3DocNo(Node3:TTreeNode):String;  //MyTreeNode3取DocNo出來",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "案件管理(TreeView / 案件操作)"
+    ],
+    "deps": [],
+    "lIndex": "6786",
+    "rIndex": "6799",
+    "description": "從樹狀結構節點 3(表單層)的父節點文字中提取文件編號(DocNo)。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.Node3FormID(Node3:TTreeNode):String;  //MyTreeNode3取FormCode出來",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "6800",
+    "rIndex": "6814",
+    "description": "從樹狀結構節點 3(表單層)的文字中解析並提取表單 ID(FormID)。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.GetNode2Name(Node2:TTreeNode):String;  //取MyTreeNode2的識別字出來(記之前點選用)",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "CopyFile",
+      "DeleteDocNoFile",
+      "DirectoryExists",
+      "En_DecryptionStr_Base64",
+      "FileExists",
+      "LoadFromFile",
+      "SaveToFile",
+      "Str2Dir",
+      "dnFile"
+    ],
+    "lIndex": "6815",
+    "rIndex": "6933",
+    "description": "提取文件層級節點的識別名稱字串,用於記錄與恢復節點選取狀態。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.DownLoadImage(Path,CaseID:String):Boolean;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "IIS_Ftp",
+      "SetFtpInfo"
+    ],
+    "lIndex": "6934",
+    "rIndex": "6979",
+    "description": "處理影像下載流程。根據案件上傳/下載方式(HTTP 或 FTP),從伺服器下載對應的 ZIP 檔案並解壓縮至本地案件目錄,供後續異動或補件使用。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.Down_Img(Path,CaseID:String):Boolean;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "En_DecryptionStr_Base64",
+      "FileExists",
+      "Str2Dir",
+      "dnFile",
+      "dnFile_Get"
+    ],
+    "lIndex": "6980",
+    "rIndex": "7032",
+    "description": "透過 HTTPS 從伺服器下載案件影像。下載 ZIP 檔案(含 img.zip 與 att.zip)後執行本地解壓縮,將主影像與附件部署至指定目錄。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.GetNoNameCase(Path:String):String; //取未配號XXXX",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "DirectoryExists",
+      "GetNoNameCase"
+    ],
+    "lIndex": "7033",
+    "rIndex": "7046",
+    "description": "在指定的本地路徑中尋找尚未被佔用的「未配號XXXX」目錄名稱。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.CaseResort(Path:String); //案件的檔案重新排序(次文件依Docno排)",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "FileExists",
+      "LoadFromFile",
+      "ReSortFileName",
+      "RenameFile",
+      "SaveToFile"
+    ],
+    "lIndex": "7047",
+    "rIndex": "7184",
+    "description": "對案件檔案進行實體重新排序。依據文件清單(Doc_Inf_List)的順序,對主文件與次文件進行更名與重新編號,確保檔名序號符合業務邏輯。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.CaseResort2Scanlist(Path:String); //案件的檔案重新排序給scanlist(次文件依FormID排)",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "FileExists",
+      "LoadFromFile",
+      "ReSortFileName",
+      "RenameFile",
+      "SaveToFile"
+    ],
+    "lIndex": "7185",
+    "rIndex": "7306",
+    "description": "產生依表單代號排序的影像清單(scanlist.dat),用於上傳。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.DistinctDocinCase(Path:String); //列出案件裡的Docno_版本",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "LoadFileGetMD5",
+      "LoadFromFile"
+    ],
+    "lIndex": "7307",
+    "rIndex": "7351",
+    "description": "列出案件目錄下所有具備文件編號與版本的唯一組合。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.DistinctDocNoinCase(Path:String); //列出案件裡的Docno",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "LoadFromFile"
+    ],
+    "lIndex": "7352",
+    "rIndex": "7387",
+    "description": "列出案件目錄下所有實際存在的文件編號(DocNo)。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.ClearErrini(CaseID:String;CaseNode:TTreeNode); //清掉檢核檔案",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "FileExists"
+    ],
+    "lIndex": "7388",
+    "rIndex": "7406",
+    "description": "清除指定案件的所有檢核輔助檔案(如 Checkerr.ini, OMRCheckOk 等),並將樹狀節點恢復為預設的影像索引狀態。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.SetCaseList(Mode:Char;Index:Integer;text:String);  //'A:加入,I:插入,D:刪除,E:修改'",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "FileExists",
+      "LoadFromFile",
+      "SaveToFile"
+    ],
+    "lIndex": "7407",
+    "rIndex": "7445",
+    "description": "維護本地案件清單資料。支援對 CaseList.dat 執行加入、插入、刪除或修改案號操作,確保本地磁碟目錄與資料清單狀態同步。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.SetDocNoList(Mode:Char;Index:Integer;CaseNo,DocDir,Copies:String);  //'A:加入,I:插入,D:刪除,E:修改'",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "FileExists",
+      "LoadFromFile",
+      "SaveToFile"
+    ],
+    "lIndex": "7446",
+    "rIndex": "7516",
+    "description": "維護案件的文件目錄清單(CaseDocNo.dat)與份數清單(CaseDocNo_Copies.dat)。根據 Mode 參數執行「加入 (A)」、「插入 (I)」、「修改 (E)」或「刪除 (D)」操作。刪除時支援透過索引或目錄名稱進行,並會同步更新異動記錄(SetRecordEditedDocDir)。最後將更新後的清單存回檔案。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.SetContextList(Mode:Char;Index:Integer;CaseNo,DocDir,FileName:String);  //'A:加入,I:插入,D:刪除,E:修改'",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "FileExists",
+      "LoadFromFile",
+      "SaveToFile"
+    ],
+    "lIndex": "7517",
+    "rIndex": "7565",
+    "description": "維護特定文件目錄下的影像檔案清單(Context.dat)。支援「加入」、「插入」、「修改」與「刪除」模式。操作前會先從磁碟載入既有的清單,執行變動後再存回,並記錄該文件目錄已被異動。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.SetAttContextList(Mode:Char;Index:Integer;CaseNo,FileName:String);  //'A:加入,I:插入,D:刪除,E:修改'",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "FileExists",
+      "LoadFromFile",
+      "SaveToFile"
+    ],
+    "lIndex": "7566",
+    "rIndex": "7608",
+    "description": "維護案件的附件檔案清單(AttContext.dat)。邏輯與 SetContextList 相似,針對附件目錄進行檔案名稱的「加入」、「插入」、「修改」與「刪除」管理,並將結果持久化至磁碟。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.checkCaseOMRDone:Boolean;  //檢查案件是否完成OMR檢核",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "7609",
+    "rIndex": "7623",
+    "description": "檢查當前案件是否已完成 OMR 檢核。遍歷 NewTreeNode 中的所有項目,判斷其 ImageIndex 是否皆為 7(代表已檢核通過的圖示索引),若有任何一項未達成則回傳 False。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.checkFormCodeIsCustom(path, formcode: string): boolean;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "7624",
+    "rIndex": "7644",
+    "description": "檢查指定的表單代碼(FormCode)是否為自定義文件。透過讀取 CustomDocNo.ini 設定檔中的 FormID 資訊,比對傳入的代碼是否與設定值一致。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.CheckCaseID_OK:Boolean;  //檢查是否有未配號的案件",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "7645",
+    "rIndex": "7659",
+    "description": "檢查樹狀結構中是否存在「未配號」的案件。遍歷所有節點,若節點文字包含「未配號」字樣則回傳 False。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.CheckCaseAttach_OK:Boolean;  //檢查是否有未歸類的案件",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "7660",
+    "rIndex": "7677",
+    "description": "檢查樹狀結構中是否存在「未歸類」的文件。遞迴遍歷案件下的所有子節點,若有任何節點文字包含「未歸類」則回傳 False。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.CreateEmptyCase(Path,CaseID:String);  //產生空白案號(重掃件用)",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "SaveToFile"
+    ],
+    "lIndex": "7678",
+    "rIndex": "7691",
+    "description": "產生一個空白的案件結構,主要用於重掃件。建立必要的目錄,並產生初始的 Context.dat 與更新 CaseList.dat。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.InitScrollRec;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "7692",
+    "rIndex": "7701",
+    "description": "初始化影像捲軸記錄,將 1 到 8 號影像視窗的水平與垂直捲軸位置重設為 0。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.GetScrollData(ISB:TImageScrollBox;Var HS,VS:Integer;Var iRate:Single);",
+    "tags": [
+      "UIView",
+      "UIView.scrollView"
+    ],
+    "deps": [],
+    "lIndex": "7702",
+    "rIndex": "7711",
+    "description": "根據傳入的影像捲軸盒(ISB)名稱,從 ScrollRec 陣列中提取其儲存的水平、垂直捲軸位置及縮放比例。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.SetScrollData(ISB:TImageScrollBox;HS,VS:Integer;iRate:Single);",
+    "tags": [
+      "UIView",
+      "UIView.scrollView"
+    ],
+    "deps": [],
+    "lIndex": "7712",
+    "rIndex": "7721",
+    "description": "將指定的水平、垂直捲軸位置與縮放比例存入對應影像視窗索引的 ScrollRec 記錄中。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.FormIDReplace(CaseID,DocDir,OldFormID,NewFormID:String); //指定FormID更換成新的FormID",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "CopyFile",
+      "DirectoryExists",
+      "FileExists",
+      "LoadFromFile",
+      "RenameFile",
+      "SaveToFile"
+    ],
+    "lIndex": "7722",
+    "rIndex": "7840",
+    "description": "將指定文件中的舊表單代碼替換為新代碼。首先決定目標目錄(考慮是否分份數、補件狀況),若目標目錄不存在則建立。接著將符合舊代碼的檔案複製到新目錄下並重新命名(產生新序號),同時更新新目錄的 Context.dat 與清單。最後刪除原目錄中的舊代碼檔案。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.ShowFileReplace(Path,NewFormID:String);//顯示的影像換成新的FormID",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "RenameFile"
+    ],
+    "lIndex": "7841",
+    "rIndex": "7856",
+    "description": "將當前顯示清單(NowShowFileList)中的檔案更名為新的表單代碼。遍歷檔案,保留原序號但替換 FormID 部分,執行實體更名並同步更新全域的 ContextList 記錄。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.PageReplaceFormID(Path,NowFormID,NewFormID:String); //選取頁更換FormID",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "LoadFromFile",
+      "RenameFile",
+      "SaveToFile"
+    ],
+    "lIndex": "7857",
+    "rIndex": "7906",
+    "description": "針對影像列表(PageLV)中選取的頁面進行表單代碼更換。先過濾出符合條件的檔案,再對選取項執行實體檔案更名(更新 FormID 部分),最後同步更新 Context.dat 檔案內容。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.ModeNeedCheck(OMRMode,ScanMode:String):Boolean; //掃瞄模式是否要做檢核",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "7907",
+    "rIndex": "7913",
+    "description": "判斷目前的掃瞄模式是否需要執行 OMR 檢核。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.GetCasePage(Path,CaseID:String):Integer;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "FileExists",
+      "LoadFromFile"
+    ],
+    "lIndex": "7914",
+    "rIndex": "7984",
+    "description": "計算案件的總影像頁數。遍歷案件下所有的文件目錄(CaseDocNo.dat),讀取每個目錄的 Context.dat 並累加檔案數量。過程中會考慮入庫/非入庫文件的權限與顯示過濾條件,最後也包含附件目錄的計數。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.GetFormIDPage(FileList:TStringlist;FormID:String):Integer;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "7985",
+    "rIndex": "7999",
+    "description": "在指定的檔案清單中,計算符合特定表單代碼(FormID)的影像頁數。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.SetFile2Case(CaseID,FileName:String);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "LoadFromFile",
+      "SaveToFile"
+    ],
+    "lIndex": "8000",
+    "rIndex": "8013",
+    "description": "將指定的檔案名稱加入到案件的主 Context.dat 清單中。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.WriteResize(ImgName,TxtName:String); //產生Resize.dat",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "FileExists",
+      "GetTag",
+      "LoadFromFile",
+      "SaveToFile"
+    ],
+    "lIndex": "8014",
+    "rIndex": "8056",
+    "description": "產生影像縮放記錄檔(Resize.dat)。載入影像後比對原始標記(Tag)中的長寬資訊與實際 Graphic 的長寬,若有變動則將差異記錄至文字檔中。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.GetCase_PageCount(var CaseCount,PageCount:Integer):Boolean; //取出案件的數量及頁數",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "FileExists",
+      "LoadFromFile"
+    ],
+    "lIndex": "8057",
+    "rIndex": "8134",
+    "description": "獲取所有案件的總數量與總頁數。讀取 CaseList.dat 取得案件清單,逐一計算各案件目錄與附件目錄下的影像檔案數。針對非入庫且當次掃瞄的特殊情況,會額外檢查 EditedDocDir.dat 以精確計算實際變動的頁數。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.FindNoSaveBarCode : Boolean; //找是否有不要儲存影像的條碼",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "8135",
+    "rIndex": "8154",
+    "description": "檢查目前的條碼資訊中是否包含被標記為「不儲存影像」的條碼。遍歷所有辨識到的條碼,並與排除清單(NoSaveBarCodeList)進行比對,若匹配則回傳 True。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.WriteCaseIndex(Path:String);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "SaveToFile"
+    ],
+    "lIndex": "8196",
+    "rIndex": "8213",
+    "description": "將案件的信用註記狀態(Case_loandoc)寫入到指定路徑下的 CaseIndex.dat 檔案中。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.ReadCaseIndex(Path:String);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "FileExists",
+      "LoadFromFile"
+    ],
+    "lIndex": "8214",
+    "rIndex": "8242",
+    "description": "從磁碟讀取案件索引檔(CaseIndex.dat)。載入信用註記狀態,並據此更新畫面上 AddCredit1RG 選項組的選取狀態(Y 設為第一項,N 設為第二項)。若檔案不存在但有預設值,則自動建立檔案。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.ReduceLogFile; //20171011 必免log檔掌太大",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "FileExists",
+      "LoadFromFile",
+      "SaveToFile"
+    ],
+    "lIndex": "8243",
+    "rIndex": "8263",
+    "description": "防止日誌檔案過大。檢查 IMGPSCheck.log,若行數超過 100,000 行,則自動刪除最前面的 10,000 行記錄並重新存檔。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.ClearCaseIndex;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "8264",
+    "rIndex": "8269",
+    "description": "重設案件索引相關的 UI 狀態,將信用註記選項設為不可用且取消選取。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.GetSelectImageFile;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "8270",
+    "rIndex": "8290",
+    "description": "取得當前所有被選取的影像檔案路徑。遍歷畫面上的 TShape 元件(選取框),透過名稱關聯找到對應的影像捲軸盒(ISB),並將其載入的檔名加入到 NowSelectFileList 清單中。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.GetDocNoDir(Path,DocNo:String):String; //取出目前DocNo的份數",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "DirectoryExists"
+    ],
+    "lIndex": "8291",
+    "rIndex": "8312",
+    "description": "根據文件編號產生下一個可用的目錄名稱(用於區分份數)。若文件編號不為空,會遞增序號並檢查磁碟目錄是否存在,直到找到未使用的名稱(格式如 DocNo_1);若編號為空則回傳附件目錄名稱。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.CheckFormIDExists(DocNoNode:TTreeNode;FormID:String):Boolean; //檢查FormID是否存在文件裡",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "8313",
+    "rIndex": "8327",
+    "description": "檢查特定的表單代碼(FormID)是否已經存在於樹狀結構中指定文件的子節點中。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.DocNo2DocNoDir(Path,DocNo:String):String;    //DocNo轉成DocNo(份數)目錄",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "DirectoryExists"
+    ],
+    "lIndex": "8328",
+    "rIndex": "8349",
+    "description": "類似 GetDocNoDir,但產生的目錄名稱格式為 DocNo(1)。透過循環檢查目錄是否存在,自動產生下一個可用的份數目錄名稱。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.DocNoDir2DocNo(DocNoDir:String):String; //DocNo(份數)目錄轉成DocNo",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "8350",
+    "rIndex": "8365",
+    "description": "將包含份數括號的目錄名稱(如 A001(2))還原為原始的文件編號(如 A001)。排除附件目錄後,尋找左括號的位置並擷取前面的字串。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.DocNoDir2Index(Path,DocNoDir:String):Integer; //DocNo(份數)目錄轉成index",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "LoadFromFile"
+    ],
+    "lIndex": "8366",
+    "rIndex": "8387",
+    "description": "將文件目錄名稱轉換為其在 CaseDocNo.dat 清單中的索引位置。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.ParserPoint(S:String); //解析十字點的字串",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "8495",
+    "rIndex": "8525",
+    "description": "解析代表影像十字點座標的字串。將包含四個端點(左上、左下、右上、右下)座標及長寬資訊的字串拆解,並轉換為 TPoint 結構存入全域變數中,若字串格式不符則全部重設為 (0,0)。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.CheckScanDenialTime:Boolean;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "8526",
+    "rIndex": "8539",
+    "description": "檢查目前時間是否已超過系統設定的「禁止掃瞄時間」。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.FormID2Anchor(FormID:String):String;  //用FormID取出十字模式",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "8540",
+    "rIndex": "8551",
+    "description": "根據表單代碼(FormID)從 FORM_INF_List 中查詢對應的定位模式(ANCHOR 模式),並回傳轉換後的模式字串(NONE/ANCHOR/FRAME)。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.Index2Anchor(Anchor:String):String;   //十字模式 0->NONE;1->ANCHOR;2->FRAME",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "8552",
+    "rIndex": "8561",
+    "description": "將數值型的定位模式索引(0, 1, 2)轉換為易讀的模式名稱字串。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.ScanDuplexCBClick(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "8562",
+    "rIndex": "8567",
+    "description": "處理雙面掃瞄勾選框點擊事件,同步更新全域的 ScanDuplex 變數。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.ScanGrayCBClick(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "ifBlackWhite",
+      "ifGray256",
+      "ifTrueColor"
+    ],
+    "lIndex": "8568",
+    "rIndex": "8596",
+    "description": "根據掃瞄勾選框狀態,設定掃瞄色彩模式(灰階、全彩或黑白)。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.GetFormatID(CaseID: string):String;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "FileExists",
+      "LoadFromFile"
+    ],
+    "lIndex": "8597",
+    "rIndex": "8620",
+    "description": "從案件索引檔(CaseIndex.dat)中獲取案件的 FormatID(主鍵值)。目前實作為存根,包含讀取邏輯但未回傳特定欄位。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.MemoInfoTransfer(Mode,Str:String;ID_S,Name_S:TStringlist):String;  //註記代碼註記類別轉換  Mode 'ID':代碼轉名稱;'NAME':名稱轉代碼",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "8621",
+    "rIndex": "8650",
+    "description": "註記代碼與類別名稱的轉換函數。支援「代碼轉名稱」或「名稱轉代碼」兩種模式,若無匹配代碼則預設為「自行輸入」。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.GetFindResult(Col:String):String;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "8803",
+    "rIndex": "8820",
+    "description": "從資料查詢結果(FindResult)中,根據指定的欄位名稱(Col)提取對應的值。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.DataLoading(Loading:Boolean;UseTimer:Boolean);  //資料載入中要停止點選的動作",
+    "tags": [
+      "UIView",
+      "UIView.statusMessenger"
+    ],
+    "deps": [],
+    "lIndex": "8821",
+    "rIndex": "8855",
+    "description": "控制資料載入時的 UI 狀態。啟用載入時會切換滑鼠游標為等待狀態、顯示提示面板(Panel22 或 Panel8),並禁用主要的操作面板(Panel1/Panel2);關閉時則恢復正常狀態。支援使用計時器(Timer2)來顯示動態提示。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.CaseHelpBtnClick(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.toolBar"
+    ],
+    "deps": [],
+    "lIndex": "8856",
+    "rIndex": "8926",
+    "description": "處理檢核失敗(補件/更正)按鈕點擊。開啟 TErrlistForm 顯示 OMR 檢核錯誤清單供使用者操作。若使用者完成更正並按確定,則會根據目前模式(ISCAN/NSCAN 等)將更新後的影像資料上傳至伺服器,並在完成後重新載入影像、提示使用者。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.CheckCaseBtnClick(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.toolBar"
+    ],
+    "deps": [
+      "SaveToFile"
+    ],
+    "lIndex": "8927",
+    "rIndex": "8965",
+    "description": "執行所有案件的批次檢核。遍歷 NewTreeNode 下的所有案件,對尚未檢核通過(ImageIndex 不為 7 或 5)的案件呼叫 OMRCheckCase 進行檢核。若檢核成功則建立 OMRCheckOk.dat 標記檔。最後刷新影像與樹狀顯示。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.ClearView(stkv:Integer);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "8966",
+    "rIndex": "8981",
+    "description": "清空指定的影像顯示區域。將索引從 stkv 到 8 的 TImageScrollBox 檔名重設為空,並清空對應的標籤文字,最後釋放預覽資源並將焦點設回 ISB1。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.DrawDocItem2(CaseNode : TTreenode;Caseno:String):Boolean;  //畫出文件名稱的Tree",
+    "tags": [
+      "UIView",
+      "UIView.treeView"
+    ],
+    "deps": [
+      "DirectoryExists",
+      "FileExists",
+      "LoadFromFile"
+    ],
+    "lIndex": "8982",
+    "rIndex": "9241",
+    "description": "在樹狀結構中繪製指定案件的文件與表單節點。讀取 CaseDocNo.dat 取得文件清單,逐一建立文件節點並根據引用狀態設定圖示。接著在文件節點下建立表單節點,區分制式表單與自定義表單。包含入庫過濾與附件處理,是樹狀 UI 呈現的核心。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.initParameter;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "ifBlackWhite",
+      "ifGray256",
+      "ifTrueColor"
+    ],
+    "lIndex": "9263",
+    "rIndex": "9304",
+    "description": "初始化掃瞄相關參數。設定檔案大小限制(預設 5MB)、DPI(預設 300)以及掃瞄顏色模式(黑白、灰階、全彩),並同步更新 UI 狀態(如 ScanGrayCB)。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.PrtLbClick(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "LoadFromFile"
+    ],
+    "lIndex": "9305",
+    "rIndex": "9375",
+    "description": "處理「列印」按鈕點擊。首先產生上傳用的暫存影像結構,接著開啟 TPrintForm 供使用者勾選欲列印的文件。確認後呼叫 PrintImg 進行實體列印,並記錄操作日誌。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.UseOldCaseLbClick(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "CopyFile",
+      "DirectoryExists",
+      "FileExists",
+      "LoadFromFile",
+      "SaveToFile"
+    ],
+    "lIndex": "9376",
+    "rIndex": "9529",
+    "description": "處理「使用舊件」功能。開啟 TOldCaseInfoForm 讓使用者選擇舊有案件的文件。選定後,將舊件影像複製到新案件目錄下,自動產生新序號檔名,建立關聯記錄(UseCase.dat),並同步更新新案件的文件清單與樹狀統計。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.LastInitFormidListCreate(path: string);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "LoadFromFile"
+    ],
+    "lIndex": "9530",
+    "rIndex": "9550",
+    "description": "從 FormCode_Name.dat 檔案中提取表單代碼(底線前的部分),並將其加入到 LastInitFormidList 清單中。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.LoadImgFile;  //載入新件及替換件",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "FileExists",
+      "LoadFromFile",
+      "SaveToFile"
+    ],
+    "lIndex": "9575",
+    "rIndex": "9660",
+    "description": "載入當前所有的影像案件至樹狀結構。清空舊有節點後,讀取 CaseList.dat,為每個案件建立父節點,並呼叫 DrawDocItem2 繪製子文件與表單。同時會根據 OMR 檢核狀態設定對應的案件圖示。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.LoadImgFile1;  //載入新件及替換件",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "FileExists",
+      "LoadFromFile",
+      "SaveToFile"
+    ],
+    "lIndex": "9661",
+    "rIndex": "9770",
+    "description": "載入影像檔案的另一種實作版本。包含更細緻的 Context_DocNo.dat 管理,若檔案不存在會自動掃描 ContextList 並根據 FormCode 產生對應的文件編號記錄。主要用於特定的資料結構載入。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.LoadAttFile(CaseID:String); //載入附加檔案",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "FileExists",
+      "LoadFromFile"
+    ],
+    "lIndex": "9771",
+    "rIndex": "9791",
+    "description": "載入指定案件的附件檔案。讀取 AttContext.dat,將附件檔名解碼後加入到 AttListBox 列表中。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.logTimeString: String;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "9792",
+    "rIndex": "9796",
+    "description": "產生帶有當前日期時間與案件編號的日誌前綴字串。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.FindDivFormCode(FormCode:String):Boolean; //找有沒有分案的條碼",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "9797",
+    "rIndex": "9824",
+    "description": "檢查特定的表單代碼是否具有「分案」屬性。從 FORM_INF_List 中查詢該表單的 DIVISION 欄位,判斷是否包含目前的作業模式(如 NSCAN/ISCAN)。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.CheckAvailable:Boolean; //檢查是否可使用元件",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "FileExists",
+      "dnFile",
+      "dnFile_Get",
+      "upFile"
+    ],
+    "lIndex": "9825",
+    "rIndex": "9922",
+    "description": "檢查元件的使用授權。透過 HTTPS 下載掃瞄授權檔,並驗證 MacID、註冊數量與使用期限。若尚未註冊且仍有額度,則自動進行註冊並上傳新的授權檔至伺服器。最後在狀態列顯示註冊資訊。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.SmoothCBClick(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "Image_Smooth"
+    ],
+    "lIndex": "9923",
+    "rIndex": "9931",
+    "description": "處理「影像平滑化」勾選框。若勾選,則對 ISB1 的影像執行平滑化處理並重新繪製。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.Case2Mask(SoPath,DePath:String):Boolean;//產生遮罩影像  20170639 發現沒用到",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "影像處理"
+    ],
+    "deps": [
+      "DirectoryExists",
+      "FieldMask",
+      "FileExists",
+      "FindPoint",
+      "LoadFromFile",
+      "SaveAnnotation",
+      "Str2Dir",
+      "_DelTree"
+    ],
+    "lIndex": "9932",
+    "rIndex": "9995",
+    "description": "產生案件的遮罩影像(用於遮蔽敏感個資)。讀取 Context.dat,針對每張影像尋找定位點,並依據對應表單的 XML 定義執行區域遮罩,最後存入指定目錄。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.GetNewCustomDocNo(Path,DocName:String):String; //取出未使用的自訂文件代號",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "自訂文件"
+    ],
+    "deps": [
+      "FileExists",
+      "LoadFromFile",
+      "SaveToFile"
+    ],
+    "lIndex": "10022",
+    "rIndex": "10086",
+    "description": "產生一個全新的自定義文件編號。讀取 CustomDocNo.ini 中的計數器,根據入庫/非入庫性質產生 ZZZZZ 或 YYYYY 開頭的編號,並預設其內部的第一個表單代碼,最後將新設定寫回 INI 檔。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.GetCustomDocName(Path,DocNo:String):String; //取出自定文件名稱",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "自訂文件"
+    ],
+    "deps": [],
+    "lIndex": "10087",
+    "rIndex": "10098",
+    "description": "從 CustomDocNo.ini 中讀取指定自定義文件編號對應的顯示名稱。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.GetCustomFormID(Path,DocNo:String):String; //取出自定文件FormID",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "自訂文件"
+    ],
+    "deps": [],
+    "lIndex": "10099",
+    "rIndex": "10110",
+    "description": "從 CustomDocNo.ini 中讀取指定自定義文件編號對應的表單代碼(FormID)。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.GetCustomDocDir(Path,DocName:String):String; //取出自定文件DocDir",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "自訂文件"
+    ],
+    "deps": [],
+    "lIndex": "10111",
+    "rIndex": "10137",
+    "description": "根據自定義文件名稱尋找對應的目錄代號(如 ZZZZZ001)。遍歷 CustomDocNo.ini 中的所有區段,讀取 Name 欄位進行比對,成功則回傳該編號。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.FindCustomDocName(Path,DocName:String):Boolean; //尋找自定文件名稱是否存在",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "自訂文件"
+    ],
+    "deps": [],
+    "lIndex": "10138",
+    "rIndex": "10161",
+    "description": "檢查指定的自定義文件名稱是否已存在於 CustomDocNo.ini 設定檔中。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.DelAttFileLBClick(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "10162",
+    "rIndex": "10196",
+    "description": "處理「刪除附件電子檔」點擊。確認使用者選取的檔案後,從磁碟刪除實體檔案並呼叫 SetAttContextList 移除清單記錄。完成後重新載入附件清單並提示。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.DeleteCustomDocDir(Path,DocNo:String); //刪除自定文件DocNo",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "檔案操作"
+    ],
+    "deps": [],
+    "lIndex": "10197",
+    "rIndex": "10208",
+    "description": "從 CustomDocNo.ini 中刪除指定的自定義文件區段。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.CheckFormID_Prt(FormID:String):Boolean; //傳入的FormID是否預設列印",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "10209",
+    "rIndex": "10218",
+    "description": "查詢指定表單(FormID)是否被設定為預設列印。透過 FORM_INF_List 檢核 IS_PRINT 欄位是否為 'Y'。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.PrintImg(FileName, LoginID, Datetime,",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "TDibGraphic"
+    ],
+    "lIndex": "10219",
+    "rIndex": "10297",
+    "description": "執行影像列印的核心程序。開啟列印對話框供選擇印表機,隨後遍歷檔案清單,逐一載入影像、套用浮水印後發送至印表機。支援多頁列印於同一個任務或分頁處理。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.FindLastestDocDir(CaseID,DocNo:String):String; //找出最新的DocDir",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "FileExists",
+      "LoadFromFile"
+    ],
+    "lIndex": "10298",
+    "rIndex": "10322",
+    "description": "針對指定的文件編號,從 CaseDocNo.dat 中反向尋找最新的份數目錄名稱(例如 A001(2))。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.FindLastestDocDirForPage(CaseID,DocNo,formid:String):String; //找出最新的DocDir  20180207  排除隱藏的資料夾",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "FileExists",
+      "LoadFromFile"
+    ],
+    "lIndex": "10323",
+    "rIndex": "10364",
+    "description": "類似 FindLastestDocDir,但額外呼叫 DocNoIsExistImg 確保該目錄下確實存在影像檔案,若為空目錄則不視為有效結果。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.Create_Cust_DocDir(CaseID:String); //產生外面傳入的文件代號及自定文件",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "自訂文件"
+    ],
+    "deps": [
+      "DirectoryExists"
+    ],
+    "lIndex": "10365",
+    "rIndex": "10455",
+    "description": "根據外部傳入的清單(FC_DocNoList 或 FC_DocNameList)預先產生案件所需的文件目錄。會自動處理分份文件的命名、檢查是否已存在,並在 CustomDocNo.ini 中註冊新名稱。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.SetRecordEditedDocDir(Mode:Char;CaseID,DocDir:String);  //記錄被異動的文件目錄  'A:加入D:刪掉'",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "舊案/異動件處理"
+    ],
+    "deps": [
+      "FileExists",
+      "LoadFromFile",
+      "SaveToFile"
+    ],
+    "lIndex": "10575",
+    "rIndex": "10622",
+    "description": "記錄案件中曾被異動(新增或刪除)的文件目錄。將目錄名稱存入 EditedDocDir.dat,以便後續判斷哪些內容需要同步上傳或重新計算。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.GetDocDir_Page(CaseID,DocDir:String):Integer;",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "文件份數/頁數/查詢"
+    ],
+    "deps": [
+      "FileExists",
+      "LoadFromFile"
+    ],
+    "lIndex": "10623",
+    "rIndex": "10639",
+    "description": "取得特定文件目錄下的影像總頁數。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.Path2DocDir(Path,CaseID:String):String;",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "轉換區(名稱/格式轉換)"
+    ],
+    "deps": [
+      "FileExists",
+      "LoadFromFile"
+    ],
+    "lIndex": "10640",
+    "rIndex": "10664",
+    "description": "將實體路徑轉換為案件內的文件目錄名稱。透過比對路徑字串與 CaseDocNo.dat 中的清單來識別對應的目錄。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.GetDocNo_IS_WH(DocNo:String):Boolean; //DocNo是否為入庫文件",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "入庫文件/可見性"
+    ],
+    "deps": [],
+    "lIndex": "10665",
+    "rIndex": "10679",
+    "description": "判斷指定文件編號是否屬於「入庫文件」類別。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.SortDocDir_FormID(CaseID,DocDir:String); //將DocDir裡的文件編號排序",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "FileExists",
+      "LoadFromFile",
+      "RenameFile",
+      "SaveToFile"
+    ],
+    "lIndex": "10680",
+    "rIndex": "10752",
+    "description": "對文件目錄內的影像檔案依表單代碼(FormID)進行重新排序。先提取所有檔案的 FormID 並排序,依序產生新檔名進行更名,最後更新 Context.dat 檔案順序。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.GotoAttach(OldLevel:Integer);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "10753",
+    "rIndex": "10774",
+    "description": "將樹狀結構的焦點跳轉至案件的附件節點。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.DocNoIs_In_WH(DocNo:String):Boolean; //DocNo是否為入庫文件",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "入庫文件/可見性"
+    ],
+    "deps": [],
+    "lIndex": "10775",
+    "rIndex": "10794",
+    "description": "判斷指定文件編號(包含自定義 ZZZZZ 系列)是否為入庫文件。"
+  },
+  {
+    "matcher": "Procedure  TCB_IMGPSScanX.CreateCaseNeedData(Path:String);",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "上傳前置資料產生"
+    ],
+    "deps": [
+      "FileExists",
+      "LoadFromFile",
+      "SaveToFile"
+    ],
+    "lIndex": "10795",
+    "rIndex": "10840",
+    "description": "掃描案件目錄下的 Context.dat 影像清單,自動推導並產生該案件所需的 DocDir.dat、CaseDocNo.dat 及份數清單,用於修復或重建案件結構。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.SetDocDirtoSelected(CaseNode:TTreeNode;DocDir:String);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "10841",
+    "rIndex": "10853",
+    "description": "在樹狀結構中自動選取符合指定目錄名稱的節點。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.CheckSelectImg_UseCase(Path,CaseID:String):Boolean; //檢查選擇的影像是否有包含被引用的影像",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "10854",
+    "rIndex": "10876",
+    "description": "檢查當前選取的影像所在的文件目錄是否已被其他程序引用(UseKey 標記為 'T')。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.TransOldCaseFile(Path:String):Boolean;",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "API 呼叫相關"
+    ],
+    "deps": [
+      "FileExists",
+      "upFile"
+    ],
+    "lIndex": "10877",
+    "rIndex": "10937",
+    "description": "處理舊件引用的檔案傳送。遍歷舊件清單,若發現有引用記錄,則透過 HTTPS 將引用資訊上傳至伺服器,並處理伺服器回傳狀態。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.Writelog(CaseID : String):Boolean;",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "API 呼叫相關"
+    ],
+    "deps": [],
+    "lIndex": "10938",
+    "rIndex": "10963",
+    "description": "透過 ProcessServlet 向伺服器發送列印日誌記錄。傳送案件編號與 FData 等參數,並檢查伺服器回傳是否成功或 Session 是否失效。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.FormIDAppear(FormID:String):Boolean; //FormID是否可出現",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "入庫文件/可見性"
+    ],
+    "deps": [],
+    "lIndex": "11095",
+    "rIndex": "11120",
+    "description": "判斷特定的表單代碼(FormID)是否符合目前入庫/非入庫作業模式的顯示規則。主要過濾掉不屬於當前作業範疇的文件。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.DocNoAppear(DocNo:String):Boolean;   //DocNo是否可出現",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "入庫文件/可見性"
+    ],
+    "deps": [],
+    "lIndex": "11121",
+    "rIndex": "11137",
+    "description": "判斷文件編號(DocNo)是否應在介面上顯示。包含針對附件與入庫屬性的互斥過濾。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.GetDocNoCount(CaseID,DocNo:String):Integer; //取DocNo數量",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "文件份數/頁數/查詢"
+    ],
+    "deps": [
+      "FileExists",
+      "LoadFromFile"
+    ],
+    "lIndex": "11138",
+    "rIndex": "11167",
+    "description": "統計指定案件中某文件編號(DocNo)的總份數。讀取 CaseDocNo.dat 與 CaseDocNo_Copies.dat 並累加匹配項目的份數值。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.GetDocDirCopies(CaseID,DocDir:String):Integer; //取DocDir數量",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "文件份數/頁數/查詢"
+    ],
+    "deps": [
+      "FileExists",
+      "LoadFromFile"
+    ],
+    "lIndex": "11168",
+    "rIndex": "11197",
+    "description": "取得特定文件目錄(DocDir)目前的份數設定。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.SetDocDirCopies(CaseID,DocDir:String;NewCopies:Integer); //修改DocDir份數",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "文件份數/頁數/查詢"
+    ],
+    "deps": [
+      "FileExists",
+      "LoadFromFile",
+      "SaveToFile"
+    ],
+    "lIndex": "11198",
+    "rIndex": "11225",
+    "description": "修改並儲存特定文件目錄的份數設定至 CaseDocNo_Copies.dat。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.GetDocDirCopies_Rec(Path,CaseID,DocDir:String):Integer; //取記錄裡的DocDir份數",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "文件份數/頁數/查詢"
+    ],
+    "deps": [],
+    "lIndex": "11226",
+    "rIndex": "11277",
+    "description": "從 FOldCaseInfo 記錄字串中解析並取得特定文件目錄在舊案中的份數。支援自定義文件名稱與一般文件編號的匹配。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.GetCustomNameCount(CustomName:String):Integer;   //取外傳的名稱數量",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "自訂文件"
+    ],
+    "deps": [],
+    "lIndex": "11278",
+    "rIndex": "11301",
+    "description": "統計外部傳入清單中,特定自定義文件名稱出現的次數。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.GetCustomDocNoCount(Docno:String):Integer;   //取外傳的DocNo數量",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "自訂文件"
+    ],
+    "deps": [],
+    "lIndex": "11302",
+    "rIndex": "11325",
+    "description": "統計外部傳入清單中,特定文件編號(DocNo)出現的次數。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.ISGuideFormID(FormID:String):Boolean;",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "入庫文件/可見性"
+    ],
+    "deps": [],
+    "lIndex": "11326",
+    "rIndex": "11340",
+    "description": "檢查指定的表單代碼是否屬於「引導頁(Guide Page)」清單。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.ISDivPageFormID(FormID:String):Boolean;",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "入庫文件/可見性"
+    ],
+    "deps": [],
+    "lIndex": "11341",
+    "rIndex": "11356",
+    "description": "檢查指定的表單代碼是否屬於「分案頁(Division Page)」清單。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.ISExistImg(const filename: string): boolean;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "LoadFileGetMD5"
+    ],
+    "lIndex": "11357",
+    "rIndex": "11368",
+    "description": "透過 MD5 雜湊值比對,檢查指定的影像檔案是否已存在於 ExistImgList 清單中。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.CaseDelete_Enable(CaseID:String):Boolean;  //案件可否被刪除",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "案件管理(TreeView / 案件操作)"
+    ],
+    "deps": [
+      "FileExists",
+      "LoadFromFile"
+    ],
+    "lIndex": "11369",
+    "rIndex": "11389",
+    "description": "判斷案件是否允許刪除。若案件下有任何文件目錄已被其他程序引用,則禁止刪除。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.MoveImage(Path:String;mp:Integer); //移動頁數",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "LoadFromFile",
+      "ReSortFileName",
+      "RenameFile",
+      "SaveToFile"
+    ],
+    "lIndex": "11390",
+    "rIndex": "11447",
+    "description": "執行影像頁面的位置移動。先對目錄下所有檔案進行臨時更名(加上 @ 標記),根據選取狀態重新排列清單順序,最後更新 Context.dat 並重新排序實體檔案。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.MoveImage_Drag(Path:String;fp,tp:Integer); //拖拉移動頁數",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "LoadFromFile",
+      "ReSortFileName",
+      "RenameFile",
+      "SaveToFile"
+    ],
+    "lIndex": "11448",
+    "rIndex": "11505",
+    "description": "處理影像拖拉移動。邏輯與 MoveImage 相似,但針對單一來源索引移動至目標索引的情境進行排列。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.Case2upload(CaseID:String);",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "上傳前置資料產生"
+    ],
+    "deps": [
+      "CopyFile",
+      "DirectoryExists",
+      "FileExists",
+      "LoadFromFile",
+      "SaveToFile",
+      "Str2Dir",
+      "_DelTree"
+    ],
+    "lIndex": "11547",
+    "rIndex": "11672",
+    "description": "準備案件上傳用的資料夾結構。將分散在各文件子目錄下的影像檔案複製到單一的 Upload 目錄下並重新編號檔名,同時產生彙整後的索引檔與附件。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.Download2Case(SoDir,DeDir:String);",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "上傳前置資料產生"
+    ],
+    "deps": [
+      "CopyFile",
+      "DirectoryExists",
+      "FileExists",
+      "LoadFromFile",
+      "SaveToFile"
+    ],
+    "lIndex": "11673",
+    "rIndex": "11844",
+    "description": "將下載或匯入的案件結構還原回本系統的多層級目錄結構。包含建立文件子目錄、檔案複製並重新編號、以及重建各類索引與份數設定檔。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.FormCode2FormName(CaseID,FormCode:String):String; //用FormCode轉成文件名稱",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "轉換區(名稱/格式轉換)"
+    ],
+    "deps": [],
+    "lIndex": "11845",
+    "rIndex": "11895",
+    "description": "將表單代碼轉換為易讀的文件名稱。優先查詢系統定義表,若無則至自定義文件清單中搜尋。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.FormCode2FileName(FormCode:String;List:TStrings):String; //用FormCode找出檔名(第一頁)",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "轉換區(名稱/格式轉換)"
+    ],
+    "deps": [],
+    "lIndex": "11896",
+    "rIndex": "11918",
+    "description": "在指定的檔案清單中,根據表單代碼尋找其對應的第一個影像檔名。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.FileName2FormCode(FileName:String):String; //從檔名取出FormCode",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "轉換區(名稱/格式轉換)"
+    ],
+    "deps": [],
+    "lIndex": "11919",
+    "rIndex": "11935",
+    "description": "從影像檔名中提取表單代碼(底線與點號之間的部分)。若檔名格式不符則視為附件並回傳空字串。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.FileName2FormName(CaseID,FileName:String):String; //從檔名取出文件名稱",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "轉換區(名稱/格式轉換)"
+    ],
+    "deps": [],
+    "lIndex": "11936",
+    "rIndex": "11940",
+    "description": "根據案件編號與檔案名稱,先取得表單代碼,再轉換為對應的表單名稱。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.FileName2ScanPage(FileName:String):Integer; //從檔名轉出掃瞄頁數",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "轉換區(名稱/格式轉換)"
+    ],
+    "deps": [],
+    "lIndex": "11941",
+    "rIndex": "11952",
+    "description": "從檔案名稱中提取掃描頁碼。透過尋找底線或點號的位置,截取檔名前段並轉換為整數。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.FileName2NoQuene_Filename(FileName:String):String; //取出沒有序號的檔名",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "轉換區(名稱/格式轉換)"
+    ],
+    "deps": [],
+    "lIndex": "11953",
+    "rIndex": "11965",
+    "description": "從檔案名稱中移除序號部分,僅保留從底線或點號開始的剩餘檔名結構。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.FileName2Index(FileName:String):Integer; //從檔名取出在ContextList的序號",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "轉換區(名稱/格式轉換)"
+    ],
+    "deps": [],
+    "lIndex": "11966",
+    "rIndex": "11979",
+    "description": "在 ContextList 清單中搜尋指定的檔案名稱,並回傳其所在的索引位置。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.FileName2NowDcoNo(FileName:String;CtList,DNList:TStrings):String; //從檔名取出歸屬的文件代號",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "轉換區(名稱/格式轉換)"
+    ],
+    "deps": [],
+    "lIndex": "11980",
+    "rIndex": "11993",
+    "description": "從檔案名稱對應的 CTList 中尋找索引,並從 DNList 取得其歸屬的文件代號。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.FormCode2Version(FormCode:String):String; //FormCode轉版本",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "轉換區(名稱/格式轉換)"
+    ],
+    "deps": [],
+    "lIndex": "12019",
+    "rIndex": "12023",
+    "description": "從表單代碼(FormCode)的特定位置(第 11 位開始取 5 位)提取版本資訊。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.FormCode2Page(FormCode:String):String; //FormCode轉頁數",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "轉換區(名稱/格式轉換)"
+    ],
+    "deps": [],
+    "lIndex": "12024",
+    "rIndex": "12028",
+    "description": "從表單代碼(FormCode)的特定位置(第 9 位開始取 2 位)提取頁數資訊。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.DocNo2FileName(DocNo:String;List:TStrings):String; //用DocNo找出檔名(第一頁)",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "轉換區(名稱/格式轉換)"
+    ],
+    "deps": [],
+    "lIndex": "12067",
+    "rIndex": "12081",
+    "description": "根據文件代號,在指定的檔案清單中搜尋並回傳該文件第一頁的檔案名稱。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.FormCode2WorkNo(FormCode:String):String; //用FormCode取出作業別",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "轉換區(名稱/格式轉換)"
+    ],
+    "deps": [],
+    "lIndex": "12082",
+    "rIndex": "12090",
+    "description": "透過 FORM_INF_List 查詢表單代碼對應的作業別(WORK_NO)。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.DocNo2WorkNo(DocNo:String):String; //用DocNo取出作業別",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "轉換區(名稱/格式轉換)"
+    ],
+    "deps": [],
+    "lIndex": "12091",
+    "rIndex": "12099",
+    "description": "透過 Doc_Inf_List 查詢文件代號對應的作業別(WORK_NO)。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.CaseNode2Info(Node:TTreeNode;Mode:Char):String;   //案件Node取案件編號  Mode: I:Caseno;P:Page",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "轉換區(名稱/格式轉換)"
+    ],
+    "deps": [],
+    "lIndex": "12113",
+    "rIndex": "12126",
+    "description": "從樹狀結構的案件節點文字中,根據指定的模式提取案件編號或案件頁數。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.DocNode2Info(Node:TTreeNode;Mode:Char):String;   //文件Node取文件代號 Mode: I:Docno;N:Docname;P:Page;G:Group",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "轉換區(名稱/格式轉換)"
+    ],
+    "deps": [],
+    "lIndex": "12127",
+    "rIndex": "12144",
+    "description": "從樹狀結構的文件節點文字中提取詳細資訊。節點文字格式預期為「文件名稱@組數{文件代號}-XX頁」。此函式會根據傳入的模式(Mode),利用分隔符號(@, {, }, -)定位並截取回傳文件代號(I)、文件名稱(N)、文件頁碼(P)或文件組別(G)。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.FormNode2Info(Node:TTreeNode;Mode:Char):String;   //表單Node取表單代號  Mode: I:FormID;N:FormName;P:Page",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "轉換區(名稱/格式轉換)"
+    ],
+    "deps": [],
+    "lIndex": "12145",
+    "rIndex": "12160",
+    "description": "從樹狀結構的表單節點文字中提取資訊。節點文字格式預期為「表單代號{表單名稱}-XX頁」。根據模式(Mode)參數,解析並回傳表單代號(I)、表單名稱(N)或頁碼(P)。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.PriorPage(Page:Integer); //上一頁",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "影像瀏覽/顯示"
+    ],
+    "deps": [],
+    "lIndex": "12161",
+    "rIndex": "12171",
+    "description": "跳轉至上一頁影像。根據當前頁碼尋找前一個影像捲軸盒組件(ISB),若存在則觸發其點擊事件。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.NextPage(Page:Integer); //下一頁",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "影像瀏覽/顯示"
+    ],
+    "deps": [],
+    "lIndex": "12172",
+    "rIndex": "12182",
+    "description": "跳轉至下一頁影像。根據當前頁碼尋找下一個影像捲軸盒組件(ISB),若存在則觸發其點擊事件。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.DocNoExistsinTree(CaseNode:TTreeNode;DocNo:String):Boolean; //是否己存在樹裡",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "案件管理(TreeView / 案件操作)"
+    ],
+    "deps": [],
+    "lIndex": "12183",
+    "rIndex": "12198",
+    "description": "檢查指定的案件節點下,是否已經存在具備該文件代號(DocNo)的子節點。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.DocnoNeedGroup(DocNo:String):Boolean; //傳入的DocNo是否需分組",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "案件管理(TreeView / 案件操作)"
+    ],
+    "deps": [],
+    "lIndex": "12199",
+    "rIndex": "12208",
+    "description": "查詢 Doc_Inf_List 判斷傳入的文件代號是否需要進行文件分組(IS_DOC_DIV = \"Y\")。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.DistinctFormCode(CaseID:String); //從案件裡的FormCode取出第一頁",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "OMR 檢核"
+    ],
+    "deps": [
+      "LoadFileGetMD5",
+      "LoadFromFile"
+    ],
+    "lIndex": "12209",
+    "rIndex": "12254",
+    "description": "從案件的 Context.dat 檔案中提取不重複的表單代碼(FormCode)並存入 OMRFileList。程序會遍歷上傳目錄下的所有檔案,檢查檔案是否存在且未被處理過。接著比對 OMRFileList 中已有的表單代碼,若為新出現的表單代碼且檔案有效,則將其加入清單中,用於後續 OMR 處理。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.OMRErrini2List(CaseID:String;ErrlistForm:TErrlistForm); //OMR檢核失敗從ini寫入ListView",
+    "tags": [
+      "BusinessLogic",
+      "BusinessLogic.ormRuleEngine",
+      "UIView",
+      "UIView.listView",
+      "OMR 檢核"
+    ],
+    "deps": [],
+    "lIndex": "12991",
+    "rIndex": "13020",
+    "description": "將 OMR 檢核失敗的記錄從 Checkerr.ini 讀取並顯示在 ListView 中。程序會開啟指定案件目錄下的設定檔,讀取錯誤總數後逐一檢查每筆記錄是否已被移除(Del 標記)。若記錄有效,則將錯誤原因及索引值新增至傳入的 ErrlistForm 中的 ErrListLV 列表。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.DownLanguage:Boolean;  //下載多國語言檔",
+    "tags": [
+      "UIView",
+      "UIView.i18n",
+      "API 呼叫相關"
+    ],
+    "deps": [
+      "dnFile",
+      "dnFile_Get"
+    ],
+    "lIndex": "13059",
+    "rIndex": "13083",
+    "description": "從伺服器下載多國語言設定檔 Language.Lng。使用 HTTPS 客戶端執行 GET 請求,下載至本地語系路徑。下載後會檢查回傳內容,驗證是否發生錯誤、伺服器回傳錯誤訊息,或是因為閒置過久導致 Session 過期被導向登入頁面,並設定對應的錯誤字串。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.view_image_FormCode(Path,FormCode:String;stpage,stview:integer); //用FormCode來找影像",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "影像瀏覽/顯示"
+    ],
+    "deps": [
+      "LoadFromFile"
+    ],
+    "lIndex": "13084",
+    "rIndex": "13199",
+    "description": "根據表單代碼(FormCode)顯示對應的影像。支援顯示全部影像(ShowAll)或指定表單的影像。若是顯示全部,會重置視窗並建立縮圖;若指定特定表單,則遍歷 ContextList 尋找匹配的檔案,載入至影像捲軸盒(ISB),並設定縮放模式(zmFittoPage 或指定百分比)與捲軸位置,最後更新頁碼標籤資訊。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.view_image_DocNo(Path,DocNo,FormID:String;Pages:integer); //用DocNo來找影像",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "影像瀏覽/顯示"
+    ],
+    "deps": [
+      "DirectoryExists",
+      "DpiResize",
+      "FileExists",
+      "LoadFromFile"
+    ],
+    "lIndex": "13200",
+    "rIndex": "13394",
+    "description": "根據文件代號(DocNo)或表單代號(FormID)顯示影像。函式包含三種模式:顯示案件內所有影像(ShowAll)、顯示指定文件夾(如 Attach)下的影像,以及顯示指定文件代號下特定表單的影像。處理過程中會檢查在席狀態(In_WH)、執行影像 DPI 調整、建立縮圖預覽視窗,並逐一載入檔案至對應的 ISB 元件中,最後自動點擊首張影像以進行預覽。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.ShapeName2PreViewISBName(SP:TShape):String; //轉出指定PreViewISBName",
+    "tags": [
+      "UIView",
+      "UIView.scrollView",
+      "縮圖預覽(PreViewISB)"
+    ],
+    "deps": [],
+    "lIndex": "13395",
+    "rIndex": "13399",
+    "description": "將 TShape 元件的名稱轉換為對應的預覽影像捲軸盒(PreViewISB)名稱。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.SpeedButton14Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.toolBar"
+    ],
+    "deps": [
+      "LoadFromFile",
+      "Rotate",
+      "SaveQuality",
+      "SaveToFile",
+      "TJpegGraphic"
+    ],
+    "lIndex": "13400",
+    "rIndex": "13422",
+    "description": "處理工具列按鈕點擊,執行影像逆時針旋轉 90 度(即旋轉 270 度)。程序會重新載入影像、執行旋轉、根據影像格式(JPG 則設定品質為 30)儲存回原檔案,最後更新主顯示區與縮圖區,並重新調整縮圖佈局。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.SpeedButton15Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.toolBar"
+    ],
+    "deps": [
+      "LoadFromFile",
+      "Rotate",
+      "SaveQuality",
+      "SaveToFile",
+      "TJpegGraphic"
+    ],
+    "lIndex": "13423",
+    "rIndex": "13443",
+    "description": "處理工具列按鈕點擊,執行影像旋轉 180 度。程序重新載入檔案後執行旋轉操作,並依據格式存檔。完成後同步更新主畫面與預覽圖,確保顯示一致性。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.SpeedButton16Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.toolBar"
+    ],
+    "deps": [
+      "LoadFromFile",
+      "Rotate",
+      "SaveQuality",
+      "SaveToFile",
+      "TJpegGraphic"
+    ],
+    "lIndex": "13444",
+    "rIndex": "13464",
+    "description": "處理工具列按鈕點擊,執行影像順時針旋轉 90 度。載入影像後執行旋轉並儲存,針對非黑白影像會設定 JPG 壓縮品質。最後重新繪製相關顯示元件並觸發點擊事件。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.SpeedButton17Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.toolBar"
+    ],
+    "deps": [],
+    "lIndex": "13465",
+    "rIndex": "13469",
+    "description": "將主影像顯示區的縮放模式設定為「符合高度」(zmFitHeight)。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.SpeedButton18Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.toolBar"
+    ],
+    "deps": [],
+    "lIndex": "13470",
+    "rIndex": "13474",
+    "description": "將主影像顯示區的縮放模式設定為「符合寬度」(zmFitWidth)。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.SpeedButton19Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.toolBar"
+    ],
+    "deps": [],
+    "lIndex": "13475",
+    "rIndex": "13479",
+    "description": "將主影像顯示區的縮放模式設定為「原始大小」(zmOriginalSize)。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.SpeedButton20Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.toolBar"
+    ],
+    "deps": [],
+    "lIndex": "13480",
+    "rIndex": "13484",
+    "description": "將主影像顯示區的縮放模式設定為「符合頁面」(zmFittoPage)。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.SpeedButton21Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.toolBar"
+    ],
+    "deps": [],
+    "lIndex": "13485",
+    "rIndex": "13490",
+    "description": "將主影像顯示區的縮放模式設定為自定義百分比,並將比例設為 50%。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.SpeedButton22Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.toolBar"
+    ],
+    "deps": [],
+    "lIndex": "13491",
+    "rIndex": "13496",
+    "description": "將主影像顯示區的縮放模式設定為自定義百分比,並將比例設為 25%。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.SpeedButton3Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.toolBar"
+    ],
+    "deps": [],
+    "lIndex": "13497",
+    "rIndex": "13501",
+    "description": "將主影像顯示區的縮放模式設定為「全頁顯示」(zmFullPage)。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.CreatePreViewISB(Count:Integer);",
+    "tags": [
+      "UIView",
+      "UIView.scrollView",
+      "縮圖預覽(PreViewISB)"
+    ],
+    "deps": [],
+    "lIndex": "13502",
+    "rIndex": "13550",
+    "description": "動態建立指定數量的縮圖預覽組件。首先清空既有的預覽組件,接著在 ScrollBox1 中為每個縮圖建立一個 TPanel 作為容器,並在其內嵌入一個 TImageScrollBox。設定組件的對齊方式、預設縮放模式及多項事件處理函式(如 Click, MouseMove, DragDrop 等),並掛載右鍵選單。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.FreePreViewISB;",
+    "tags": [
+      "UIView",
+      "UIView.scrollView",
+      "縮圖預覽(PreViewISB)"
+    ],
+    "deps": [],
+    "lIndex": "13551",
+    "rIndex": "13580",
+    "description": "釋放所有與縮圖預覽相關的動態組件。遍歷所有組件,尋找名稱中包含特定前綴(如 ISBName, M_Pl, SP)的 TImageScrollBox、TPanel 與 TShape 並執行 Free 動作。最後呼叫 ProcessMessages 確保 UI 資源正確釋放。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.FitPreViewISB;",
+    "tags": [
+      "UIView",
+      "UIView.scrollView",
+      "縮圖預覽(PreViewISB)"
+    ],
+    "deps": [],
+    "lIndex": "13581",
+    "rIndex": "13617",
+    "description": "自動調整所有預覽縮圖面板的高度與位置。遍歷所有已建立的預覽組件(ISB),根據每個影像實際顯示的高度(DisplayedGraphic.Height)動態設定其父面板的高度,並依序由上而下排列,確保縮圖之間緊密銜接。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.PaintShape(FromImg,ToImg:TImageScrollBox); //畫有被選取的影像",
+    "tags": [
+      "UIView",
+      "UIView.scrollView",
+      "縮圖預覽(PreViewISB)"
+    ],
+    "deps": [],
+    "lIndex": "13618",
+    "rIndex": "13673",
+    "description": "在預覽縮圖周圍繪製藍色選取框(TShape)。若僅傳入單一影像(ToImg 為 nil),則只在該影像位置建立選取框;若傳入起點與終點影像,則會在範圍內的所有影像組件上建立選取框。框線寬度設為 3 且顏色為藍色,用於視覺化標記選取狀態。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.FreeShapeobj(SelectISB : TImageScrollBox);",
+    "tags": [
+      "UIView",
+      "UIView.scrollView",
+      "縮圖預覽(PreViewISB)"
+    ],
+    "deps": [],
+    "lIndex": "13674",
+    "rIndex": "13694",
+    "description": "刪除縮圖上的選取標記(TShape)。若傳入的 SelectISB 為 nil,則會刪除所有名稱前綴為 \"SP\" 的選取框組件;若指定了特定的影像組件,則僅刪除與該影像對應的選取框。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.ISBClick(Sender : TObject);",
+    "tags": [
+      "UIView",
+      "UIView.scrollView",
+      "縮圖預覽(PreViewISB)"
+    ],
+    "deps": [
+      "Image_Smooth",
+      "LoadFromFile"
+    ],
+    "lIndex": "13695",
+    "rIndex": "13733",
+    "description": "處理縮圖點擊事件,支援組合鍵選取。若按下 Shift 鍵則執行連選(PaintShape 範圍選取);若按下 Control 鍵則切換單選狀態;一般點擊則清除舊選取並重新標記。點擊後會從選取的縮圖載入原圖至主顯示區(ISB1),並視需要執行影像平滑化處理。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.ISBMouseMove(Sender: TObject; Shift: TShiftState;",
+    "tags": [
+      "UIView",
+      "UIView.scrollView",
+      "縮圖預覽(PreViewISB)"
+    ],
+    "deps": [],
+    "lIndex": "13734",
+    "rIndex": "13747",
+    "description": "處理縮圖區的滑鼠移動事件。當處於拖曳狀態且滑鼠移動至已選取的影像(有 SP 標記)時,觸發組件的 BeginDrag 開始執行拖放操作。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.ISBImageMouseDown(Sender: TObject; Button: TMouseButton;",
+    "tags": [
+      "UIView",
+      "UIView.scrollView",
+      "縮圖預覽(PreViewISB)"
+    ],
+    "deps": [
+      "LoadFromFile"
+    ],
+    "lIndex": "13748",
+    "rIndex": "13821",
+    "description": "處理縮圖預覽影像的滑鼠按下事件。當按下左鍵時,將 Draging 標記設為 True 以利後續拖曳判斷。若未處於拖曳中,則根據是否按下 Shift 或 Control 鍵,執行範圍選取、加選或單選操作。選取後會更新 SelectPage,並在主顯示區(ISB1)同步載入對應的影像檔案。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.ISBImageMouseUp(Sender: TObject; Button: TMouseButton;",
+    "tags": [
+      "UIView",
+      "UIView.scrollView",
+      "縮圖預覽(PreViewISB)"
+    ],
+    "deps": [],
+    "lIndex": "13822",
+    "rIndex": "13827",
+    "description": "處理縮圖預覽影像的滑鼠放開事件,將拖曳標記 Draging 重置為 False。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.ISBEndDrag(Sender, Target: TObject; X, Y: Integer);",
+    "tags": [
+      "UIView",
+      "UIView.scrollView",
+      "縮圖預覽(PreViewISB)"
+    ],
+    "deps": [],
+    "lIndex": "13828",
+    "rIndex": "13832",
+    "description": "當影像拖放操作結束時,觸發 TreeView1Click 事件以更新樹狀結構與顯示介面。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.ISBDragDrop(Sender, Source: TObject; X, Y: Integer);",
+    "tags": [
+      "UIView",
+      "UIView.scrollView",
+      "縮圖預覽(PreViewISB)"
+    ],
+    "deps": [],
+    "lIndex": "13833",
+    "rIndex": "13842",
+    "description": "執行縮圖拖放後的影像移動操作。根據來源與目標影像的原始掃描頁碼,呼叫 MoveImage_Drag 調整檔案在目錄中的順序。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.ISBDragOver(Sender, Source: TObject; X, Y: Integer;",
+    "tags": [
+      "UIView",
+      "UIView.scrollView",
+      "縮圖預覽(PreViewISB)"
+    ],
+    "deps": [],
+    "lIndex": "13843",
+    "rIndex": "13863",
+    "description": "判斷拖放操作是否可接受。僅在來源為影像組件、檔案路徑不同且樹狀結構選取在文件層級(Level 2)時,才允許執行拖放。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.FindMpsView(Vmode: Integer):TImageScrollBox;",
+    "tags": [
+      "UIView",
+      "UIView.scrollView",
+      "影像瀏覽/顯示"
+    ],
+    "deps": [],
+    "lIndex": "13864",
+    "rIndex": "13889",
+    "description": "根據當前的檢視模式(Vmode),在 8 個影像視窗中尋找適合載入下一個影像的視窗組件。函式會根據 1x1 到 4x2 的佈局決定搜尋上限,優先回傳檔名為空的視窗;若視窗已滿,則清空指定位置的顯示並回傳主視窗 ISB1。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.GetCaseFormID(Path:String):String;  //取案件的主FormID",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "上傳前置資料產生"
+    ],
+    "deps": [
+      "LoadFromFile"
+    ],
+    "lIndex": "13890",
+    "rIndex": "13911",
+    "description": "從案件目錄的 Context.dat 檔案中搜尋並回傳該案件的主表單代碼(FormID)。程序會遍歷影像清單,提取各檔案的表單代碼,並排除特定的分案頁代碼,直到找到符合條件的主表單代碼為止。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.CreateFormID_FormName(Path,CaseID:String);  //產生FormID_FormName.dat",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "上傳前置資料產生"
+    ],
+    "deps": [
+      "SaveToFile"
+    ],
+    "lIndex": "13912",
+    "rIndex": "13931",
+    "description": "遍歷 ContextList,提取每個檔案的表單代號與名稱並格式化為「代號_名稱」,最後存成 FormCode_Name.dat 供上傳使用。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.CreateDocNo_DocName(Path,CaseID:String);  //產生DocNo_DocName.dat",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "上傳前置資料產生"
+    ],
+    "deps": [
+      "SaveToFile"
+    ],
+    "lIndex": "13932",
+    "rIndex": "13953",
+    "description": "產生包含文件代號與名稱的對應檔 DocNo_Name.dat。首先執行案件內文件去重,接著遍歷 CaseDocNoList 取得對應名稱,針對不需分組的文件會在名稱前加上星號標記,最後將結果以 UTF-8 編碼儲存。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.CreateIn_WH(CaseID:String);  //產生In_WH.dat",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "上傳前置資料產生"
+    ],
+    "deps": [
+      "FileExists",
+      "LoadFromFile",
+      "SaveToFile"
+    ],
+    "lIndex": "13954",
+    "rIndex": "13984",
+    "description": "產生在席文件清單檔 In_Wh.dat。讀取案件的文件目錄清單後,比對全域的在席文件清單(IN_WH_DocNoList),若文件代號匹配或屬於特定系統目錄(ZZZZZ),則將其加入清單並儲存,用於標記需留存實體的文件。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.CreateDocnoFrom_Info(CaseID:String):String; //產生被引進的保管袋文件資訊  Docno[tab]份數[tab]案件編號#13#10Docno[tab]份數[tab]案件編號",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "上傳前置資料產生"
+    ],
+    "deps": [
+      "FileExists",
+      "LoadFromFile"
+    ],
+    "lIndex": "14122",
+    "rIndex": "14186",
+    "description": "產生被引進的保管袋文件詳細資訊字串。程序遍歷案件的文件目錄,排除自定義文件後,取得各文件的份數、總頁數、異動狀態及來源案件編號(UseCase)。若同一文件來自多個目錄,則會累加數據,最後產出以 Tab 分隔的文件資訊清單。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.CreateCustDocNoFrom_Info(CaseID:String):String; //產生被引進的自定文件資訊  Docno[tab]份數[tab]案件編號#13#10Docno[tab]份數[tab]案件編號",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "上傳前置資料產生"
+    ],
+    "deps": [
+      "FileExists",
+      "LoadFromFile"
+    ],
+    "lIndex": "14187",
+    "rIndex": "14244",
+    "description": "產出自定義文件的引進資訊字串。專門處理前綴為 \"ZZZZZ\" 的目錄,提取自定義文件名稱、份數及來源案件。與保管袋文件類似,會執行重複合併並統計總頁數,最後產出格式化的資訊字串。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.CreateAttach_Info(CaseID:String):String; //產生是否有Attach Y:有 N:沒有",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "上傳前置資料產生"
+    ],
+    "deps": [],
+    "lIndex": "14245",
+    "rIndex": "14251",
+    "description": "判斷案件是否存在附加電子檔。透過檢查附加檔案目錄的總頁數是否大於 0,回傳 \"Y\" 或 \"N\"。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.GetDocNoEdit(CaseID,DocNo,DocName:String):String; //取出DocNo是否被異動 (Y/N)",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "文件份數/頁數/查詢"
+    ],
+    "deps": [
+      "FileExists",
+      "LoadFromFile"
+    ],
+    "lIndex": "14252",
+    "rIndex": "14291",
+    "description": "檢查指定文件是否被異動。程序會載入已編輯目錄清單,並與原始的文件代號/名稱清單(FC_DocNoList)進行比對。若文件代號或名稱不在原始清單中,或存在於已編輯清單內,則判定該文件已被異動並回傳 \"Y\"。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.GetDocNo_Count(Path,DocNo:String):Integer;  //取出文件份數",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "文件份數/頁數/查詢"
+    ],
+    "deps": [
+      "LoadFromFile"
+    ],
+    "lIndex": "14292",
+    "rIndex": "14331",
+    "description": "計算指定文件代號在案件中的份數。若文件不需分組則直接回傳 1。否則,遍歷影像清單(Context.dat),根據檔案名稱解析出的頁碼是否為第一頁(\"01\")來累計該文件的份數。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.GetDocNo_Page(Path,DocNo:String):Integer;  //取出文件總頁數",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "文件份數/頁數/查詢"
+    ],
+    "deps": [
+      "LoadFromFile"
+    ],
+    "lIndex": "14332",
+    "rIndex": "14358",
+    "description": "計算指定文件代號在案件中擁有的總影像頁數。遍歷影像對應的文件清單(Context_DocNo.dat),統計與傳入代號相符的項目數量。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.FormIDExists(FormCode:String;CheckDate:Boolean;index:Integer):Boolean;  //檢查FormID是否存在",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "文件份數/頁數/查詢"
+    ],
+    "deps": [],
+    "lIndex": "14359",
+    "rIndex": "14396",
+    "description": "檢查指定的表單代碼(FormID)是否存在於系統資料庫中。支援日期檢核模式:若啟用,則會進一步查詢該表單所屬文件的起迄效期(START_DATE, STOP_DATE),並與伺服器當前日期比對,確保表單仍在有效期限內。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.Case_DocNoExists(CaseID,Docno:String):Boolean; //Docno是否存在案件裡",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "文件份數/頁數/查詢"
+    ],
+    "deps": [
+      "LoadFromFile"
+    ],
+    "lIndex": "14397",
+    "rIndex": "14421",
+    "description": "檢查指定的文件代號是否存在於特定案件的 Context.dat 影像清單中。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.CB1Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "14422",
+    "rIndex": "14426",
+    "description": "處理核取方塊點擊,設定是否要在掃描時顯示 TWAIN 使用者介面(TwainShowUI)。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.ReSortFileName(Path:String); //檔名重新排序",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "檔案操作"
+    ],
+    "deps": [
+      "FileExists",
+      "LoadFromFile",
+      "ReSortFileName",
+      "RenameFile",
+      "SaveToFile"
+    ],
+    "lIndex": "14427",
+    "rIndex": "14454",
+    "description": "執行影像檔案名稱的重新排序與更名。讀取目錄下的 Context.dat,根據目前的排列順序為每個檔案產生新的三位數序號前綴,並呼叫 ReNameFile 執行磁碟更名,最後同步更新清單內容並儲存。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.ReSortFileName_New(Path:String); //檔名重新排序",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "檔案操作"
+    ],
+    "deps": [
+      "FileExists",
+      "LoadFromFile",
+      "ReSortFileName",
+      "RenameFile",
+      "SaveToFile"
+    ],
+    "lIndex": "14455",
+    "rIndex": "14481",
+    "description": "與 ReSortFileName 類似,執行影像檔案名稱的重新排序,但採用從清單末尾向前遍歷的方式執行更名與儲存。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.ReSortFileName2Scanlist(Path:String); //檔名重新排序給Scanlist.dat",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "檔案操作"
+    ],
+    "deps": [
+      "FileExists",
+      "LoadFromFile",
+      "ReSortFileName",
+      "RenameFile",
+      "SaveToFile"
+    ],
+    "lIndex": "14482",
+    "rIndex": "14506",
+    "description": "針對 scanlist.dat 檔案內的影像路徑進行序號重排。讀取清單後,依序為檔案名稱加上新的序號前綴並存回。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.GetOMRCheckSet : Boolean; //下載OMR檢核XML檔",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "API 呼叫相關"
+    ],
+    "deps": [
+      "FileExists",
+      "LoadFromFile",
+      "SaveToFile",
+      "dnFile",
+      "dnFile_Get"
+    ],
+    "lIndex": "14507",
+    "rIndex": "14565",
+    "description": "從伺服器下載並更新 OMR 檢核設定檔(OMRSet.zip)。程序會檢查本地 LastDateTime.dat 取得最後更新時間,並發送請求。若伺服器有新資料,則下載後解壓縮並更新本地時間戳記;若無更新則維持現狀,並包含完整的錯誤處理邏輯。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.GetKeyinSet : Boolean; //取登打設定",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "API 呼叫相關"
+    ],
+    "deps": [
+      "FileExists",
+      "LoadFromFile",
+      "SaveToFile",
+      "dnFile",
+      "dnFile_Get"
+    ],
+    "lIndex": "14566",
+    "rIndex": "14624",
+    "description": "從伺服器下載並更新登打設定檔(KeyinSet.zip)。運作機制與 GetOMRCheckSet 相同,透過比對時間戳記決定是否執行下載與解壓縮,確保本地的登打定位資訊與伺服器同步。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.CaseAsk(CaseID: string):Integer;",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "API 呼叫相關"
+    ],
+    "deps": [
+      "ProcessServlet_Get"
+    ],
+    "lIndex": "14625",
+    "rIndex": "14674",
+    "description": "在上傳案件前,向伺服器詢問該案件是否可進行傳送。針對 NSCAN 或 DSCAN 模式,會封裝案件編號與加密驗證資訊發送至 IMGPSC05/isnew 服務。根據伺服器回傳結果(0 表示可上傳,1 表示重複),決定後續的上傳流程。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.CaseComplete(Path,CaseID:String;MainCase:Boolean):Boolean;  //通知傳送完成",
+    "tags": [
+      "UIView",
+      "UIView.misc",
+      "API 呼叫相關"
+    ],
+    "deps": [
+      "En_DecryptionStr_Base64",
+      "FileExists",
+      "LoadFromFile"
+    ],
+    "lIndex": "14675",
+    "rIndex": "14903",
+    "description": "通知伺服器案件傳送完成。函式會收集案件的各項元數據,包含總頁數、主表單 ID、經辦資訊、被保人資料等,並根據不同的業務模式(如 NSCAN, ESCAN)格式化發送數據。若包含 OMR 檢核失敗資訊或備註,也會一併封裝傳送,最後根據伺服器回傳值判定作業是否成功。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Timer1Timer(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.statusMessenger",
+      "初始化與生命週期"
+    ],
+    "deps": [
+      "FJpgCompression",
+      "FileExists",
+      "GetLocalAppDir",
+      "Str2Dir",
+      "_DelTree",
+      "initkscan"
+    ],
+    "lIndex": "14904",
+    "rIndex": "15337",
+    "description": "OCX 元件初始化的核心程序。負責從伺服器下載各類基礎資訊(業務、表單、文件、檢核規則、常用片語、系統參數等),並設定本地暫存路徑(ScanTemp)。針對異動或重掃模式,會自動建立空案件並下載既有影像。最後執行各類屬性與語系設定,確保掃描環境就緒。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Timer2Timer(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.statusMessenger",
+      "初始化與生命週期"
+    ],
+    "deps": [],
+    "lIndex": "15338",
+    "rIndex": "15346",
+    "description": "處理進度條或提示文字的動態點點動畫。每觸發一次就會在 ShowText 後方增加一個點,模擬載入中的視覺效果。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.TransBtnClick(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.toolBar"
+    ],
+    "deps": [
+      "LoadFromFile"
+    ],
+    "lIndex": "15347",
+    "rIndex": "15538",
+    "description": "處理工具列「上傳」按鈕的點擊事件。執行完整的前置檢查(包含案件配號、歸類、收件時間限制等),接著遍歷所有案件執行 OMR 檢核與 ReSize,最後呼叫 TransCaseID 將案件封裝傳送至伺服器。上傳結束後會顯示成功/失敗的統計報告。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.TreeView1Click(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.treeView"
+    ],
+    "deps": [
+      "FileExists",
+      "LoadFromFile"
+    ],
+    "lIndex": "15539",
+    "rIndex": "15766",
+    "description": "處理樹狀結構(TreeView)的點擊事件,是切換顯示內容的核心入口。根據點擊的層級(案件、文件、表單),重置全域變數並設定對應的 DisplayPath、NowDocNo 與 NowFormCode。接著載入並顯示該層級對應的影像與附件清單,同時動態調整按鈕與選單的可用性。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);",
+    "tags": [
+      "UIView",
+      "UIView.treeView"
+    ],
+    "deps": [
+      "CopyFile",
+      "DeleteImageFile",
+      "LoadFromFile",
+      "ReSortFileName",
+      "RenameFile",
+      "SaveToFile",
+      "_DelTree"
+    ],
+    "lIndex": "15767",
+    "rIndex": "15943",
+    "description": "處理樹狀結構的拖放操作,實現影像的快速歸類或跨案件移動。當使用者將影像縮圖拖至樹狀節點時,程序會判斷目標層級,執行實際的檔案搬移(Copy/Delete)與更名,同步更新 Context.dat 索引檔案,並重新整理樹狀顯示與筆數統計。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;",
+    "tags": [
+      "UIView",
+      "UIView.treeView"
+    ],
+    "deps": [],
+    "lIndex": "15944",
+    "rIndex": "15978",
+    "description": "判斷樹狀結構拖放操作的有效性。程序會檢核來源影像的表單代碼與目標節點的屬性,限制只能將影像拖入特定的表單層級(Level 3),且排除已存在的相同表單、附件目錄或未註冊的文件類型。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.TreeView1KeyUp(Sender: TObject; var Key: Word;",
+    "tags": [
+      "UIView",
+      "UIView.treeView"
+    ],
+    "deps": [],
+    "lIndex": "15979",
+    "rIndex": "15992",
+    "description": "處理樹狀結構的按鍵放開事件。若有選取子節點,則觸發 TreeView1Click 重新載入影像顯示,否則清空視窗。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.TreeView1MouseDown(Sender: TObject;",
+    "tags": [
+      "UIView",
+      "UIView.treeView"
+    ],
+    "deps": [],
+    "lIndex": "15993",
+    "rIndex": "16003",
+    "description": "處理樹狀結構滑鼠按下事件。若是右鍵按下,則自動選取該位置的節點以便後續彈出對應的開單選單。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.TreeView1MouseEnter(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.treeView"
+    ],
+    "deps": [],
+    "lIndex": "16004",
+    "rIndex": "16008",
+    "description": "當滑鼠進入樹狀結構區域時,自動將焦點(Focus)設定至 TreeView1。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.TreeView1MouseMove(Sender: TObject; Shift: TShiftState;",
+    "tags": [
+      "UIView",
+      "UIView.treeView"
+    ],
+    "deps": [],
+    "lIndex": "16009",
+    "rIndex": "16016",
+    "description": "處理樹狀結構滑鼠移動事件,目前實作已註解相關代碼。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.TreeView1MouseUp(Sender: TObject; Button: TMouseButton;",
+    "tags": [
+      "UIView",
+      "UIView.treeView"
+    ],
+    "deps": [],
+    "lIndex": "16017",
+    "rIndex": "16032",
+    "description": "處理樹狀結構滑鼠放開事件。若為右鍵點擊且有選取節點,則觸發 TreeView1Click 並彈出與節點層級對應的右鍵選單。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.ViewModeBtnMouseEnter(Sender: TObject);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16033",
+    "rIndex": "16037",
+    "description": "當滑鼠進入檢視模式按鈕時,顯示該按鈕的 Hint 文字作為工具提示(Tooltip)。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_caseid(const Value: WideString);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16038",
+    "rIndex": "16042",
+    "description": "設定內部變數 FCaseID 的值。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_data(const Value: WideString);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16043",
+    "rIndex": "16047",
+    "description": "設定內部變數 FData 的值。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_mode(const Value: WideString);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16048",
+    "rIndex": "16052",
+    "description": "設定作業模式(FMode),並將傳入的字串轉換為大寫。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_rewrite(const Value: WideString);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16053",
+    "rIndex": "16057",
+    "description": "設定是否強制覆蓋檔案的標記(FReWrite)。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_url(const Value: WideString);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16058",
+    "rIndex": "16062",
+    "description": "設定後端伺服器的基礎 URL 路徑。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_userid(const Value: WideString);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16063",
+    "rIndex": "16067",
+    "description": "設定當前登入的使用者代號。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_username(const Value: WideString);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16068",
+    "rIndex": "16072",
+    "description": "設定當前登入的使用者名稱。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_verify(const Value: WideString);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16073",
+    "rIndex": "16077",
+    "description": "設定 API 呼叫所需的驗證字串。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_language(const Value: WideString);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "FileExists"
+    ],
+    "lIndex": "16078",
+    "rIndex": "16090",
+    "description": "設定語系代碼並執行初始化。會自動修正語系格式(如 zh-tw 轉 zh_tw),若語言檔存在則觸發介面語系切換。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_modename(const Value: WideString);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16091",
+    "rIndex": "16095",
+    "description": "設定作業模式的顯示名稱。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_userunit(const Value: WideString);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16096",
+    "rIndex": "16100",
+    "description": "設定使用者所屬的單位代碼。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_work_no(const Value: WideString);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16101",
+    "rIndex": "16105",
+    "description": "設定當前的業務別(WORK_NO)。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_loandoc_enable(const Value: WideString);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16106",
+    "rIndex": "16117",
+    "description": "設定信用註記功能是否啟用。根據參數(Y/I)動態切換 AddCredit1RG 元件的可用性與可見度。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_loandoc_value(const Value: WideString);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16118",
+    "rIndex": "16122",
+    "description": "設定信用註記的具體數值。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_useproxy(const Value: WideString);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16123",
+    "rIndex": "16130",
+    "description": "設定系統是否使用 Proxy 代理伺服器進行網路連線。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_c_docnamelist(const Value: WideString);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16131",
+    "rIndex": "16135",
+    "description": "設定預設的文件名稱清單。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_c_docnolist(const Value: WideString);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16136",
+    "rIndex": "16140",
+    "description": "設定預設的文件代號清單。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_fixfilelist(const Value: WideString);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16141",
+    "rIndex": "16145",
+    "description": "設定固定的檔案清單字串。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_is_in_wh(const Value: WideString);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16146",
+    "rIndex": "16150",
+    "description": "設定是否為在席(In-Warehouse)作業模式。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_oldcaseinfo(const Value: WideString);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16151",
+    "rIndex": "16155",
+    "description": "設定舊案件的相關資訊字串。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_c_docnamelist: WideString;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16156",
+    "rIndex": "16160",
+    "description": "獲取預設文件名稱清單的存根函式,目前未實作回傳內容。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_c_docnolist: WideString;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16161",
+    "rIndex": "16165",
+    "description": "獲取預設文件代號清單的存根函式,目前未實作回傳內容。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_caseid: WideString;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16166",
+    "rIndex": "16170",
+    "description": "獲取內部案件編號(FCaseID)。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_data: WideString;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16171",
+    "rIndex": "16175",
+    "description": "獲取內部資料字串(FData)。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_fixfilelist: WideString;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16176",
+    "rIndex": "16180",
+    "description": "獲取固定的檔案清單字串(FFixFileList)。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_is_in_wh: WideString;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16181",
+    "rIndex": "16185",
+    "description": "獲取是否為在席作業模式的標記(FIs_In_WH)。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_language: WideString;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16186",
+    "rIndex": "16190",
+    "description": "獲取當前設定的語系代碼(FLanguage)。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_loandoc_enable: WideString;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16191",
+    "rIndex": "16195",
+    "description": "獲取信用註記功能是否啟用的狀態。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_loandoc_value: WideString;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16196",
+    "rIndex": "16200",
+    "description": "獲取當前設定的信用註記數值。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_mode: WideString;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16201",
+    "rIndex": "16205",
+    "description": "獲取當前作業模式(FMode)。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_modename: WideString;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16206",
+    "rIndex": "16210",
+    "description": "獲取作業模式的顯示名稱(FModeName)。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_oldcaseinfo: WideString;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16211",
+    "rIndex": "16215",
+    "description": "獲取舊案件的相關資訊字串(FOldCaseInfo)。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_rewrite: WideString;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16216",
+    "rIndex": "16220",
+    "description": "獲取是否強制覆蓋檔案的標記(FReWrite)。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_url: WideString;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16221",
+    "rIndex": "16225",
+    "description": "獲取後端伺服器的基礎 URL(FUrl)。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_useproxy: WideString;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16226",
+    "rIndex": "16230",
+    "description": "獲取是否使用 Proxy 代理伺服器的設定。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_userid: WideString;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16231",
+    "rIndex": "16235",
+    "description": "獲取當前登入的使用者代號(FUserID)。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_username: WideString;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16236",
+    "rIndex": "16240",
+    "description": "獲取當前登入的使用者名稱(FUserName)。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_userunit: WideString;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16241",
+    "rIndex": "16245",
+    "description": "獲取使用者所屬的單位代碼(FUserUnit)。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_verify: WideString;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16246",
+    "rIndex": "16250",
+    "description": "獲取 API 驗證字串(FVerify)。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_work_no: WideString;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16251",
+    "rIndex": "16255",
+    "description": "獲取當前的業務別代碼(FWork_No)。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_printyn: WideString;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16256",
+    "rIndex": "16260",
+    "description": "獲取是否預設列印的標記(FPrintyn)。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_printyn(const Value: WideString);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16261",
+    "rIndex": "16265",
+    "description": "設定是否預設列印的標記,並將傳入值轉換為大寫。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_is_oldcase: WideString;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16266",
+    "rIndex": "16270",
+    "description": "獲取是否為舊件處理模式的標記(FIs_OldCase)。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_is_oldcase(const Value: WideString);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16271",
+    "rIndex": "16275",
+    "description": "設定是否為舊件處理模式,並將傳入值轉換為大寫。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_custdocyn: WideString;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16276",
+    "rIndex": "16280",
+    "description": "獲取是否支援自定義文件的標記(FCustDocYN)。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_custdocyn(const Value: WideString);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16281",
+    "rIndex": "16285",
+    "description": "設定是否支援自定義文件,並將傳入值轉換為大寫。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_casenolength: WideString;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16286",
+    "rIndex": "16290",
+    "description": "獲取案件編號的長度限制。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_filesizelimit: WideString;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16291",
+    "rIndex": "16295",
+    "description": "獲取單一影像檔案的大小限制(KB)。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_imgdpi: WideString;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16296",
+    "rIndex": "16300",
+    "description": "獲取掃描影像的 DPI 設定值。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_scancolor: WideString;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16301",
+    "rIndex": "16305",
+    "description": "獲取掃描顏色模式的索引值。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_casenolength(const Value: WideString);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16306",
+    "rIndex": "16320",
+    "description": "設定案件編號的長度限制。若傳入值為空字串則設為 0;否則將字串轉換為整數後賦值給 FCaseNoLength 與全域變數 CaseIDLength。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_filesizelimit(const Value: WideString);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16321",
+    "rIndex": "16335",
+    "description": "設定影像檔案的大小限制(KB)。若傳入值為空,則預設為 5120 KB (5MB);否則將字串轉換為整數後賦值給 FFileSizeLimit。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_imgdpi(const Value: WideString);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16336",
+    "rIndex": "16351",
+    "description": "設定掃描 DPI。若傳入值為空,則預設為 300 DPI;否則將字串轉整數後賦值給 FImgDPI,並同步更新全域變數 ScanDpi 與 Def_ScanDpi。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_scancolor(const Value: WideString);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [
+      "ifBlackWhite",
+      "ifGray256",
+      "ifTrueColor"
+    ],
+    "lIndex": "16352",
+    "rIndex": "16376",
+    "description": "設定掃描色彩模式。將傳入的數值字串轉為整數。0 代表黑白(ifBlackWhite),1 代表灰階(ifGray256),2 代表全彩(ifTrueColor)。此函式會同步更新 FScanColor 與全域變數 ScanColor,確保掃描器使用正確的色彩模式。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_imgdelete: WideString;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16377",
+    "rIndex": "16381",
+    "description": "獲取影像刪除權限的標記(FImgDelete)。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_imgdelete(const Value: WideString);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16382",
+    "rIndex": "16386",
+    "description": "設定影像刪除權限。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_check_main_form: WideString;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16387",
+    "rIndex": "16391",
+    "description": "獲取是否檢查主表單的標記(FCheck_main_form)。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_isExternal: WideString;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16392",
+    "rIndex": "16396",
+    "description": "獲取是否為外部呼叫模式的標記(FIsExternal)。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_check_main_form(const Value: WideString);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16397",
+    "rIndex": "16401",
+    "description": "設定是否檢查主表單。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_isExternal(const Value: WideString);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16402",
+    "rIndex": "16406",
+    "description": "設定是否為外部呼叫模式。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.Get_WH_CATEGORY: WideString;",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16407",
+    "rIndex": "16411",
+    "description": "獲取倉庫類別資訊(FWH_category)。"
+  },
+  {
+    "matcher": "procedure TCB_IMGPSScanX.Set_WH_CATEGORY(const Value: WideString);",
+    "tags": [
+      "UIView",
+      "UIView.misc"
+    ],
+    "deps": [],
+    "lIndex": "16412",
+    "rIndex": "16455",
+    "description": "設定倉庫類別(WH_CATEGORY)。此範圍除包含 setter 實作外,亦涵蓋了組件的 initialization 初始區段,負責註冊 ActiveForm 工廠並設定多組授權金鑰(LicenseKey),確保 OCX 運作環境與權限正確初始化。"
+  }
+]
\ No newline at end of file

--
Gitblit v1.8.0