我的表单中有4个Tedit,所有标签的格式都以3的制表符顺序为0(如下图所示)。
但是,当我单击手机中的下一个按钮时,焦点没有改变...
如果我键入一些文本,请单击“下一步”按钮(不执行任何操作),然后将焦点从一个焦点手动更改为另一个焦点,然后继续键入,它将复制Tedit1中的所有文本并将其粘贴到Tedit2中,好像它已经补充了相同的Tedit。
我已经搜索了类似的问题,但没有找到任何人遇到同样的问题...
任何人都可能会出什么问题吗?我使用的是Delphi Tokyo,并且正在开发Android设备。
糟糕:我已经尝试检查“ KillFocusByReturn”和Tedit1的“ onExit”功能,并放在“ Tedit2.SetFocus”上,但这还是行不通的。
答案 0 :(得分:3)
但是,当我单击手机中的下一个按钮时,焦点没有改变...
根据ReturnKeyType
文档:
表示在编辑控件的文本并按下虚拟键盘上的回车键时,编辑控件执行的type of action。运行时平台使用该值来确定它在虚拟键盘上显示的用于编辑控件的返回按钮的类型。
ReturnKeyType
的值不影响按返回键时编辑控件执行的实际操作。要定义该动作,请使用OnKeyUp
事件。
因此,您需要为OnKeyUp
分配一个Edit1
事件处理程序,并且当它指示按下 Return 键时,使其调用Edit2.SetFocus()
。然后对Edit2
执行下一个控件的相同操作。依需要依此类推。
答案 1 :(得分:1)
如果您希望使用Return键将焦点移至下一个控件,则可能需要尝试执行以下操作:
procedure TfrmMain.FormKeyDown(Sender: TObject; var Key: Word;
var KeyChar: Char; Shift: TShiftState);
begin
if Key = vkReturn then
begin
Key := vkTab;
KeyDown(Key, KeyChar, Shift);
end;
end;