ql-dz.com 发表于 2009-5-4 20:09:55

求助:VB6.0中如何让焦点自动返回出错的文本框(附代码)?

使用下面的代码,如果输入的数字大于65535,当焦点离开该文本框时,系统会给报错...但如何让焦点自动返回出错的这个文本框呢?
Private Sub HEART_TIME_Validate(Cancel As Boolean)
If HEART_TIME.Text > 65535 Then MsgBox "设置超出范围,请重新输入!", vbExclamation + vbOKOnly, " 系统信息"
End Sub

zxq6 发表于 2009-5-4 20:43:44

setfocus函数

Friendz 发表于 2009-5-4 22:12:16

不行的话就用API函数,无所不能的。

ql-dz.com 发表于 2009-5-5 14:20:30

楼上两位...这两种函数具体怎么用呢??
1楼兄弟,我刚试一下,不知道怎么用setfocus可否给个示例?我刚开始学/

leafstamen 发表于 2009-5-5 15:08:04

HEART_TIME.setfocus
我没试,感觉应该是这样~~~

zxq6 发表于 2009-5-5 15:16:55

在窗体上画两个text和两个button,加入以下代码:

Private Sub Command1_Click()
    Text1.SetFocus
End Sub

Private Sub Command2_Click()
    Text2.SetFocus
End Sub

点击按钮后你就可以看见效果了。

ql-dz.com 发表于 2009-5-5 15:21:30

楼上的示例方法是可以...
但我目前的情况是:
Private Sub HEART_TIME_Validate(Cancel As Boolean)
If HEART_TIME.Text > 65535 Then MsgBox "设置超出范围,请重新输入!", vbExclamation + vbOKOnly, " 系统信息"
End Sub
   在焦点离开此文本框判断数值是否超出范围.
我的问题是如何在其超出范围时,令焦点自动返回这个出错了的文本框呢?
有什么解决方法呢?

leafstamen 发表于 2009-5-5 15:27:16

If val(HEART_TIME.Text) > 65535 Then
HEART_TIME.Text=""   '或者是HEART_TIME.Text="65535",超出范围变成最大值
HEART_TIME.setfocus
MsgBox "设置超出范围,请重新输入!", vbExclamation + vbOKOnly, " 系统信息"


如果有很多个文本框的话就每个都加上吧,我比较笨,只会这样,我对上位的宗旨就是能实现功能就行……

zcllom 发表于 2009-5-5 16:07:30

在焦点离开此文本框判断数值是否超出范围.
=======================
我明白你的意思和想法,这个实际上是有点难度的。
要考虑坐标位置的变化、转移。。。

zcllom 发表于 2009-5-5 16:20:47

用光标的坐标,或者鼠标点击的位置坐标 去 减去 那个文本所在的客户区坐标,然后判断是否离开了那个区域。Then……
    Dim i As Long, j As Long
    X = X - …….Left
    Y = Y - …….Top
    If (X < 0 Or Y < 0 Or X > …… Or Y > ……)
    Then
      ……

ql-dz.com 发表于 2009-5-5 17:06:12

9楼给出的方法是在什么情况下判断呢??也就是你的这一段代码放在何处比较合适呢?

zxq6 发表于 2009-5-5 17:32:03

估计楼主想要的是这个功能了。
点击此处下载 ourdev_442298.rar(文件大小:2K) (原文件名:焦点检测.rar)

ql-dz.com 发表于 2009-5-5 18:00:37

呵呵....高手就是不一样啊...谢谢13楼的解答!!就是这个问题啦...

zcllom 发表于 2009-5-5 18:32:46

原来你的要求这样简单。呵呵。
再给你提议增强一点效果:焦点返回后,文本框中的文字处于选中状态——高亮文本

http://cache.amobbs.com/bbs_upload782111/files_14/ourdev_442312.png
(原文件名:高亮显示文本.png)

http://cache.amobbs.com/bbs_upload782111/files_14/ourdev_442313.png
(原文件名:超限了.png)

http://cache.amobbs.com/bbs_upload782111/files_14/ourdev_442314.png
(原文件名:返回后高亮文本.png)

ql-dz.com 发表于 2009-5-5 18:35:51

谢谢15楼的指点!!...方法收收藏了!!./emotion/em197.gif
我选用了改变背景颜色为红色进行提示...

cuikai12345 发表于 2010-3-23 22:24:51

MARK
页: [1]
查看完整版本: 求助:VB6.0中如何让焦点自动返回出错的文本框(附代码)?