数据窗口中回车键的完整编程

数据窗口中回车键的完整编程

ID:6633469

大小:31.50 KB

页数:3页

时间:2018-01-20

数据窗口中回车键的完整编程_第1页
数据窗口中回车键的完整编程_第2页
数据窗口中回车键的完整编程_第3页
资源描述:

《数据窗口中回车键的完整编程》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、数据窗口中回车键的完整编程  下面的脚本在数据窗口的PBm_dwnprocessenter用户事件中编写,用来检查数据窗口中录入数据的各种情况,并执行相应的程序。  1、当返回负值时  肯定某列存在错误,这时既不处理Enter键也不处理Tab键。  2、当返回非负值时  如果是最后的行列则应该在按回车键时插入一行,并使光标定位到新行的第一列上。  如果不是最后行列则应该发送Tab信息,屏蔽Enter键的处理。  脚本如下:  IfThis.AcceptText()<0Then//如果不能正确接受用户的输入信息   Return1//则不进

2、行按键处理,直接返回  EndIf  IfThis.GetColumn()=Long(dw_1.Object.DataWindow.Column.Count)Then//如果是最后一列   IfThis.GetRow()=This.RowCount()Then//并且是在最后一行    This.InsertRow(0)//则增加新行    This.ScrollToRow(This.GetRow()+1)//并且使之成为当前行    This.SetColumn(1)//并将第一列设置为当前列    Return1//然后返回   En

3、dIf  EndIf  Send(Handle(This),256,9,Long(0,0))//发送处理Tab键的消息  Return1//忽略回车键的处理关于用enter键代替Tab键的方法  看到大家很多人都问如何用enter键代替tab键的方法,而大家的回答几乎都是一个,那就是在数据窗口上自定义一个事件ID为pbm_dwnprocessenter的事件,然后在事件上写上以下代码:  send(handle(this),256,9,long(0,0))  return1  其实,如果大家好好看看PB的帮助就会发现,这个pbm_dwnp

4、rocessenter事件,只响应一个回返值 return0,对于return1根本就不起作用!对于Grid类型的数据窗口,当有多行并且当前行不是最后一行时,就会出现按了回车键,系统会自动执行换行的操作,并不会因为加了一个return1而不执行PB的默认操作。经过大量的试验,我找到了一个并不完美的解决方法:  1、在窗口上放一个按钮,设置按钮的default属性为true,设置visible属性为FALSE  2、在这个按钮上执行模拟tab键的代码:send(handle(dw_1),256,9,long(0,0))  这样就OK了,原理

5、嘛就是,当按enter键后,系统不再执行默认的换行操作,而是触发了那个按钮的clicked事件,这样再模拟出一个tab键,就能完美的用enter执行tab的功能了。说这个方法不是完美的是因为如果你的窗口必须有一个按钮为default按钮完成其他的功能时就不好办了,但我想这样也是一个不错的方法。另一种方法  通常要实现Enter键跳转焦点都是通过模拟Tab键来完成,但是如果有列的高度较高时(可以输入两排以上的串),这种方法不能正常跳转。  以下是实现Enter键跳转焦点的又一种方法:/****************************

6、***********************************************function:of_tabaccess:publicdescription:跳转焦点argument:nonereturnvalue:integer       1,成功       2,焦点丢失       -1,失败author:左手无名指date:2004-05-14***************************************************************************/integerli_

7、net=-1longi,j,ll_tab,ll_coltab[],ll_col[]ifthis.getrow()<=0orthis.getcolumnname()=""thenreturn-1ll_tab=long(this.describe(this.getcolumnname()+".tabsequence"))ifll_tab<=0thenreturn-1fori=1tolong(this.describe("datawindow.column.count"))ifll_tab

8、ng(i)+".tabsequence"))thenll_coltab[upperbound(ll_coltab)+1]=long(this.describe("#"+string(i)+".

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。