怎么样判断光标在哪个控件上?

hzybc 2003-03-29 10:24:02
有一窗体上有Text,Command,Label,Frame等控件,当程序运行后,怎么样判断光标在哪个控件上(获得焦点)?
...全文
416 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyl910 2003-03-29
  • 打赏
  • 举报
回复

ActiveControl 属性


返回拥有焦点的控件。当窗体被引用时,如在 ChildForm.ActiveControl 中,如果被引用的窗体是活动的,ActiveControl 指定将拥有焦点的控件。在设计时是不可用的;在运行时是只读的。

语法

object.ActiveControl

object 所在处代表一个对象表达式,其值是“应用于”列表中的一个对象。

说明

可以使用 ActiveControl 来访问控件的属性或调用其方法:例如,Screen.ActiveControl.Tag = "0"。如果在窗体上的所有控件都是不可见的或不可使用的,那么将产生一个运行时错误。

每个窗体都可以有一个活动控件 (Form.ActiveControl),而不管窗体是否是活动的。在应用程序中,可以在每个窗体上编写处理活动控件的代码,即使此窗体不是活动窗体。

这个属性在多文档接口 (MDI) 应用程序中尤其有用,其中工具栏上的一个按钮必须初始化为 MDI 子窗体中的控件上的一个动作。当用户单击工具栏上的“复制”按钮时,代码可以引用 MDI 子窗体的活动控件中的文本,例如 ActiveForm.ActiveControl.SelText。

注意 如果计划将 Screen.ActiveControl 传递给一个过程,那么在那个过程中必须用子句 As Control 而不是指定控件的类型 (As TextBox 或 As ListBox)声明参数,即使 ActiveControl 总是引用相同类型的控件。






ActiveControl 属性示例
这个例子显示活动控件的文本。要试用此例,可以先将下面的代码粘贴到包含 TextBox、Label 和 CommandButton 控件的窗体的声明部分中,然后按下 F5 键并单击此窗体。

Private Sub Form_Click ()
If TypeOf Screen.ActiveControl Is TextBox Then
Label1.Caption = Screen.ActiveControl.Text
Else
Label1.Caption = "Button: " + Screen.ActiveControl.Caption
End If
End Sub

这个例子显示了如何使用工具栏上的按钮在实现剪切、复制、粘贴和删除操作中,利用 Clipboard 对象。要试一试这个例子,可以将 TextBox 和 CheckBox 控件放到 Form1 上,然后创建一个新的 MDI 窗体。在 MDI 窗体上,插入一个 PictureBox 控件,然后在 PictureBox 中插入一个 CommandButton。将 CommandButton 的 Index 属性设置为 0 (创建一个控件数组)。将 Form1 的 MDIChild 属性设置为 True。

要运行该例子,只须将这些代码复制到 MDIForm 的声明部分,然后按下 F5 键。注意,当 CheckBox 拥有焦点时,按钮将不可用,因为现在 CheckBox 取代了 TextBox 而成为活动控件。

Private Sub MDIForm_Load ()
Dim I ' 声明变量。
Command1(0).Move 0, 0, 700, 300 '在工具栏上为按钮定位。
For I = 1 To 3 '创建别的按钮。
Load Command1(I) '创建按钮。
Command1(I).Move I * 700, 0, 700, 300 '放置并调整按钮大小。
Command1(I).Visible = True '显示按钮。
Next I
Command1(0).Caption = "Cut" '设置按钮标题。
Command1(1).Caption = "Copy"
Command1(2).Caption = "Paste"
Command1(3).Caption = "Del"
End Sub

Private Sub Command1_Click (Index As Integer)
'ActiveForm 是指 MDI 窗体中的活动窗体。
If TypeOf ActiveForm.ActiveControl Is TextBox Then
Select Case Index
Case 0 '剪切。
'复制选中的文本到剪贴板上。
Clipboard.SetText ActiveForm.ActiveControl.SelText
'删除选中的文本。
ActiveForm.ActiveControl.SelText = ""
Case 1 '复制。
' 复制选中的文本到剪贴板上。
Clipboard.SetText ActiveForm.ActiveControl.SelText
Case 2 '粘贴。
'把剪贴板上的文本放到文本框中。
ActiveForm.ActiveControl.SelText = Clipboard.GetText()
Case 3 '删除。
'删除选中的文本。
ActiveForm.ActiveControl.SelText = ""
End Select
End If
End Sub

northwolves 2003-03-29
  • 打赏
  • 举报
回复
呵呵,应该这样:

Private Sub Form_Click()
MsgBox Me.ActiveControl.Name
End Sub
hzybc 2003-03-29
  • 打赏
  • 举报
回复
谢谢 goodsgy(宋玉),这个方法是可行的,只是在控件多的情况下,比较麻烦,
goodsgy 2003-03-29
  • 打赏
  • 举报
回复
定义一个全局变量,在不同控件的GotFocus()事件中赋予不同的值,检测这个变量的值就可以了。
worldtaxi 2003-03-29
  • 打赏
  • 举报
回复
onmouse_move
obj.setfocus
 【为什么购买本课程?】1、学会Photoshop脚本,可以大幅提高您的工作效率、摆脱大量重复设计任务的束缚;2、扩展Photoshop的功能:天气预报、to-do设计任务管理、中文加拼音、图层文字中英互译、每日一句英语、OCR智能识别图片上的文字内容、 为上万影片批量生成九宫格预览图、为数百个视频自动添加内容不同的片头、自动获取图片的主题颜色、快速生成不限数量并且不重复的漂亮卡通头像、给Photoshop添加猜数字、贪吃蛇游戏等等;3、利用人工智能技术:在Photoshop中识别图片中指定颜色的物体、进行面部识别;4、掌握99%Photoshop设计师不曾接触的技能,打造自己的职场护城河!5、重要的是:只有我们这里提供系统、全面、易学的Photoshop脚本教程,只此一家,别无选择!  【Photoshop脚本是什么?】* Photoshop神秘和强大的一项秘技!* 它可以允许您以代码的方式来操作文档、美化图像、处理图层、控制通道、编辑选区、使用滤镜等等,就像在Photoshop界面上操作一样。* 与PhotoShop动作(Action)相比,PhotoShop脚本更强大、更智能、更富有逻辑判断功能。* PhotoShop脚本主要用于重复性的任务或用于制作非常复杂的特殊效果。 【学会Photoshop脚本,可以做什么?】* 一键给n个图片批量添加水印;* 一键将n个图片批量生成指定尺寸的缩略图;* 一键将PSD网页设计稿的各功能区域,批量输出为Web所用格式;* 一键生成iOS、Andriod应用和游戏必需的十几种尺寸的图标;* 一键将n个小图拼合为一张大图,并输出各小图在大图中的坐标信息;* 甚至开发一款运行在Photoshop上的趣味游戏!我们向您保证,学习PhotoShop脚本所花费的时间,可以在完成几项重复性的复杂任务时得到补偿。快来学习Photoshop脚本吧!  【课程的特点】1、创新的教学模式:手把手教您Photoshop自动化技术,一看就懂,一学就会;2、贴心的操作提示:让您的眼睛始终处于操作的焦点位置,不用再满屏找光标;3、语言简洁精练:瞄准问题的核心所在,减少对思维的干扰,并节省您宝贵的时间;4、视频短小精悍:即方便于您的学习和记忆,也方便日后对功能的检索;5、课程源码素材:购买课程之后,进入最后一章的最后一节的课件列表,下载课程源码素材。 

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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