3mile 发表于 2011-9-20 23:33 http://www.autoitx.com/images/common/back.gif
太感谢了,这个一次就满足了我所有的请求,我认为已经完美了,当然同时感谢所以朋友的的热情帮助,向你们学习,您辛苦了。 回复 17# touch_xu
输入 0.1 试试~ #include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$Form1 = GUICreate("Form1", 629, 106, 192, 132)
$Input1 = GUICtrlCreateInput("Input1", 40, 32, 433, 24)
$Button1 = GUICtrlCreateButton("Button1", 496, 32, 105, 33)
GUISetState(@SW_SHOW)
GUIRegisterMsg($WM_COMMAND, "MY_WM_COMMAND")
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
GUICtrlSetData($Input1, '')
EndSwitch
WEnd
Func MY_WM_COMMAND($hWnd, $msg, $wParam, $lParam)
Local Const $EN_CHANGE = 0x300
Local $nNotifyCode = BitShift($wParam, 16)
Local $nID = BitAND($wParam, 0xFFFF)
Local $hCtrl = $lParam
If $nID = $Input1 Then
If $nNotifyCode = $EN_CHANGE Then
$read=GUICtrlRead($Input1)
IfString(StringLeft($read,2))=="00" Then
GUICtrlSetData($Input1,StringRegExpReplace($read,'^0+',''))
ElseIfString(StringLeft($read,1))=="." Then
GUICtrlSetData($Input1,StringRegExpReplace($read,'(^\.)+','0.'))
Else
$write=StringRegExpReplace($read,'[^\.0-9]+','')
$temp=StringSplit($write,".",1+2)
if UBound($temp)>2 Then $write=$temp&"."&$temp
GUICtrlSetData($Input1,$write)
EndIf
EndIf
EndIf
EndFunc
回复 18# afan
首字母0是不接受啊,所以不输入不了啊 回复afan
首字母0是不接受啊,所以不输入不了啊
touch_xu 发表于 2011-9-22 22:47 http://www.autoitx.com/images/common/back.gif
01 不合法,0.1 不合法吗?
3mile 已经修改了 回复 21# afan
可能我用的就是最后改过的吧,现在是可以了,十分感谢您的帮助,再次谢谢了。 #19楼3mile的好像可以输入这样的数:01.2 回复 10# afan
測試過 好像我覺得 老大的 正則 看起來好像判斷比較沒問題呢??
我試著改一下變成
StringRegExp(GUICtrlRead($Input), '^\d*(?:\.\d+)?$|^0\.\d+$|^0$')
因為我想讓 系統也可以輸入 負數 但是這樣就會出現一個 不合理的現象
-001 是可以通過的......不知道應該如何改寫 才會變成 不通過呢?? 回复 24# kk_lee69
试试 StringRegExp(GUICtrlRead($Input), '^-?\d*(?:\.\d+)?$|^-?0\.\d+$|^0$') 回复 25# afan
可以了 感謝幫忙!! 正则....用法很多,,,,牛人.. 正则....用法很多,,,,牛人.. 这个帖子真是经典。收藏下。
挖坟不违规吧……
页:
1
[2]