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

如题所述

首先我们需要将所有VFP的基类自定义作为自己的类,比如TEXTBOX、EDITBOX等,虽然她是很简单的控件,但我们还是要这么去做,这是为以后的维护带来很多的方便,而且在本文的操作上也要求这么做,至于她的必要性及重要性,本文将不做详细介绍了。 当我们自定义了一个文本控件,比如叫TXT吧,那么在她的 KeyPress 事件中,写下如下代码:
if nKeyCode = 127 and this.SelStart = 0 and this.SelLength = 0NoDefaultendif意思是说,当键盘按了退格键(BackSpace),并且鼠标在文本控件中的选择字符的长度为零,并且光标在控件的最左端时,然后不发生任何事件,也即将原有的默认事件给屏蔽了,那么也就不会使焦点移到上一个控件了!原因:这里需要对控件中选择的字符以及光标所在的位置进行判断,因为在其他很多的情况下,我们还是需要利用退格键(BackSpace)来删除文本框中的字符,只有当光标已经被退到最左边,且没有选择字符时才禁止退格键(BackSpace)的默认功能!
需要注意的是:
如果你需要在表单的TXT文本控件的 KeyPress 中再加入其他的代码,请注意要先写上
温馨提示:内容为网友见解,仅供参考
无其他回答

VFP文本框退格键(删除操作)焦点的问题
set notify off Public M_Flag 在text的KeyPress事件中加入如下代码:LPARAMETERS nKeyCode, nShiftAltCtrl IF nKeyCode=127 &&退格键的ASCII码 M_FLAG=.T.ELSE M_FLAG=.F.ENDIF 在text的Valid事件中加入如下代码:IF M_FLAG RETURN .F.ENDIF ...

在VFP6.0中TEXT1可以用软件的数字键盘打进去,TEXT2不能用上面软件的数字...
对于虚拟键盘这种需要,如果有多个输入目标(文本框之类的),那么,首先一个问题就是要确定当前是对哪个目标输入。一般来说,简单的处理办法是,使用一个表单属性来保存这个控件的引用 ,比如,为表单添加一个属性"CurrentInputControl",默认值为Null.然后,在这些允许虚拟键盘输入的控件激活时,将自己保存...

怎么删除WORD中的一部分表格
1.打开一个word文档,如图所示,在文档中有一个表格。2.如果想要删除整行的表格,先用鼠标选中需要删除的整行表格。3.然后点击右键,选择删除单元格,如图所示。4.选择删除单元格的方向,选择不影响其他表格或文字的方式,点击确定,这样选中的这行单元格被删除。5.如果想删除列时,也是需要先选中需要...

相似回答