From 868daf94f29ce1ffdd799a68c07bb668cd373bcd Mon Sep 17 00:00:00 2001 From: HP\李良庭 <liliangting@lanpucloud.cn:1111> Date: 星期二, 08 七月 2025 11:49:03 +0800 Subject: [PATCH] 提交分辨率自适应版本V3.1.0.1500 --- demo/Keyboard/uMain.pas | 177 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 177 insertions(+), 0 deletions(-) diff --git a/demo/Keyboard/uMain.pas b/demo/Keyboard/uMain.pas new file mode 100644 index 0000000..bfdc4a3 --- /dev/null +++ b/demo/Keyboard/uMain.pas @@ -0,0 +1,177 @@ +unit uMain; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, XpMan, Buttons, sBitBtn; + +type + TfrmMain = class(TForm) + edtSelect: TEdit; + edtText: TEdit; + sBitBtn50: TsBitBtn; + sBitBtn51: TsBitBtn; + sBitBtn52: TsBitBtn; + sBitBtn53: TsBitBtn; + Button27: TButton; + Button28: TButton; + Button29: TButton; + Button30: TButton; + Button31: TButton; + Button32: TButton; + Button33: TButton; + Button34: TButton; + Button35: TButton; + Button36: TButton; + Button1: TButton; + Button2: TButton; + Button3: TButton; + Button4: TButton; + Button5: TButton; + Button6: TButton; + Button7: TButton; + Button8: TButton; + Button9: TButton; + Button10: TButton; + Button11: TButton; + Button12: TButton; + Button13: TButton; + Button14: TButton; + Button15: TButton; + Button16: TButton; + Button17: TButton; + Button18: TButton; + Button19: TButton; + Button20: TButton; + Button21: TButton; + Button22: TButton; + Button23: TButton; + Button24: TButton; + Button25: TButton; + Button26: TButton; + btnZh: TButton; + Button37: TButton; + procedure sBitBtn50Click(Sender: TObject); + procedure sBitBtn51Click(Sender: TObject); + procedure sBitBtn52Click(Sender: TObject); + procedure sBitBtn53Click(Sender: TObject); + procedure btnZhClick(Sender: TObject); + procedure Button1Click(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + glInkOutput : String; + procedure InsertStringAtCursor(EditControl: TEdit; Str: string); + procedure DeleteCharsBeforeCursor(EditControl: TEdit; Count: Integer=1); + end; + +var + frmMain: TfrmMain; + +implementation + +{$R *.dfm} + +//------------------------------------------------------------------------------ +// 模拟按下和释放按键 +procedure SimulateKeyPress(KeyCode: Word); +begin + keybd_event(KeyCode, MapVirtualKey(KeyCode, 0), 0, 0); + keybd_event(KeyCode, MapVirtualKey(KeyCode, 0), KEYEVENTF_KEYUP, 0); +end; + +// 模拟按下和释放组合键 +procedure SimulateCombinationKeyPress(KeyCode1, KeyCode2: Word); +begin + keybd_event(KeyCode1, MapVirtualKey(KeyCode1, 0), 0, 0); + keybd_event(KeyCode2, MapVirtualKey(KeyCode2, 0), 0, 0); + keybd_event(KeyCode2, MapVirtualKey(KeyCode2, 0), KEYEVENTF_KEYUP, 0); + keybd_event(KeyCode1, MapVirtualKey(KeyCode1, 0), KEYEVENTF_KEYUP, 0); +end; + +//------------------------------------------------------------------------------ +//从光标处插入字符 +procedure TfrmMain.InsertStringAtCursor(EditControl: TEdit; Str: string); +begin + // 保存当前光标位置 + EditControl.SelStart := EditControl.SelStart; + EditControl.SelLength := 0; // 不选择任何文本,确保只插入而不替换 + EditControl.SelText := Str; // 插入字符串 +end; + +//自定义函数:从光标处删除字符 +procedure TfrmMain.DeleteCharsBeforeCursor(EditControl: TEdit; Count: Integer=1); +var + CursorPos, NewStart: Integer; +begin + CursorPos := EditControl.SelStart; + if CursorPos >= Count then + begin + NewStart := CursorPos - Count; // 计算新的选择起点 + EditControl.SelStart := NewStart; + EditControl.SelLength := Count; // 选择Count个字符 + EditControl.SelText := ''; // 删除选定的文本 + end + else + begin + // 如果Count大于光标位置,则删除所有在光标之前的字符 + EditControl.SelStart := 0; + EditControl.SelLength := CursorPos; + EditControl.SelText := ''; + end; +end; + +//------------------------------------------------------------------------------ +//清除所有输入 +procedure TfrmMain.sBitBtn50Click(Sender: TObject); +begin + edtSelect.Clear; +end; + +//确认字符 +procedure TfrmMain.sBitBtn51Click(Sender: TObject); +begin + //把待选取文字拷贝到edtText中 + InsertStringAtCursor(edtText, Trim(edtSelect.Text)); +end; + +//删除字符 +procedure TfrmMain.sBitBtn52Click(Sender: TObject); +begin + DeleteCharsBeforeCursor(edtText); +end; + +//拷贝输入内容,退出 +procedure TfrmMain.sBitBtn53Click(Sender: TObject); +begin + //将结果更新到全局变量 + glInkOutput := edtText.Text; + Close(); +end; + +// 切换到中文输入法 +procedure TfrmMain.btnZhClick(Sender: TObject); +begin + // 假设使用 Ctrl + 空格切换输入法 + SimulateCombinationKeyPress(VK_CONTROL, VK_SPACE); +end; + +//------------------------------------------------------------------------------ +// 字符按钮处理程序 +procedure TfrmMain.Button1Click(Sender: TObject); +var + KeyChar: Char; + KeyCode: Word; +begin + //屏幕键盘输入字母 + if TButton(Sender).Tag<=37 then begin + KeyChar := TButton(Sender).Caption[1]; // 提取按钮 Caption 字符 + KeyCode := VkKeyScan(KeyChar); + SimulateKeyPress(KeyCode); + end; + edtSelect.SetFocus; +end; + +end. -- Gitblit v1.9.3