动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
   程序开发 → 阅读文章

 PowerBuilde应用开发系列讲座(15)续

作者来源: 
阅读 数 648 人次 , 2006-4-26 11:19:00 

编程举例

  许多最终用户曾长期使用基于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

  
 
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:PB6.5在窗口刚打开动态调整Tab
· 下一篇:PowerBuilder程序中的并发控制
· 解析UML的动态建模机制
· IT巨头联手支持Open Ajax计划
· Windows XP超级实用刻录技巧两则
· Windows XP“帮助和支持”故障与技巧点点通
· 注意:Windows XP的六大忌讳


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077