ddx13 发表于 2009-3-21 01:43:53

请问有什么办法可以让GUICtrlCreateInput只能输入数字和字母。

请问有什么办法可以让GUICtrlCreateInput只能输入数字和字母
#include <GUIConstantsEx.au3>

Opt('MustDeclareVars', 1)

Example()

Func Example()
        Local $file, $btn, $msg
       
        GUICreate(" My GUI input acceptfile", 320, 120, @DesktopWidth / 2 - 160, @DesktopHeight / 2 - 45, -1, 0x00000018); WS_EX_ACCEPTFILES
        $file = GUICtrlCreateInput("", 10, 5, 300, 20)
        GUICtrlSetState(-1, $GUI_DROPACCEPTED)
        GUICtrlCreateInput("", 10, 35, 300, 20)         ; will not accept drag&drop files
        $btn = GUICtrlCreateButton("Ok", 40, 75, 60, 20)

        GUISetState()

        $msg = 0
        While $msg <> $GUI_EVENT_CLOSE
                $msg = GUIGetMsg()
                Select
                        Case $msg = $btn
                                ExitLoop
                EndSelect
        WEnd

        MsgBox(4096, "drag drop file", GUICtrlRead($file))
EndFunc   ;==>Example

[ 本帖最后由 ddx13 于 2009-3-21 13:00 编辑 ]

laojikelly 发表于 2009-3-21 02:30:08

不懂,学习...
帮你顶上....

xayle 发表于 2009-3-21 03:10:23

看看能不能用


#include <GUIConstantsEx.au3>


$Form = GUICreate("Form1", 633, 454, 192, 114)
$Inputuser = GUICtrlCreateInput("", 82, 90, 93, 20)
$Label = GUICtrlCreateLabel("", 186, 91, 160, 20)
$Inputpass = GUICtrlCreateInput("", 82, 120, 93, 20)
$ccccc = GUICtrlCreateButton("Check", 100, 150, 75, 25)
GUISetState(@SW_SHOW)

While 1
        $msg = GUIGetMsg()
        Select
                Case $msg = $GUI_EVENT_CLOSE
                        Exit
                Case $msg = $Inputuser
                        InputCheck()
        EndSelect
WEnd


Func InputCheck()
        $user = GUICtrlRead($Inputuser)
        If Not StringRegExp($user, "^+$") Then
                GUICtrlSetState($Inputuser, $GUI_FOCUS)
                GUICtrlSetData($Label, "X 只允许输入英文字母和数字.")
                GUICtrlSetColor($Label, 0xFF0000)
                GUICtrlSetFont($Label, 9, 400, 0, "Tahoma")
        Else
                GUICtrlSetData($Label, "√ 输入正确.")
                GUICtrlSetFont($Label, 9, 800, 0, "Tahoma")
                GUICtrlSetColor($Label, 0x008000)
                GUICtrlSetFont($Label, 9, 400, 0, "Tahoma")
        EndIf
EndFunc   ;==>InputCheck

ddx13 发表于 2009-3-21 08:40:14

谢谢,你这样只是有提示,而我希望的是,在Input中只能输入数字和母字,就有点象加入了$ES_NUMBER的样子。

fanchenglu 发表于 2009-3-21 09:09:07

使用正则表达式吧,3楼的例子已经完全满足把你的要求

[ 本帖最后由 fanchenglu 于 2009-3-21 09:14 编辑 ]

大绯狼 发表于 2009-3-21 09:32:45

#include <GUIConstants.au3>

#Region ### START Koda GUI section ### Fandm=
$Form1 = GUICreate("Form1", 431, 204, 193, 115)
$Input1 = GUICtrlCreateInput("Input1", 176, 72, 121, 21)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
        $text=Asc(StringRight(GUICtrlRead($Input1),1))
        if _IsFocused($Form1,$Input1) and ($text<48 or $text>57) and($text<65 Or $text>90) and ($text<97 or $text>122) Then GUICtrlSetData($Input1,StringLeft(GUICtrlRead($Input1),StringLen(GUICtrlRead($Input1))-1))
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit

        EndSwitch
WEnd

Func _IsFocused($hWnd, $nCID)
    Return ControlGetHandle($hWnd, '', $nCID) = ControlGetHandle($hWnd, '', ControlGetFocus($hWnd))
EndFunc

llztt 发表于 2009-3-21 11:47:01

呵呵,灰狼代码还得改进一下,因为我可以复制中文文本进去的

ddx13 发表于 2009-3-21 13:00:02

其实方法我到是有,本以为有什么函数可以实现的。
下面是我自己写的一段代码,给大家供参考。

#include <GUIConstants.au3>
Dim $QZZF
#Region ### START Koda GUI section ### Fandm=
$Form1 = GUICreate("Form1", 431, 204, 193, 115)
$Input1 = GUICtrlCreateInput("Input1", 176, 72, 121, 21)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
        $INPUTZA=GUICtrlRead($Input1)
        If $INPUTZA <> $QZZF Then
                if StringIsUpper ( StringRegExpReplace(StringStripWS ( StringUpper ( $INPUTZA ),8),"","A"))=1 then
                        $QZZF = $INPUTZA
                else
                        GUICtrlSetData($Input1, $QZZF)
                endif
        EndIf
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit

        EndSwitch
WEnd

[ 本帖最后由 ddx13 于 2009-3-22 00:45 编辑 ]

llztt 发表于 2009-3-21 22:20:54

你做的才经典呢,我直接可以输入中文

silvay22 发表于 2013-5-11 09:47:33

大绯狼的代码写的太好了可以借鉴一下

smooth 发表于 2014-1-29 14:27:59

正好用的,借鉴一下,感谢。

hnfeng 发表于 2014-1-29 15:19:00

学习了,收藏备用
页: [1]
查看完整版本: 请问有什么办法可以让GUICtrlCreateInput只能输入数字和字母。