reassemble/view/popupMenu.pas
@@ -1,11 +1,14 @@
{ ==============================================================================
  方法名稱:PM401Click
  引用相依:GetNoNameCase, Str2Dir, RenameFile, SaveToFile, FileExists, LoadFrom
            File
  方法描述:影像列表右鍵選單功能:從指定頁面分出新案。確認使用者選取的分案起點(不
            能為第一頁)後,取得新的流水案號並建立目錄。將原案件中該頁碼之後的所有
            影像檔案更名並搬移至新案目錄,同步更新原案與新案的 Context.dat 與 Cas
            eIndex.dat。完成後重新載入影像列表並提示完成。
  引用相依:GetNoNameCase, ReNameFile, SetCaseList, WriteCaseIndex, FileName2NoQuene_Filename
  方法描述:【執行影像分案作業】
            將目前案件中選取頁面之後的所有影像拆分至一個新案件中。
            1. 檢查:禁止從第一頁開始分案。
            2. 目錄準備:取得新流水案號 (GetNoNameCase) 並建立實體目錄。
            3. 檔案遷移:遍歷 ContextList,將目標索引後的檔案實體更名搬移至新路徑。
            4. 索引更新:同步扣除原案件的 Context 紀錄,並為新案件產生 Context.dat。
            5. 資料複製:將原案的經辦資訊 (CaseIndex.dat) 繼承至新案。
            6. 結構同步:將新案加入全域案件清單 (SetCaseList) 並重載介面。
============================================================================== }
procedure TCB_IMGPSScanX.PM401Click(Sender: TObject);
var
@@ -96,11 +99,12 @@
{ ==============================================================================
  方法名稱:PM404Click
  引用相依:
  方法描述:影像列表右鍵選單功能:文件歸類。開啟 TDocListForm 顯示可用的表單清單供
            使用者選擇。確認後根據當前 TreeView 的選取層級(案件級別、文件級別或特
            定表單),呼叫 PageReplaceFormID 將影像重新歸類至選定的表單類型。歸類完
            成後重新繪製樹狀結構並清空檢核記錄,最後回到原先選取的節點。
  引用相依:TDocListForm, PageReplaceFormID, DrawDocItem2, ClearErrini
  方法描述:【影像列表:執行文件歸類】
            1. 選單展示:開啟 TDocListForm,由 FORM_INF_List 中過濾目前有效的表單。
            2. 層級識別:根據 TreeView 選取的 Level(案件、文件或表單)決定替換範圍。
            3. 批量替換:呼叫 PageReplaceFormID 執行所有選中影像的 FormID 修正。
            4. 結構重繪:歸類完成後重新繪製樹狀圖並清空歷史檢核錯誤標記。
============================================================================== }
procedure TCB_IMGPSScanX.PM404Click(Sender: TObject);
var
@@ -174,13 +178,15 @@
{ ==============================================================================
  方法名稱:PM601Click
  引用相依:FileExists, LoadFromFile, DirectoryExists, CopyFile, SaveToFile, Del
            eteImageFile, RenameFile, ReSortFileName
  方法描述:縮圖瀏覽區右鍵選單功能:文件歸類。針對所有被選取(由 Shape 標記)的影像,
            開啟 TDocListForm 選擇目標表單。核心邏輯包含:判斷目標文件是否需要區分
            份數、自動產生新的文件目錄或沿用既有目錄、根據檔案序號產生新檔名、執行
            檔案複製並更新 ContextList。最後刪除原檔案、重新排序原目錄並重新繪製樹
            狀結構。
  引用相依:FindLastestDocDir, SetDocNoList, SetContextList, DeleteImageFile, ReSortFileName
  方法描述:【縮圖區域:執行選中影像歸類】
            針對縮圖預覽區選中的所有標記影像執行批次表單分類。
            1. 分類判定:開啟表單選擇清單,取得目標 FormID 與 DocNo。
            2. 目錄決策:判斷目標文件是否需分份 (DocNoNeedDiv),據此建立新目錄或
               沿用現有目錄。
            3. 檔案遷移:將選中影像複製到目標目錄,並依序產出新的序號檔名。
            4. 索引維護:更新目標目錄與原目錄的 Context.dat,並執行實體刪除原檔案。
            5. UI 同步:重新排序受影響的目錄,並刷新 TreeView。
============================================================================== }
procedure TCB_IMGPSScanX.PM601Click(Sender: TObject);
var
@@ -339,12 +345,13 @@
{ ==============================================================================
  方法名稱:PM602Click
  引用相依:Str2Dir, FileExists, LoadFromFile, CopyFile, SaveToFile, DeleteImage
            File, ReSortFileName
  方法描述:縮圖瀏覽區右鍵選單功能:歸類至自定義文件。彈出對話框要求使用者輸入新文
            件名稱,檢核名稱是否重複後產生新的自定義文件編號。接著將所有選取的影像
            複製到新建立的文件目錄下,更新 ContextList並刪除原檔案。最後重新排序並
            刷新樹狀顯示。
  引用相依:GetNewCustomDocNo, SetDocNoList, SetContextList, DeleteImageFile, ReSortFileName
  方法描述:【縮圖區域:歸類至自定義文件】
            將選取的影像歸類至使用者自行命名的文件類別中。
            1. 名稱設定:彈出對話框詢問名稱,並檢查是否與現有文件衝突。
            2. 代號分配:呼叫 GetNewCustomDocNo 配發 ZZZZZ 或 YYYYY 編號。
            3. 檔案遷移:建立實體目錄,複製選中影像並產生對應的偽表單檔名。
            4. 清理與重繪:執行原目錄檔案刪除與排序,更新樹狀結構統計。
============================================================================== }
procedure TCB_IMGPSScanX.PM602Click(Sender: TObject);
var
@@ -428,7 +435,7 @@
{ ==============================================================================
  方法名稱:PM604Click
  引用相依:DeskewImg, SaveToFile, LoadFromFile
  引用相依:DeskewImg, LoadFromFile, SaveToFile
  方法描述:縮圖瀏覽區右鍵選單功能:自動去偏斜(Deskew)。遍歷所有選取的影像元件,對
            其 Graphic 執行 DeskewImg 操作,重新繪製並將結果存回原檔案。
============================================================================== }
@@ -458,10 +465,13 @@
{ ==============================================================================
  方法名稱:PM605Click
  引用相依:DeleteImageFile, ReSortFileName
  方法描述:縮圖瀏覽區右鍵選單功能:刪除影像。在使用者確認後,遍歷所有選取的影像元
            件,呼叫 DeleteImageFile 刪除實際檔案。刪除完成後,執行檔案重新排序(ReS
            ortFileName),更新樹狀結構上的頁數統計文字,並刷新顯示。
  引用相依:DeleteImageFile, ReSortFileName, NewTreeNodeRefresh, ClearErrini
  方法描述:【縮圖區域:批量刪除影像】
            執行物理刪除並同步系統索引。
            1. 確認:彈出對話框確認刪除意圖。
            2. 迭代刪除:遍歷所有標記 (Shape) 的影像,呼叫 DeleteImageFile 移除檔案。
            3. 重整:執行 ReSortFileName 重新整理目錄序號。
            4. 連動:更新案件總頁數標籤,清空檢核記錄,並重載 TreeView 層級。
============================================================================== }
procedure TCB_IMGPSScanX.PM605Click(Sender: TObject);
var
@@ -504,11 +514,15 @@
{ ==============================================================================
  方法名稱:PM101Click
  引用相依:_DelTree, DirectoryExists, DeleteDocNoFile
  方法描述:處理樹狀結構(TreeView)的右鍵刪除選單。根據選取的節點類型(新掃瞄件、案
            件、文件或表單)執行不同範圍的刪除:包含刪除實體目錄、清空影像清單、更新
            案件索引及檢核記錄。針對異動模式(ESCAN),若刪除後無影像則會重建空案件
            以維持結構。
  引用相依:DeleteDocNoFileForESCAN, DeleteFormCodeFile, SetCaseList, SetDocNoList, _DelTree, ClearErrini
  方法描述:【樹狀結構:多層級刪除處理】
            根據 TreeView 目前選取的節點深度執行聯動刪除:
            1. 根節點 (NewTreeNode):刪除本地所有案件暂存。
            2. 案件節點 (Level 1):刪除該案目錄並從案件清單中移除。
            3. 文件節點 (Level 2):刪除特定類別目錄。若為補件模式 (ESCAN),呼叫
               DeleteDocNoFileForESCAN 僅刪除當次新掃影像以保護舊檔。
            4. 表單節點 (Level 3):呼叫 DeleteFormCodeFile 刪除單一表單的所有頁面。
            所有操作均會同步執行 ReSortFileName 與筆數統計重新計算。
============================================================================== }
procedure TCB_IMGPSScanX.PM101Click(Sender: TObject);
var
@@ -618,10 +632,13 @@
{ ==============================================================================
  方法名稱:PM102Click
  引用相依:DirectoryExists, RenameFile
  方法描述:處理「修改案件編號」右鍵選單。彈出輸入盒要求輸入新編號並驗證長度與是否
            重複。確認修改後,先清空當前影像顯示,接著執行磁碟目錄更名並更新案件清
            單文字。最後重新繪製該案件的文件樹狀結構並提示完成。
  引用相依:RenameFile, SetCaseList, DrawDocItem2, ClearView
  方法描述:【變更案件編號】
            1. 檢查:確認輸入的新案號符合長度規範且無重複。
            2. 同步:清除當前影像預覽以釋放檔案鎖定。
            3. 更名:執行 RenameFile 進行磁碟目錄重新命名。
            4. 索引維護:呼叫 SetCaseList 更新本地全域案件清單文字。
            5. UI 重繪:更新樹狀結構頂層文字並重新繪製子節點。
============================================================================== }
procedure TCB_IMGPSScanX.PM102Click(Sender: TObject);
var
@@ -713,16 +730,16 @@
{ ==============================================================================
  方法名稱:PM104Click
  引用相依:TTiffGraphic, TJpegGraphic, FJpgCompression, DeskewImg, ConvertToBW,
             MpsGetBarcode, Rotate, CheckNeedCrop, CropImg, ifBlackWhite, tcGrou
            p4, ifColor25, ConvertToGray, tcJpeg, ifTrueColor, ifGray256, SaveQu
            ality, FindFirst, LoadFromFile, SaveToFile, DirectoryExists, _DelTre
            e, GetNoNameCase, Str2Dir, FileExists
  方法描述:處理「匯入影像檔案」右鍵選單。開啟檔案對話框選取 TIF/JPG/PNG 檔,並檢查
            檔案大小是否超過限制。核心流程包含:計算總頁數、逐頁載入、執行自動去偏斜
            (Deskew)、條碼辨識以判斷 FormID、處理 A3 切圖(左右分割)、將影像轉換為對
            應格式(黑白轉 TIF G4,彩色/灰階轉 JPG)並寫入磁碟,最後更新索引、樹狀結
            構與頁數統計。
  引用相依:MpsGetBarcode, CheckNeedCrop, Rotate, CropImg, DeskewImg, SetContextList
  方法描述:【外部影像檔案匯入】
            支援 TIF/JPG/PNG 格式,整合自動化處理流水線。
            1. 限額檢核:比對 FFileSizeLimit,防止匯入過大檔案影響傳輸。
            2. 圖像增強:載入後即執行自動去偏斜 (Deskew)。
            3. A3 分割判定:若偵測到影像寬度特徵符合 A3 規格 (CheckNeedCrop),
               則將影像垂直裁切為左右兩張單頁。
            4. 條碼導向:執行條碼辨識,根據結果自動決定存放的文件子目錄 (DocDir)。
            5. 標準化封裝:將黑白圖存為 G4 TIF,彩色圖以 30% 質量壓縮存為 JPG。
            6. 完成聯動:更新全案索引、清空舊檢核紀錄並重刷 UI。
============================================================================== }
Procedure TCB_IMGPSScanX.PM104Click(Sender: TObject);
Var
@@ -1343,10 +1360,11 @@
{ ==============================================================================
  方法名稱:PM109Click
  引用相依:SaveToFile
  方法描述:處理「案件 OMR 檢核」右鍵選單。清空當前顯示並開啟檢核進度,呼叫 OMRCheck
            Case 對案件執行光學劃記辨識檢核。若檢核成功則建立 OMRCheckOk.dat 標記
            檔,最後重新載入影像、刷新樹狀結構並提示檢核完成。
  引用相依:OMRCheckCase, LoadImgFile
  方法描述:【執行單筆案件 OMR 檢核】
            1. 觸發檢核:呼叫 OMRCheckCase 執行自動辨識與規則校驗。
            2. 狀態記錄:若通過所有檢核規則,產生 OMRCheckOk.dat 標記。
            3. UI 回饋:重新載入影像並更新樹狀圖示(顯示通過/失敗圖示)。
============================================================================== }
procedure TCB_IMGPSScanX.PM109Click(Sender: TObject);
var
@@ -1381,10 +1399,12 @@
{ ==============================================================================
  方法名稱:PM110Click
  引用相依:Str2Dir
  方法描述:處理「新增其他文件」右鍵選單。彈出對話框要求輸入自定義名稱,驗證無誤後產
            生新的文件編號並在案件目錄下建立實體子目錄。隨後將新目錄加入清單並重
            新繪製樹狀結構,最後自動展開新建立的節點。
  引用相依:GetNewCustomDocNo, SetDocNoList, DrawDocItem2
  方法描述:【樹狀區域:新增自定義文件】
            1. 設定名稱:彈出對話框供使用者自定義文件標題。
            2. 分配:呼叫 GetNewCustomDocNo 取得 ZZZZZ/YYYYY 編號。
            3. 建立:在實體磁碟建立對應子目錄。
            4. 註冊:將新文件加入 CaseDocNo.dat 索引並刷新樹狀顯示。
============================================================================== }
procedure TCB_IMGPSScanX.PM110Click(Sender: TObject);
var
@@ -1419,10 +1439,12 @@
{ ==============================================================================
  方法名稱:PM111Click
  引用相依:
  方法描述:處理「修改文件份數」右鍵選單。取得當前份數並供使用者修改(範圍 1-9999)。
            若份數有變動則執行驗證(如分份文件限制),確認後更新 SetDocDirCopies 設
            定並標記文件已編輯,最後刷新樹狀結構統計。
  引用相依:SetDocDirCopies, SetRecordEditedDocDir, DrawDocItem2
  方法描述:【修改文件預期份數】
            1. 範圍:使用者可調整該文件類別的份數 (1~9999)。
            2. 規則限制:若該類文件定義為需分份 (DocNoNeedDiv),則份數不可降為 1。
            3. 儲存:呼叫 SetDocDirCopies 更新 CaseDocNo_Copies.dat。
            4. 記錄:同步標記該目錄為「已編輯」,用於上傳異動判定並重繪 UI 統計。
============================================================================== }
procedure TCB_IMGPSScanX.PM111Click(Sender: TObject);
var
@@ -1660,7 +1682,7 @@
{ ==============================================================================
  方法名稱:PM508Click
  引用相依:_DelTree, SaveToFile, ReSortFileName, LoadFromFile, FileExists
  引用相依:FileExists, LoadFromFile, ReSortFileName, SaveToFile, _DelTree
  方法描述:處理影像區域的「刪除影像」右鍵選單。若案件僅剩一張影像則詢問是否刪除整
            個案件目錄。否則,在確認後從影像清單中移除該項目、刪除實體檔案並呼叫 Re
            SortFileName 重新排序。最後刷新樹狀統計文字、清空檢核記錄並更新顯示。