找回密码
 加入
搜索
查看: 6752|回复: 12

[GUI管理] [已解决]怎么做输入框(Input)获得焦点即选中全部已输入的内容

 火.. [复制链接]
发表于 2011-1-5 18:42:27 | 显示全部楼层 |阅读模式
本帖最后由 lon91ong 于 2011-1-6 12:27 编辑

如题,这种效果怎么做能?
没有找到现成的样式!

大侠帮忙!

8楼和11楼的方法不错!
发表于 2011-1-5 18:46:02 | 显示全部楼层
回复 1# lon91ong


    GUICtrlRead 控件 不行吗?
 楼主| 发表于 2011-1-5 19:24:50 | 显示全部楼层
Input好像没有onClick事件吧?! 只有onChange
发表于 2011-1-5 19:28:16 | 显示全部楼层
你双击一下输入框就是全选了。。。。。
 楼主| 发表于 2011-1-5 20:31:59 | 显示全部楼层
回复 4# 飘云


我想要的是类似Combo的鼠标点击的同时,就全选了文本!
发表于 2011-1-5 21:31:08 | 显示全部楼层
回复 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
 楼主| 发表于 2011-1-5 21:48:15 | 显示全部楼层
回复 6# lixiaolong

这样只是在第一次实现了全选,以后再获得焦点的时候还是没有全选啊!
发表于 2011-1-5 22:00:17 | 显示全部楼层
本帖最后由 飘云 于 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[4]=$input And $mousepos[2]=1 And $set=1 Then
                GUICtrlSetState($input, $GUI_FOCUS)
                $set=0
        ElseIf $mousepos[4]<>$input And $mousepos[2]=1 Then
                $set=1
        EndIf
WEnd

评分

参与人数 1金钱 +10 收起 理由
lon91ong + 10

查看全部评分

发表于 2011-1-5 22:43:06 | 显示全部楼层
回复 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
 楼主| 发表于 2011-1-5 23:02:14 | 显示全部楼层
多谢8楼的大侠,你给的是我想要的效果!
9楼的还是不对!
发表于 2011-1-6 00:13:05 | 显示全部楼层
注册 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

评分

参与人数 2金钱 +20 收起 理由
lon91ong + 10
lixiaolong + 10 学习了!

查看全部评分

发表于 2011-1-6 08:06:01 | 显示全部楼层
大侠侠一出现,就是不一样...
发表于 2011-1-6 12:51:44 | 显示全部楼层
版主威武,学习了,本人菜鸟,对于消息还是不熟呀。。。。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-10-2 18:32 , Processed in 0.092021 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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