主题:commandbutton1 如何去掉它的焦点?
xinying2005
[专家分:0] 发布于 2008-06-24 10:49:00
选中部件中的 MICROSOFT FORMS 2.0OBJECT LIBRARY ,便在工具栏中出现commandbutton 控件。
现在需要 去掉 commandbutton 的焦点,即使在选中它的时候。
请问如何去掉? 恳请高手指教
回复列表 (共14个回复)
沙发
xinying2005 [专家分:0] 发布于 2008-06-27 15:43:00
请各位大侠赐教,小女子万分感激!
急!!!
板凳
一江秋水 [专家分:9680] 发布于 2008-06-27 17:06:00
只有一个办法:在按纽的单击事件的最后或者最前,加上一句转移焦点的语句,也就是说,将焦点转移到别的控件上去。
3 楼
xinying2005 [专家分:0] 发布于 2008-06-27 23:18:00
command 控件 可以在将焦点转移到其它控件的条件下去掉 】
其 参考程序如下
'API函数
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" _
(ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Function DefWindowProc Lib "user32" Alias "DefWindowProcA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
'常量
Public Const GWL_WNDPROC = (-4)
Public Const WM_SETFOCUS = &H7 '获得焦点
Public Proc As Long
Public Proc2 As Long
Public Function WindowProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Dim lngReturn As Long
Dim Xl As Long
Dim Yl As Long
Select Case uMsg
Case WM_SETFOCUS
If hwnd = form1.Command1.hwnd Or hwnd = form1.Command2.hwnd Then '最好用等于。针对。
Exit Function '不执行系统的获得焦点操作。既屏蔽了焦点。
End If
End Select
WindowProc = CallWindowProc(Proc, hwnd, uMsg, wParam, lParam)
End Function
不知 commandbutton 可否?恳请赐教!!
4 楼
一江秋水 [专家分:9680] 发布于 2008-06-30 07:39:00
你这段代码是模块中的,没有窗体代码我也无法试验,不过分析一下看来是可以的,主要还是靠自己的实验,别人的一切代码都要经过自己的实验才能知道真伪
5 楼
xinying2005 [专家分:0] 发布于 2008-06-30 15:42:00
麻烦 高手帮 分析以下
小女子不胜感激!!
6 楼
一江秋水 [专家分:9680] 发布于 2008-07-01 07:35:00
这段代码采用的是回调函数形式,由窗体中的有关代码调用,根据消息的不同,既可以不执行获得焦点的操作,也可以执行获得焦点的操作。
但是我认为你没必要用这段代码,我猜测你的目的是去掉按纽上那个虚线框,所以,你只要在按纽的单击事件代码的最后加入
Text1.SetFocus
之类的的语句就行了。
7 楼
孙瑞 [专家分:590] 发布于 2008-07-01 14:20:00
一江秋水说的很对,有些东西不要搞得太复杂!
8 楼
xinying2005 [专家分:0] 发布于 2008-07-01 18:09:00
但是 我的程序 是通过点击按钮 来判断 响应 哪个事件。当一个按钮被 选中时(被)点击时),如果没有去掉焦点的程序,他肯定会 获得一个焦点的。
所以此时 我是无论如何也不可能将焦点 转移到text上的
9 楼
一江秋水 [专家分:9680] 发布于 2008-07-02 08:02:00
不明白你的意思,“去掉焦点”与“通过点击按钮 来判断 响应 哪个事件”有什么关联?难道有焦点就不能判断了?
10 楼
xinying2005 [专家分:0] 发布于 2008-07-02 11:07:00
我知道有焦点 也可以判断事件的发生
我的意思是
就算我点击 了某个按钮 ,虽然该按钮获得了焦点,响应了事件。
由于 平时某个按钮获得了焦点,该按钮在显示 上 有一个虚线框。我只是想不显示 该虚线框。
别的 该怎么的还是怎么的
我来回复