找回密码
 加入
搜索
查看: 2269|回复: 6

如何限定只能输入数字?且数字包括小数

[复制链接]
发表于 2009-1-12 19:38:17 | 显示全部楼层 |阅读模式
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$Form1 = GUICreate("Form1", 320, 229, 193, 115)
$Input1 = GUICtrlCreateInput("", 80, 56, 169, 21)
GUISetState(@SW_SHOW)
While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
        EndSwitch
WEnd
我的问题是:怎样限定只能输入数字,数字包括小数,我限定了以后,$Input1 =GUICtrlCreateInput("", 80, 56, 169, 21,0x2000)
但是却不能输入小数。

[ 本帖最后由 silvay22 于 2009-1-14 23:02 编辑 ]
发表于 2009-1-12 19:57:04 | 显示全部楼层
嗯 确实不能输入小数点  那就用if来判断把
发表于 2009-1-13 02:27:01 | 显示全部楼层
可以的,,,..............
发表于 2009-1-14 11:42:33 | 显示全部楼层
我不用AU3来写GUI,所以对GUI控件不熟悉。

一般的做法是,在INPUT的KEYDOWN事件中,用正则表达式,对输入的字判断。
只能为\d或\.
 楼主| 发表于 2009-1-14 23:01:54 | 显示全部楼层
谢谢akmm88的提醒,用正则表达式即可呵呵
发表于 2019-9-13 13:00:44 | 显示全部楼层
#include <GUIConstantsEx.au3>

$GUI = GUICreate("", 320, 120)
$Input = GUICtrlCreateInput("", 10, 35, 300, 20)

GUISetState()

While 1
        $msg = GUIGetMsg()
        Switch $msg
                Case $GUI_EVENT_CLOSE
                        Exit
        EndSwitch

        $t = GUICtrlRead($Input)
        If $t <> "" Then
                If StringRight($t, 1) <> "." And StringIsDigit(StringRight($t, 1)) = 0 Then GUICtrlSetData($Input, StringTrimRight($t, 1))
        EndIf
WEnd
发表于 2019-11-1 12:09:27 | 显示全部楼层

能用,但是有个问题,就是这样限制之后,虽然其他字符未在输入框中显示,但是已经改变了输入框的状态,和系统的$ES_NUMBER不一样,$ES_NUMBER是不让输入,且不会改变输入框的状态。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-23 17:14 , Processed in 0.091272 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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