编程举例
许多最终用户曾长期使用基于DOS平台或基于字符终端的软件应用,在这些软件中,同一个窗口下的多个输入列之间聚焦的转换一般是靠键入回车驱动的,因此大多数的录入员都习惯于使用键盘右侧的数字键盘录入数据,每项数据录入后敲击回车,转到下一个输入项。
在Windows环境下,同一个窗口下不同控件之间的转换是用tab键实现的,在一个DataWindow中无论是FreeForm形式还是Tabular或Grid形式,系统缺省都是使用tab键或Shift-tab键转换到下一个数据列或上一个数据列;而用户敲击回车键,系统会将聚焦转到下一条记录的第一个输入列上。这样用户就会向开发者提出这样的需求:希望用回车键来实现列之间的切换,以符合录入员的习惯。如果我们熟悉了DataWindow的事件定义,就可以轻而易举地实现上述功能。我们在DataWindow中定义一个EnterKey事件,以捕捉用户在DataWindow中输入的回车,并对其应实现的功能进行转换。在"UserEvents..."的对话框中加入EventName为EnterKey,EventID为pbm_dwnprocessenter的事件,对其编程如下:
int li_CurCol int li_cnt ∥得到当前光标所在的列数 li_CurCol=getcolumn() ∥假设这个DataWindow共有6列 if li_CurCol<6 then ∥如果当前列不是最后一列,将聚焦转到下一列 setcolumn(li_CurCol+1) elseif rowcount()<=getrow() then ∥当前列是最后一列,而且当前行是最后一行, //则增加一行,并将聚焦转至该行的第一列 li_cnt=insertrow(0) scrolltorow(li_cnt) setcolumn(1) else ∥当前列是最后一列,当前行不是最后一行,则将聚焦转至下一行的第一列 li_cnt=getrow()+1 setrow(li_cnt) scrolltorow(li_cnt) setcolumn(1) endif return 1
int li_CurCol int li_cnt ∥得到当前光标所在的列数 li_CurCol=getcolumn() ∥假设这个DataWindow共有6列 if li_CurCol<6 then ∥如果当前列不是最后一列,将聚焦转到下一列
setcolumn(li_CurCol+1)
elseif rowcount()<=getrow() then
∥当前列是最后一列,而且当前行是最后一行, //则增加一行,并将聚焦转至该行的第一列 li_cnt=insertrow(0) scrolltorow(li_cnt) setcolumn(1)
else ∥当前列是最后一列,当前行不是最后一行,则将聚焦转至下一行的第一列
li_cnt=getrow()+1 setrow(li_cnt) scrolltorow(li_cnt) setcolumn(1)
endif return 1
Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved. 闵涛 E_mail:admin@mintao.net(欢迎提供学习资源)
鄂公网安备 42011102001154号
站长:MinTao ICP备案号:鄂ICP备11006601号-18