Delphi D10 StringGrid安卓下虚拟键盘的使用

需求

一个项目,在安卓下使用Grid对数据的处理更为直观与方便,所以选择了StringGrid,起初绑定数据,设置数据内容的增、删、保存等非常方便,不用一行代码搞定。问题出在1、怎么让某个单元格输入完成后可以确认输入后(或说自动)跳转到下一个单元格,因为每次去点击单元格都感觉不很方便;2、各单元格所在列,有字符、有数字,怎么样让虚拟键盘出来后可以是对应的默认状态,每次去切换也不是很人性化的。

解决方法

点击键盘确认键自动到下一个单元格

StringGrid有一个属性“Model”,在属性框里看不到的,所以需要使用代码的方式去设置。在窗体初始化时,如创建过程增加下面一行代码:

StringGrid1.Model.CellReturnAction:=TCellReturnAction.GotoNextColumn;

TCellReturnAction对应三个选择项:(None, GotoNextRow, GotoNextColumn),根据项目需要选择对应的跳转就可以了。默认情况下是None,不会跳转的。

如果单元格是数字型的,虚拟键盘自动弹出数字输入模式

因为使用的是数据绑定方式,默认情况下并没有去选择对应列的数据类型,如下图红框。通常自动时为默认选项,
在这里插入图片描述
其中类型TCurrencyColumn、TFloatColumn或TIntegerColumn都是继承于TCustomNumberColumn,所以,当选择这三个中的其中一个时,虚拟键盘会自动转换为数字输入模式。三种类型在显示与输入上有不同限制,需要根据不同情况去选择合适的使用。
如果不是绑定数据方式,在设置StringGrid各列是,选择对应的列类型也是可以的。

过程是辛苦的

最初在网上没有找到资料,官网对控件属性与方法的描述也不全面,Delphi好就好在可以看系统处理源码,再一点一点去跟踪与分析。
之前尝试过在KeyUp事件中判断Key = vkReturn的方式去通过代码处理的,失败了。查资料没有,没办法只能一点一点试,一点一点看系统代码。

测试环境:10.3.2,其他版本没试过。

在这里插入图片描述

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值