delphi – 当使用键盘通过按钮单击添加字符时,如何让光标移到字
我正在建立一个像触摸屏上的键盘一样的形式.我现在遇到的问题是,当我按下按钮例如“1”按钮时,它必须将该字符“1”添加到编辑框,该编辑框显示已经按下的按键.现在我遇到的问题是,一旦一个人按下一个键,我就可以将char添加到已经显示在编辑框中的字符串,但是光标会转到编辑框的前面,而不会出现在后面.我使用以下代码将char添加到编辑框:
edtPassword.text := edtPassword.text + key; 现在,只需将char添加到编辑框的末尾,但如何将光标移动到编辑框的末尾. 另外我还有一个退格按钮,如果你点击它,我会用什么代码擦除编辑框中字符串的最后一个字符? 我正在使用Delphi XE2 解决方法
免责声明:
我没有回答这个问题.当我需要一个虚拟键盘时,我正试图提出一种我宁愿遵循的方法. 1.现成的组件怎么样? 我建议你使用 它看起来很难看,我宁愿做自己的: 当我第一次看到 2.1.如何以自己的方式模拟击键? 以下代码使用 type TKeyState = (ksDown,ksUp); function SendInputKey(AVirtualKey: Integer; AScanCode: Integer; AKeyState: TKeyState): Boolean; var Input: TInput; begin Input.Itype := INPUT_KEYBOARD; if (AVirtualKey = -1) and (AScanCode >= 0) then begin Input.ki.wVk := MapVirtualKey(AScanCode,MAPVK_VSC_TO_VK); Input.ki.wScan := AScanCode; end else if (AVirtualKey >= 0) and (AScanCode = -1) then begin Input.ki.wVk := AVirtualKey; Input.ki.wScan := MapVirtualKey(AVirtualKey,MAPVK_VK_TO_VSC); end else if (AVirtualKey >= 0) and (AScanCode >= 0) then begin Input.ki.wVk := AVirtualKey; Input.ki.wScan := AScanCode; end; case AKeyState of ksDown: Input.ki.dwFlags := 0; ksUp: Input.ki.dwFlags := KEYEVENTF_KEYUP; end; Result := SendInput(1,Input,SizeOf(TInput)) = 1; end; 以及上述功能的用法.您可以将虚拟密钥,扫描代码或两者传递给此功能.如果您不确定其中任何一个,则传递值-1,并且密钥代码将由 procedure TForm1.SpeedButton1Click(Sender: TObject); begin SendInputKey(VK_BACK,-1,ksDown); SendInputKey(VK_BACK,ksUp); SendInputKey(VK_SHIFT,ksDown); SendInputKey(Ord('A'),ksUp); end; 2.2.如何以禁止的方式模拟击键? 您也可能违反参考,并使用 uses Vcl.Touch.Keyboard,Vcl.Touch.KeyboardTypes; procedure TForm1.SpeedButton1Click(Sender: TObject); var KeyData: TKeyData; begin KeyData := VKey(VK_BACK,-1); SendKey(KeyData,ksDown); SendKey(KeyData,ksUp); KeyData := VKey(VK_SHIFT,ksDown); KeyData := VKey(Ord('A'),ksUp); end; 2.3.如何在不同的视图中模拟击键? > (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |