lon91ong 发表于 2011-1-5 18:42:27

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

本帖最后由 lon91ong 于 2011-1-6 12:27 编辑

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

大侠帮忙!

8楼和11楼的方法不错!

woeiwoei 发表于 2011-1-5 18:46:02

回复 1# lon91ong


    GUICtrlRead 控件 不行吗?

lon91ong 发表于 2011-1-5 19:24:50

Input好像没有onClick事件吧?! 只有onChange

飘云 发表于 2011-1-5 19:28:16

你双击一下输入框就是全选了。。。。。

lon91ong 发表于 2011-1-5 20:31:59

回复 4# 飘云


我想要的是类似Combo的鼠标点击的同时,就全选了文本!

lixiaolong 发表于 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

lon91ong 发表于 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=$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

lixiaolong 发表于 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

lon91ong 发表于 2011-1-5 23:02:14

多谢8楼的大侠,你给的是我想要的效果!
9楼的还是不对!

afan 发表于 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

lxz 发表于 2011-1-6 08:06:01

大侠侠一出现,就是不一样...

飘云 发表于 2011-1-6 12:51:44

版主威武,学习了,本人菜鸟,对于消息还是不熟呀。。。。
页: [1]
查看完整版本: [已解决]怎么做输入框(Input)获得焦点即选中全部已输入的内容