[已解决]关于回车键切换combo控件焦点的问题
本帖最后由 king8462 于 2018-8-26 14:08 编辑http://www.autoitx.com/forum.php ... 3%B5%2B%C7%D0%BB%BB
http://www.autoitx.com/forum.php ... 3%B5%2B%C7%D0%BB%BB
论坛找到上面两个例子,当我把Input控件改成combo控件后,按回车无法切换到下一个控件,请各位高手看看,谢谢!
#include <GUIConstants.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
$Form1 = GUICreate("test", 247, 158, 216, 188)
$Label1 = GUICtrlCreateLabel("用户名:", 16, 16, 43, 17)
$User = GUICtrlCreateCombo("", 72, 16, 169, 21)
$Label2 = GUICtrlCreateLabel("密码:", 24, 56, 31, 17)
$Password = GUICtrlCreateInput("", 72, 54, 169, 21)
$Button1 = GUICtrlCreateButton("确定", 80, 112, 89, 33)
GUISetState(@SW_SHOW)
GUICtrlSetData($User,"a")
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $User
GUICtrlSetState($Password,$GUI_FOCUS)
Case $Password
GUICtrlSetState($Button1,$GUI_FOCUS)
EndSwitch
WEnd king8462 发表于 2018-8-26 11:07
A版能在3楼的代码中给点提示吗,谢谢了。
#include <GUIConstants.au3>
$Form1 = GUICreate('test', 247, 158)
$Label1 = GUICtrlCreateLabel('用户名:', 16, 16, 43, 17)
$User = GUICtrlCreateCombo('', 72, 16, 169, 21)
GUICtrlSetData(-1, "a|bb|ccc")
$Label2 = GUICtrlCreateLabel('密码:', 24, 56, 31, 17)
$Password = GUICtrlCreateCombo('b', 72, 54, 169, 21)
$Button1 = GUICtrlCreateButton('确定', 80, 112, 89, 33)
GUISetState(@SW_SHOW)
GUIRegisterMsg(0x111, '_WM_COMMAND')
Do
Local $msg = GUIGetMsg()
Until $msg = -3 Or $msg = $Button1
Func _WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
If Not $ilParam And BitAND($iwParam, 0xFFFF) = 1 Then
If ControlGetFocus($Form1) = 'Edit1' Then GUICtrlSetState($Password, $GUI_FOCUS)
If ControlGetFocus($Form1) = 'Edit2' Then GUICtrlSetState($Button1, $GUI_FOCUS)
EndIf
EndFunc ;==>_WM_COMMAND 我运行正常,不清楚你问的是什么? chzj589 发表于 2018-8-25 13:57
我运行正常,不清楚你问的是什么?
抱歉,我没说清楚,是按回车无法切换到下一个控件,不是无法运行代码。 king8462 发表于 2018-8-25 14:05
抱歉,我没说清楚,是按回车无法切换到下一个控件,不是无法运行代码。
你点击$User = GUICtrlCreateCombo就跳到$Password = GUICtrlCreateInput
还需要? chzj589 发表于 2018-8-25 14:12
你点击$User = GUICtrlCreateCombo就跳到$Password = GUICtrlCreateInput
还需要?
没明白意思
king8462 发表于 2018-8-25 14:17
没明白意思
chzj589 发表于 2018-8-25 14:22
哦,明白了!能不能实现手动输入一些内容,然后回车切换下一个控件。有些内容combo下拉列表没有,需要手动输入。 chzj589 发表于 2018-8-25 14:22
#include <GUIConstants.au3>
$Form1 = GUICreate('test', 247, 158)
$Label1 = GUICtrlCreateLabel('用户名:', 16, 16, 43, 17)
$User = GUICtrlCreateCombo('', 72, 16, 169, 21)
GUICtrlSetData(-1, "a|bb|ccc")
;GUICtrlSetState($User, $GUI_FOCUS)
$Label2 = GUICtrlCreateLabel('密码:', 24, 56, 31, 17)
$Password = GUICtrlCreateCombo('b', 72, 54, 169, 21)
$Button1 = GUICtrlCreateButton('确定', 80, 112, 89, 33)
GUISetState(@SW_SHOW)
GUIRegisterMsg(0x111, '_WM_COMMAND')
Do
Local $msg = GUIGetMsg()
Until $msg = -3 Or $msg = $Button1
Func _WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
If Not $ilParam Then
Local $hc, $aRt, $id
If BitAND($iwParam, 0xFFFF) <> 1 Then
$id = BitAND($iwParam, 0xFFFF)
If $id = $User Then GUICtrlSetState($Password, $GUI_FOCUS)
If $id = $Password Then GUICtrlSetState($Button1, $GUI_FOCUS)
Else
$aRt = DllCall('user32.dll', 'hwnd', 'GetFocus')
If Not @error Then $hc = $aRt
If $hc = GUICtrlGetHandle($User) Then GUICtrlSetState($Password, $GUI_FOCUS)
If $hc = GUICtrlGetHandle($Password) Then GUICtrlSetState($Button1, $GUI_FOCUS)
EndIf
EndIf
EndFunc ;==>_WM_COMMAND
在这个代码里鼠标点击不自动切换。 Combo 是由 ComboBox 和 Edit 组成的组合控件,代码中 GetFocus 获取的是 Edit 控件,要想匹配的话需获取 Edit 与 Combo 的对应关系 king8462 发表于 2018-8-25 14:30
在这个代码里鼠标点击不自动切换。
29 行 下面 多一行 GUICtrlSetState($Password, $GUI_FOCUS) 就可以了 借一下 afan 老大的代碼
#include <GUIConstants.au3>
Global $ik
GUICreate('', 280, 100)
$A1=GUICtrlCreateCombo('Combo1', 20, 20, 200, 30)
GUICtrlSetData(-1, 'Combo2|Combo3|Combo4|Combo5')
$A2=GUICtrlCreateInput('Combo2', 20, 50, 200, 30)
;GUICtrlSetData(-1, 'Combo2|Combo3|Combo4|Combo5')
GUISetState()
$ik = GUICtrlCreateDummy()
Local $ak = [['{Enter}', $ik]]
GUISetAccelerators($ak)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
Case $ik
IF ControlGetFocus('') = 'Edit1' Then GUICtrlSetState($A2, $GUI_FOCUS)
EndSwitch
WEnd
kk_lee69 发表于 2018-8-25 18:01
借一下 afan 老大的代碼
谢谢楼上大大!
再请教一下,如果要在$a2控件上输入内容后按回车键向下一个控件切换要怎么写,是不是再建一个GUICtrlCreateDummy()? afan 发表于 2018-8-25 17:43
Combo 是由 ComboBox 和 Edit 组成的组合控件,代码中 GetFocus 获取的是 Edit 控件,要想匹配的话需获取 E ...
A版能在3楼的代码中给点提示吗,谢谢了。 king8462 发表于 2018-8-26 10:54
谢谢楼上大大!
再请教一下,如果要在$a2控件上输入内容后按回车键向下一个控件切换要怎么写,是不是再 ...
不用吧
case $A2
判斷就好啊
页:
[1]