每一个TEXT的_GotFocus()事件都返回自己的name

jainkai 2019-02-12 03:28:06
每一个TEXT的_GotFocus()事件都返回自己的name


假设有我80个text(非数组控件,name为系统默认)

Dim mm
Private Sub Text1_GotFocus()
mm = Mid(Text1.Name, 5, 2)
End Sub

Private Sub Text2_GotFocus()
mm = Mid(Text2.Name, 5, 2)
End Sub
。。。
要写80个GOTFOCUS事件

有没有简单的代码啊,我最终只要取text后面的数字(所以Name采用系统默认)
...全文
817 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
milaoshu1020 2019-03-05
  • 打赏
  • 举报
回复
落了几个(i),更正如下:
dim mm

sub form_load()
dim i as integer
for i=1 to 80
load txtTest(i)
txtTest(i).left = (计算偏移量x)
txtTest(i).top = (计算偏移量y)
txtTest(i).visible = true
next
end sub

sub txtTest_GotFocus(index as integer)
mm = index
end sub
milaoshu1020 2019-03-05
  • 打赏
  • 举报
回复
也可以在Form_Load的时候使用循环load text(i),设置text(i).left,text(i).top属性.
窗体上放一个textbox设置name为txtTest,index为0;
dim mm

sub form_load()
dim i as integer
for i=1 to 80
load txtTest(i)
txtTest.left = (计算偏移量x)
txtTest.top = (计算偏移量y)
txtTest.visible = true
next
end sub

sub txtTest_GotFocus(index as integer)
mm = index
end sub
jackcaixia 2019-03-05
  • 打赏
  • 举报
回复
其实最好的方法就是用控件数组,直接读取Index的值就行了
如果不用控件数组的话也是可以的~添加一个timer控件,Interval属性设为500
Dim mm
Private Sub Timer1_Timer()
Dim ctl As Control
Set ctl = Screen.ActiveControl
If ctl.Name Like "Text*" Then '这里是判断是否Text控件
mm = Mid(ctl.Name, 5, 2)
End If
End Sub
这样就可以了~不用每个Text控件添加代码
脆皮大雪糕 2019-02-14
  • 打赏
  • 举报
回复
引用 3 楼 milaoshu1020 的回复:
[quote=引用 1 楼 脆皮大雪糕 的回复:] 用控件数组不就解决问题了 如果你嫌改界面设计麻烦,真想继续堆够垃圾的话,另外开一个小程序,循环80次,生成这些代码咯。
也可以用小程序修改Form窗体的控件.[/quote] 改frm文件不是不行,就怕他看到frm觉得更加麻烦。
VB业余爱好者 2019-02-13
  • 打赏
  • 举报
回复
系统默认name,为什么不用数组呢?简单方便
milaoshu1020 2019-02-13
  • 打赏
  • 举报
回复
引用 1 楼 脆皮大雪糕 的回复:
用控件数组不就解决问题了

如果你嫌改界面设计麻烦,真想继续堆够垃圾的话,另外开一个小程序,循环80次,生成这些代码咯。

也可以用小程序修改Form窗体的控件.
脆皮大雪糕 2019-02-12
  • 打赏
  • 举报
回复
用控件数组不就解决问题了 如果你嫌改界面设计麻烦,真想继续堆够垃圾的话,另外开一个小程序,循环80次,生成这些代码咯。

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧