姓名:李小龙 性别:男 生日:1970-01-01
国家:中国 爱好:武术 特长:截拳道
作品:唐山大兄 偶像:叶问
如上:焦点现在在【爱好】上,如果按向上键就到【性别】,向下键就到【偶像】,向左键就到【国家】,向右键就到【特长】。
这样的效果如何实现?
我们可以通过遍历所以列,然后在datawindow的key事件中去判断该将焦点移动哪个列上,具体做法如下:
(1)建立一个grid类型的数据窗口d_obj_free,用来存储freeform数据窗口的所有列,该数据窗口包含5个列
(2)建立一个继承自datawindow的标准的控件对象:uo_datawindow
由于datawindow可以为列的visible, protect等属性设置expression内容,因此在读取这些属性时不能单纯的使用describe,在uo_datawindow中建立一个取属性的函数of_describe(string as_describe, long row)
(3)在uo_datawindow中建立实例变量: datastore ids_obj ,用来存储列对象,在uo_datawindow的constructor事件中对datawindow进行遍历,并存到ids_obj中:
(4)uo_datawindow中建立一个取指定方向列名的函数of_getcol (string as, string ap) //as表示当前焦点列,ap表示方向
(5)在uo_datawindow的key(对应的Event ID:pbm_dwnkey)事件中,对keycode进行判断处理,并切换焦点
(6)至此,需要的功能就实现了,通过uo_datawindow建立一个数据窗口试试看吧
下面附上uo_datawindow和d_obj_free两个对象的导出内容
<1>d_obj_free, 直接复制内容保存为 .srd格式文件,然后导入
<2>uo_datawindow, 直接复制内容保存为 .sru格式文件,然后导入