VFP中防止按退格键焦点移到上个控件

翻译|其它|编辑:郝浩|2005-04-15 10:53:00.000|阅读 1599 次

概述:

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>


如何在VFP中防止按退格键时焦点移到上个控件

当我们的表单上有许多的控件时,一般以文本控件为主,那么按动退格键(BackSpace)时,光标移到控件的最左边后,就会继续往上一个控件的焦点移去,使操作起来很不方便,在一些容易误输入的地方,很不小心的就把上一个数据给清除了,为了避免这个问题的发生,我们可以通过以下方法来实现:

首先我们需要将所有VFP的基类自定义作为自己的类,比如TEXTBOX、EDITBOX等,虽然她是很简单的控件,但我们还是要这么去做,这是为以后的维护带来很多的方便,而且在本文的操作上也要求这么做,至于她的必要性及重要性,本文将不做详细介绍了。 当我们自定义了一个文本控件,比如叫TXT吧,那么在她的 KeyPress 事件中,写下如下代码:
 
if nKeyCode = 127 and this.SelStart = 0 and this.SelLength = 0
NoDefault
endif

意思是说,当键盘按了退格键(BackSpace),并且鼠标在文本控件中的选择字符的长度为零,并且光标在控件的最左端时,然后不发生任何事件,也即将原有的默认事件给屏蔽了,那么也就不会使焦点移到上一个控件了!

原因:

这里需要对控件中选择的字符以及光标所在的位置进行判断,因为在其他很多的情况下,我们还是需要利用退格键(BackSpace)来删除文本框中的字符,只有当光标已经被退到最左边,且没有选择字符时才禁止退格键(BackSpace)的默认功能!

需要注意的是:

如果你需要在表单的TXT文本控件的 KeyPress 中再加入其他的代码,请注意要先写上
DoDefault(nKeyCode,nShiftAltCtrl)
然后写上其他你需要的代码,不然会因为写上了其他的代码而是类中的代码无法正确的继承下来!


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP