curtis
14小時前 10220027159dc90f19f7c62a7b84bb00c6453d4c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
[
  {
    "matcher": "procedure TCB_IMGPSScanX.StatrTwainScan;",
    "tags": [
      "ScannerController",
      "ScannerController.twainWrapper",
      "掃描相關"
    ],
    "deps": [
      "TTiffGraphic",
      "StatrTwainScan",
      "Scanner",
      "Scanner.OpenSource",
      "Scanner.CloseSource",
      "OnAcquire",
      "Scanner.AcquireWithSourceOpen"
    ],
    "lIndex": "4390",
    "rIndex": "4443",
    "description": "啟動 TWAIN 掃瞄流程。此方法首先檢查掃瞄器驅動是否已安裝,接著初始化 ScanInfo 結構並設定掃瞄參數(如 DPI、影像格式、是否顯示 UI、雙面掃瞄模式、亮度與對比)。流程中會開啟掃瞄來源,呼叫 AcquireWithSourceOpen 執行實際掃瞄作業,並利用 try...finally 確保不論掃瞄成功與否,最終都會關閉掃瞄來源並釋放資源。"
  },
  {
    "matcher": "procedure TCB_IMGPSScanX.OnAcquire( const DibHandle    : THandle;",
    "tags": [
      "ScannerController",
      "ScannerController.twainWrapper",
      "掃描相關"
    ],
    "deps": [
      "TTiffGraphic",
      "TJpegGraphic",
      "OnAcquire"
    ],
    "lIndex": "4444",
    "rIndex": "4683",
    "description": "掃瞄影像獲取後的回呼處理函數。核心邏輯包含:1. 將獲取的 DIB 句柄轉為影像對象並設定 DPI。2. 依影像格式執行對應處理:黑白影像會進行條碼辨識、依條碼角度旋轉、影像反向、傾斜矯正及清黑邊;全彩或灰階影像則設定 JPEG 壓縮品質。3. 檢查是否需要進行 A3 切割為 A4 的處理。4. 透過 Deletepage 檢查並過濾空白頁(依據檔案大小)。5. 對於有效影像,更新 UI 顯示並呼叫 PageEnd 決定儲存路徑與檔名,最後依副檔名儲存為 TIFF 或 JPEG 並呼叫 PageDone 完成頁面流程。"
  },
  {
    "matcher": "procedure TCB_IMGPSScanX.PageDone;",
    "tags": [
      "ScannerController",
      "ScannerController.twainWrapper",
      "掃描相關"
    ],
    "deps": [
      "LoadFromFile",
      "PageDone"
    ],
    "lIndex": "4684",
    "rIndex": "4733",
    "description": "完成單頁影像處理後的 UI 更新邏輯。此方法會遞增掃瞄影像總計數,並根據目前的掃瞄模式(新建、取代、插入或取樣)將儲存好的影像檔載入到對應的 ImageScrollBox 元件中。在新建模式下,還會根據 ScanImgShowMode 設定決定影像顯示的品質(反鋸齒開啟與否)與縮放模式(zmFittopage),確保使用者能即時預覽掃瞄結果。"
  },
  {
    "matcher": "procedure TCB_IMGPSScanX.PageEnd;",
    "tags": [
      "ScannerController",
      "ScannerController.twainWrapper",
      "掃描相關"
    ],
    "deps": [
      "GetNoNameCase",
      "DirectoryExists",
      "_DelTree",
      "Str2Dir",
      "SaveToFile",
      "PageEnd"
    ],
    "lIndex": "4734",
    "rIndex": "4950",
    "description": "管理掃瞄影像的儲存路徑與檔案命名規則。主要邏輯如下:1. 辨識條碼以取得 FormID,並判斷是否為導引頁或分案頁。2. 若偵測到分案頁,會重置計數並嘗試取得新的案件編號(CaseID)。3. 確定儲存目錄,包含處理「分份數」邏輯(依 DocNoNeedDiv 決定是否建立新子目錄)。4. 根據目前頁數與 FormID 產生標準化的檔名(如補零序號_FormID.tif)。5. 更新 ContextList(影像索引資訊)並在掃瞄新案件時更新 TreeView UI 結構。此方法確保每張影像都能正確歸類到對應的案件與文件目錄下。"
  },
  {
    "matcher": "Procedure TCB_IMGPSScanX.R_W_Scanini(Mode:Char); //'R'讀取;'W'寫入",
    "tags": [
      "ScannerController",
      "ScannerController.twainWrapper",
      "掃描相關"
    ],
    "deps": [
      "Scanner"
    ],
    "lIndex": "5254",
    "rIndex": "5295",
    "description": "讀取或寫入掃瞄設定檔(FBScan.ini)。此方法使用 Tinifile 物件處理掃瞄相關參數的 I/O 作業。當 Mode 為 'R' 時,從設定檔讀取包含空白頁刪除設定、影像反向、清黑邊、旋轉角度、傾斜矯正、亮度對比以及 UI 顯示模式等參數;當 Mode 為 'W' 時,則將目前的系統變數值回寫至設定檔中,以利下次啟動時恢復使用者的個性化設定。"
  },
  {
    "matcher": "Procedure TCB_IMGPSScanX.GetDefScanIni; //取得掃瞄的預設值",
    "tags": [
      "ScannerController",
      "ScannerController.twainWrapper",
      "掃描相關"
    ],
    "deps": [
      "Rotate",
      "FJpgCompression",
      "Scanner"
    ],
    "lIndex": "5296",
    "rIndex": "5472",
    "description": "從資料庫參數清單(WORK_INF_List)初始化並設定掃瞄的系統預設值。流程首先設定一組程式內建的預設數值,隨後遍歷 WORK_INF_List 並比對 PARA_NO 關鍵字,動態更新包含:空白頁判斷大小、影像是否反相、清黑邊、掃瞄 DPI、雙面掃瞄開啟、影像旋轉角度、傾斜矯正、亮度對比、影像儲存路徑、導引頁與分案頁代碼列表、以及 JPEG 壓縮品質等關鍵參數。這使得掃瞄行為可以透過後台設定進行彈性調整。"
  },
  {
    "matcher": "procedure TCB_IMGPSScanX.initkscan;",
    "tags": [
      "ScannerController",
      "ScannerController.twainWrapper"
    ],
    "deps": [
      "initkscan",
      "Scanner",
      "Scanner.OpenSource",
      "Scanner.CloseSource"
    ],
    "lIndex": "9242",
    "rIndex": "9262",
    "description": "初始化並偵測掃瞄器硬體能力。此方法會先將雙面掃瞄勾選框(ScanDuplexCB)設為停用,接著嘗試開啟掃瞄來源(OpenSource),檢查掃瞄器是否支援雙面掃瞄功能(DuplexCap > 0)。如果硬體支援,則啟用 UI 上的勾選框供使用者選擇。最後確保關閉掃瞄來源,若過程中發生異常,會呼叫 DataLoading(False,True) 停止載入狀態提示。"
  }
]