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: 更新內部引用方法參照

---
 uiOutput/PatchFom/PatchFom.ts |  155 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 155 insertions(+), 0 deletions(-)

diff --git a/uiOutput/PatchFom/PatchFom.ts b/uiOutput/PatchFom/PatchFom.ts
new file mode 100644
index 0000000..5850732
--- /dev/null
+++ b/uiOutput/PatchFom/PatchFom.ts
@@ -0,0 +1,155 @@
+import { ref, onMounted } from 'vue';
+
+export function usePatchFomLogic() {
+  // --- State Mapped from Delphi UI Components ---
+  
+  // ScannerGB
+  const isDpiEnabled = ref<boolean>(false); // Enabled = False in DFM
+  const dpi = ref<string>('240');
+  const borderClear = ref<boolean>(false);
+  const deskew = ref<boolean>(false);
+  const reverse = ref<boolean>(false);
+  const duplex = ref<boolean>(false); // Enabled = False in DFM
+  
+  // ImgSetGB
+  const imgSetUse = ref<boolean>(false);
+  const bright = ref<number>(0);
+  const contrast = ref<number>(0);
+  
+  // ScanShowRG (0 = 清楚影像, 1 = 模糊影像, 2 = 無影像)
+  const scanShowMode = ref<string>('0');
+  
+  // ScanRotateRG (0 = 無, 1 = 左轉90度, 2 = 轉180度, 3 = 右轉90度)
+  const scanRotate = ref<string>('0');
+  
+  // BlankGB
+  const blankUse = ref<boolean>(false);
+  const blankSize = ref<number>(0);
+  
+  // Public property equivalent
+  const SelectOk = ref<boolean>(false);
+
+  // --- Mock external Global Variables from CB_IMGPSScanImp ---
+  // In a real application, these would be imported from a store or context
+  const mockGlobalState = {
+    Def_DeviceDelete: false,
+    Def_DeviceDeleteSize: 1024,
+    Def_ScanDpi: 240,
+    Def_ScanDuplex: true,
+    Def_ScannerReverse: false,
+    Def_BoardClear: true,
+    Def_ScanDeskew: true,
+    Def_ScanImgSetUse: false,
+    Def_ScanBright: 10,
+    Def_ScanContrast: 20,
+    Def_ScanRotate: 90, // Mapped to 3 (右轉90度) in switch statement
+    Def_ScanImgShowMode: 1 // Mapped to 1 (模糊影像)
+  };
+
+  // --- Methods ---
+
+  const FormCreate = () => {
+    // Equivalent to PostMessage(Handle,WM_ACTIVATE,WA_CLICKACTIVE,0);
+    console.log('FormCreate: PatchDlg activated');
+  };
+
+  const BlankuseCBClick = () => {
+    // If BlankuseCB.Checked Then SpinEdit5.Enabled := True Else SpinEdit5.Enabled := False;
+    // handled via Vue binding `:disabled="!blankUse"` in template, 
+    // but kept here for logical representation
+    console.log('BlankuseCBClick triggered, blankUse:', blankUse.value);
+  };
+
+  const DefaultBtClick = () => {
+    // Reset to defaults
+    blankUse.value = mockGlobalState.Def_DeviceDelete;
+    blankSize.value = mockGlobalState.Def_DeviceDeleteSize;
+    
+    dpi.value = mockGlobalState.Def_ScanDpi.toString();
+    duplex.value = mockGlobalState.Def_ScanDuplex;
+    reverse.value = mockGlobalState.Def_ScannerReverse;
+    borderClear.value = mockGlobalState.Def_BoardClear;
+    deskew.value = mockGlobalState.Def_ScanDeskew;
+    
+    imgSetUse.value = mockGlobalState.Def_ScanImgSetUse;
+    bright.value = mockGlobalState.Def_ScanBright;
+    contrast.value = mockGlobalState.Def_ScanContrast;
+    
+    switch (mockGlobalState.Def_ScanRotate) {
+      case 0: scanRotate.value = '0'; break;
+      case 270: scanRotate.value = '1'; break;
+      case 180: scanRotate.value = '2'; break;
+      case 90: scanRotate.value = '3'; break;
+      default: scanRotate.value = '0'; break;
+    }
+    
+    switch (mockGlobalState.Def_ScanImgShowMode) {
+      case 0: scanShowMode.value = '0'; break;
+      case 1: scanShowMode.value = '1'; break;
+      case 2: scanShowMode.value = '2'; break;
+      default: scanShowMode.value = '0'; break;
+    }
+    
+    console.log('Default values loaded');
+  };
+
+  const OkBtClick = () => {
+    SelectOk.value = true;
+    closeForm('ok');
+  };
+
+  const CancelBtClick = () => {
+    SelectOk.value = false;
+    closeForm('cancel');
+  };
+
+  const ComboBox1KeyPress = (e: KeyboardEvent) => {
+    // IF ((Ord(Key) < 48) or (ord(Key) > 57)) and (ord(key) <> 8) Then key := Chr(0);
+    const charCode = e.charCode;
+    if ((charCode < 48 || charCode > 57) && e.key !== 'Backspace') {
+      e.preventDefault();
+    }
+  };
+
+  const ComboBox1Exit = () => {
+    // IF ComboBox1.Text = '' Then ComBoBox1.Text := '240';
+    if (!dpi.value) {
+      dpi.value = '240';
+    }
+  };
+
+  // Helper function to simulate modal close
+  const closeForm = (result: string) => {
+    console.log(`PatchDlg closing with result: ${result}`);
+  };
+
+  onMounted(() => {
+    FormCreate();
+    // Usually you'd call DefaultBtClick() here or in the parent before opening
+  });
+
+  return {
+    // State
+    isDpiEnabled,
+    dpi,
+    borderClear,
+    deskew,
+    reverse,
+    duplex,
+    imgSetUse,
+    bright,
+    contrast,
+    scanShowMode,
+    scanRotate,
+    blankUse,
+    blankSize,
+    
+    // Actions
+    BlankuseCBClick,
+    DefaultBtClick,
+    OkBtClick,
+    CancelBtClick,
+    ComboBox1KeyPress,
+    ComboBox1Exit
+  };
+}

--
Gitblit v1.8.0