需求
一个项目,在安卓下使用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,其他版本没试过。