[已解决]怎么做输入框(Input)获得焦点即选中全部已输入的内容
本帖最后由 lon91ong 于 2011-1-6 12:27 编辑如题,这种效果怎么做能?
没有找到现成的样式!
大侠帮忙!
8楼和11楼的方法不错! 回复 1# lon91ong
GUICtrlRead 控件 不行吗? Input好像没有onClick事件吧?! 只有onChange 你双击一下输入框就是全选了。。。。。 回复 4# 飘云
我想要的是类似Combo的鼠标点击的同时,就全选了文本! 回复 1# lon91ong
$GUI_FOCUS 控件得到输入/选择焦点.
GUICtrlSetState(控件ID, $GUI_FOCUS).
例子:
#include <GUIConstantsEx.au3>
GUICreate(" GUI 接收文件的输入控件", 320, 120)
$file = GUICtrlCreateInput("你好", 10, 5, 300, 20)
GUICtrlSetState(-1, $GUI_DROPACCEPTED)
$file2 = GUICtrlCreateInput("再见", 10, 35, 300, 20)
GUICtrlSetState($file2, $GUI_FOCUS); 控件得到输入/选择焦点.
$btn = GUICtrlCreateButton("确定", 40, 75, 60, 20)
GUISetState()
$msg = 0
While $msg <> $GUI_EVENT_CLOSE
$msg = GUIGetMsg()
Select
Case $msg = $btn
ExitLoop
EndSelect
WEnd 回复 6# lixiaolong
这样只是在第一次实现了全选,以后再获得焦点的时候还是没有全选啊! 本帖最后由 飘云 于 2011-1-5 22:04 编辑
回复 7# lon91ong
你想要的是这个效果吧?
#include <GUIConstantsEx.au3>
$main = GUICreate("", 300, 300)
$input = GUICtrlCreateInput("111111", 10, 5, 100, 20)
$input2 = GUICtrlCreateInput("222222", 10, 40, 100, 20)
$input3 = GUICtrlCreateInput("333333", 10, 70, 100, 20)
$btn = GUICtrlCreateButton("确定", 40, 120, 60, 20)
GUISetState()
Dim $set=1
While 1
$msg = GUIGetMsg()
Select
Case $msg = $btn Or $msg = $GUI_EVENT_CLOSE
Exit
EndSelect
$mousepos=GUIGetCursorInfo()
If $mousepos=$input And $mousepos=1 And $set=1 Then
GUICtrlSetState($input, $GUI_FOCUS)
$set=0
ElseIf $mousepos<>$input And $mousepos=1 Then
$set=1
EndIf
WEnd 回复 7# lon91ong
你是想监控鼠标点击?
看看这个是不是你想要的
#include <GUIConstantsEx.au3>
Opt("GUIOnEventMode", 1)
GUICreate(" GUI 接收文件的输入控件", 320, 120)
GUISetOnEvent(-7, "SpecialEvents")
GUISetOnEvent(-3, "SpecialEvents")
$file = GUICtrlCreateInput("你好", 10, 5, 300, 20)
$file2 = GUICtrlCreateInput("再见", 10, 30, 300, 20)
$file3 = GUICtrlCreateInput("再见", 10, 55, 300, 20)
$btn = GUICtrlCreateButton("确定", 40, 80, 60, 20)
GUICtrlSetOnEvent(-1, "OK")
GUISetState()
While 1
Sleep(10)
WEnd
Func SpecialEvents()
Select
Case @GUI_CtrlId = -7
Sleep(100)
Send("^a")
Case @GUI_CtrlId = -3
Exit
EndSelect
EndFunc ;==>SpecialEvents
Func OK()
MsgBox(0, 0, "OK!")
EndFunc ;==>OK 多谢8楼的大侠,你给的是我想要的效果!
9楼的还是不对! 注册 WM_COMMAND 消息~Opt('GUIOnEventMode', 1)
GUICreate('窗口')
GUISetOnEvent(-3, '_Exit')
$Input1 = GUICtrlCreateInput('这个点击即全选', 50, 50, 200, 20)
$hInput1 = GUICtrlGetHandle(-1)
GUICtrlCreateInput('这个不会全选,点哪是哪', 50, 80, 200, 20)
GUISetState()
GUIRegisterMsg(0x0111, 'WM_COMMAND')
While 1
Sleep(100)
WEnd
Func _Exit()
Exit
EndFunc ;==>_Exit
Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
#forceref $hWnd, $iMsg
If $ilParam = $hInput1 And BitShift($iwParam, 16) = 256 Then GUICtrlSetState($Input1, 256)
EndFunc ;==>WM_COMMAND 大侠侠一出现,就是不一样... 版主威武,学习了,本人菜鸟,对于消息还是不熟呀。。。。
页:
[1]