找回密码
 加入
搜索
查看: 2162|回复: 6

[系统综合] 【已解决】判断下一个焦点

  [复制链接]
发表于 2010-12-31 15:16:44 | 显示全部楼层 |阅读模式
本帖最后由 ybbihsse 于 2011-1-1 12:01 编辑

我按了回车键或者TAB键,如何判断接下去的焦点会转到哪个控件上
A B C D 四个输入框,
焦点在A框上,
按下TAB键或者回车键,
如果下一个焦点会在C上,则执行C段代码
如果下一个焦点在D上,则执行D段代码
------------------------------------------------------------------------
详见6楼
发表于 2010-12-31 15:25:32 | 显示全部楼层
由控件的ID确定的,同一个组内按递增的方式排序
 楼主| 发表于 2010-12-31 15:26:42 | 显示全部楼层
由控件的ID确定的,同一个组内按递增的方式排序
ceoguang 发表于 2010-12-31 15:25



    因为有设置 了条件,A B C D四个控件,当满足条件会禁用其中的一两个控件
发表于 2010-12-31 15:28:17 | 显示全部楼层
那就取控件状态,如果禁用则跳过不就行了
 楼主| 发表于 2010-12-31 23:19:46 | 显示全部楼层
我是想实现,A  B  C D  四个输入框,一个E确定按钮
在ABCD输入框按回车的时候可以直接跳到下一个控件,也就是把ENTER变成TAB键
而到E确定键的时候,将取消这个热键,按回车能直接确定,而不是也跟着一起转到下一个控件
发表于 2011-1-1 11:15:19 | 显示全部楼层
本帖最后由 水木子 于 2011-1-1 11:34 编辑

#include <WinAPI.au3>
#include <GuiEdit.au3>
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>

GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
GUICreate("Form1", 400, 300)
$Inputa = GUICtrlCreateInput("A", 50, 50, 100, 21)
$Inputb = GUICtrlCreateInput("B", 50, 100, 100, 21)
$Inputc = GUICtrlCreateInput("C", 50, 150, 100, 21)
$Inputd = GUICtrlCreateInput("D", 50, 200, 100, 21)
$Button1 = GUICtrlCreateButton("E", 250, 100, 100, 30)
GUISetState()

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case -3
                        Exit
                Case $Button1
                        MsgBox(0, '', '相应回车键')
        EndSwitch
WEnd

Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
        Local $hWndFrom, $iIDFrom, $iCode, $hWndEdit
        $nID = BitAND($iwParam, 0x0000FFFF)
        ;$iIDFrom = _WinAPI_LoWord($iwParam)
        $iCode = _WinAPI_HiWord($iwParam)
        Switch $iCode
                Case $EN_SETFOCUS
                        Switch $nID
                                Case $Inputa
                                        MsgBox(0, '', 'A')
                                Case $Inputb
                                        MsgBox(0, '', 'B')
                                Case $Inputc
                                        MsgBox(0, '', 'C')
                                Case $Inputd
                                        MsgBox(0, '', 'D')
                        EndSwitch
        EndSwitch
EndFunc   ;==>WM_COMMAND
 楼主| 发表于 2011-1-1 12:00:26 | 显示全部楼层
水木子 发表于 2011-1-1 11:15



    水木大哥,你太厉害了,解决了。但不太明白你这代码的意思哦。呵呵。看样子我太菜菜菜了!!!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-6-2 16:48 , Processed in 0.081848 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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