设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12
返回列表 发新帖
楼主: duanpeng@
打印 上一主题 下一主题

[与其它组件] 关于控件焦点移动问题!

[复制链接]
11#
发表于 2006-5-19 00:44:00 | 只看该作者
以下是引用LucasLynn在2006-5-18 16:42:00的发言:






使用更新后,第一次可以强制切换回来,第二次就不行了。


还是使用有效性规则比较好。

是个问题,我是这样解决的,这个控件的下一个控件加上获得焦点事件,然后再是切换。但就怕这些人用鼠标跳过这个控件。
12#
发表于 2006-5-19 00:58:00 | 只看该作者
以下是引用sgrshh29在2006-5-18 16:43:00的发言:


我一般喜欢用下面的事件:

Private Sub Text0_Exit(Cancel As Integer)
1   If Text0 <= 0 Then
2   Cancel = True
3   End If
End Sub


这个事件可以不让用户用鼠标跳过错误.




Text0_Enter
Text0_GotFocus
Text0_KeyDown 48 0
Text0_KeyPress 48
Text0_Change
Text0_KeyUp 48 0
Text0_BeforeUpdate 0
Text0_AfterUpdate
===Cancel===
===Finish===
Text0_Exit -1
Text0_LostFocus
===Cancel===
===Finish===
Text0_Exit -1
===Cancel===
===Finish===
Text0_Exit -1

[此贴子已经被作者于2006-5-18 16:59:00编辑过]

13#
发表于 2006-5-19 01:02:00 | 只看该作者
以下是引用LucasLynn在2006-5-18 16:58:00的发言:







Text0_Enter
Text0_GotFocus
Text0_KeyDown 48 0
Text0_KeyPress 48
Text0_Change
Text0_KeyUp 48 0
Text0_BeforeUpdate 0
Text0_AfterUpdate
===Cancel===
===Finish===
Text0_Exit -1
Text0_LostFocus
===Cancel===
===Finish===
Text0_Exit -1
===Cancel===
===Finish===
Text0_Exit -1




有道理,你的那个exit是个新思路,没有用过。谢谢

不过还是赞成有效性规则,不用编程。
14#
 楼主| 发表于 2006-5-19 07:18:00 | 只看该作者
一、使用有效性规则,适合对单纯录入过程中或录入时的值进行有效判断,如果我想在判断过程中涉及数据连接及其它代码处理时不适应。所得我只能利用事件编写自己的代码进行处理。

二、先将焦点移到别的控件,然后再回到本控件上,功能上实现了,但总觉得不舒服[em11],为什么我要绕一个圈子呢。而且如果你以另一个控件作“中介”势必造成另一控件获得焦点事件的执行,无形中降低了效率,也影响到整个应用。不是吗?

三、在更新前事件中用楼上朋友指出的这句:cancel=true,好像没起作用。

不知大家还有什么其它妙招。

[此贴子已经被作者于2006-5-19 0:20:36编辑过]

15#
发表于 2006-5-19 07:56:00 | 只看该作者
不知楼主验证数据的合法性,是不是一定输入后马上验证,如果不是,可以参考下面的方法

例如我们在新增数据时,需要验证才能保存,在保存时验证就OK了,

Private Sub CmdSave_Click()
Bclrsj
End Sub


Private Function Bclrsj() As Boolean

   
          If Len(Trim(TxtItemName)) = 0 Then
             MsgBox "项目不能为空"
             TxtItemName.SetFocus
             Bclrsj = False
             Exit Function
          End If
          If Len(Trim(TxtItemLen)) = 0 Then
             MsgBox "长度不能为空"
             TxtItemLen.SetFocus
             Bclrsj = False
             Exit Function
          End If
         
         
         
   '     下面自已加
        
End Function
16#
 楼主| 发表于 2006-5-19 08:19:00 | 只看该作者
重点不在于验证问题,而是当数据更新后或移开焦点时(也就是要继续录入下一项数据时),进行一系列的代码处理与分析,如果某条件成立则把焦点回到原控件(这才是讨论的重点)。
17#
 楼主| 发表于 2006-5-19 08:26:00 | 只看该作者
用版主提供的这一事件正是我想要的效果!

Private Sub Text0_Exit(Cancel As Integer)
   If Text0 <= 0 Then
      Cancel = True
   End If
End Sub

谢谢了!!
18#
发表于 2006-5-19 15:57:00 | 只看该作者
以下是引用duanpeng@在2006-5-19 0:26:00的发言:


用版主提供的这一事件正是我想要的效果!

Private Sub Text0_Exit(Cancel As Integer)
   If Text0 <= 0 Then
      Cancel = True
   End If
End Sub

谢谢了!!





这个方法是sgrshh29提供的,你应该谢谢他。






您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-9-20 23:33 , Processed in 0.084800 second(s), 29 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表