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
|
};
|
}
|