找回密码
 加入
搜索
楼主: 261869247

[GUI管理] 输入框 只能输入汉字【已解决】

 火.. [复制链接]
发表于 2010-7-20 22:38:10 | 显示全部楼层
呵呵,也发现这个问题了。再来个消息模式的
#include <GUIComboBox.au3>
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>
Global $hGUI
Global Const $EN_CHANGE = 0x300
$hGUI = GUICreate("检测Combo有键盘输入", 400, 96)
$hinput = GUICtrlCreateInput("",2,5,396,20);
GUISetState()
GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
GUIDelete()
Func WM_COMMAND($hWinHandle, $iMsg, $wParam, $lParam)
 If _WinAPI_HiWord($wParam) = $EN_CHANGE And _WINAPI_LoWord($wParam) = $hinput Then
         Local $read,$Re,$ReRead
        $read=GUICtrlRead($hinput)
        $InputSplit = StringRegExp($read, '.', 3)
        For $n=0 To UBound($InputSplit)-1
        If StringRegExp($InputSplit[$n],'[^\x00-\xff]',0)=0 Then
                $read=StringReplace($read,$InputSplit[$n],'')
                GUICtrlSetData($hinput,$Read)
        EndIf
        Next
 EndIf
EndFunc

评分

参与人数 1威望 +2 收起 理由
afan + 2

查看全部评分

发表于 2010-7-20 22:42:13 | 显示全部楼层
14楼的改造代码,应该可以解决快速输入半角字符或在已输入的字符中插入字符或粘贴时发生错误的问题。
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <array.au3>
Local $InputSplit, $read
$Form1 = GUICreate("Form1", 256, 105, -1, -1)
$Input1 = GUICtrlCreateInput("", 24, 40, 190, 21, $ES_AUTOHSCROLL)
AdlibRegister("scan", 50)
GUISetState(@SW_SHOW)

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit

        EndSwitch
WEnd


Func scan()
        $read=GUICtrlRead($input1)
        $InputSplit = StringRegExp($read, '.', 3)
        For $n=0 To UBound($InputSplit)-1
        If StringRegExp($InputSplit[$n],'[^\x00-\xff]',0)=0 Then
                $read=StringReplace($read,$InputSplit[$n],'')
                GUICtrlSetData($input1,$Read)
        EndIf
        Next
EndFunc   ;==>scan

评分

参与人数 2贡献 +8 收起 理由
lynfr8 + 5 很棒的见解
afan + 3

查看全部评分

发表于 2010-7-20 22:48:37 | 显示全部楼层
16# 17# 都不错,学习了~~
发表于 2010-7-21 05:06:26 | 显示全部楼层
学习了~~..
 楼主| 发表于 2010-7-23 13:19:56 | 显示全部楼层
受教了 非常不错 呵呵 每天都在学习!
 楼主| 发表于 2010-7-23 13:20:21 | 显示全部楼层
     谢谢大家!
发表于 2010-7-23 15:08:31 | 显示全部楼层
在6# xsjtxy 兄弟的基础上增加了一个功能,可以限制全角数字及字母的输入
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$Form1 = GUICreate("Form1", 500, 150, -1, -1)
dim $ii = ""
$Input1 = GUICtrlCreateInput($ii, 30, 50, 440, 21,$ES_WANTRETURN)
GUISetState(@SW_SHOW)
AdlibRegister("Input",10)
While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit

        EndSwitch
WEnd
func Input()
$i = GUICtrlRead($Input1)
if $i = $ii then Return
; 半角符的数字及英文
$i = StringReplace($i, "0", "")
$i = StringReplace($i, "1", "")
$i = StringReplace($i, "2", "")
$i = StringReplace($i, "3", "")
$i = StringReplace($i, "4", "")
$i = StringReplace($i, "5", "")
$i = StringReplace($i, "6", "")
$i = StringReplace($i, "7", "")
$i = StringReplace($i, "8", "")
$i = StringReplace($i, "9", "")
$i = StringReplace($i, "a", "")
$i = StringReplace($i, "b", "")
$i = StringReplace($i, "c", "")
$i = StringReplace($i, "d", "")
$i = StringReplace($i, "e", "")
$i = StringReplace($i, "f", "")
$i = StringReplace($i, "g", "")
$i = StringReplace($i, "h", "")
$i = StringReplace($i, "i", "")
$i = StringReplace($i, "j", "")
$i = StringReplace($i, "k", "")
$i = StringReplace($i, "l", "")
$i = StringReplace($i, "m", "")
$i = StringReplace($i, "n", "")
$i = StringReplace($i, "o", "")
$i = StringReplace($i, "p", "")
$i = StringReplace($i, "q", "")
$i = StringReplace($i, "r", "")
$i = StringReplace($i, "s", "")
$i = StringReplace($i, "t", "")
$i = StringReplace($i, "u", "")
$i = StringReplace($i, "v", "")
$i = StringReplace($i, "w", "")
$i = StringReplace($i, "x", "")
$i = StringReplace($i, "y", "")
$i = StringReplace($i, "z", "")

; 全角符的数字及英文
$i = StringReplace($i, "0", "")
$i = StringReplace($i, "2", "")
$i = StringReplace($i, "3", "")
$i = StringReplace($i, "4", "")
$i = StringReplace($i, "5", "")
$i = StringReplace($i, "6", "")
$i = StringReplace($i, "7", "")
$i = StringReplace($i, "8", "")
$i = StringReplace($i, "9", "")
$i = StringReplace($i, "a", "")
$i = StringReplace($i, "b", "")
$i = StringReplace($i, "c", "")
$i = StringReplace($i, "d", "")
$i = StringReplace($i, "e", "")
$i = StringReplace($i, "f", "")
$i = StringReplace($i, "g", "")
$i = StringReplace($i, "h", "")
$i = StringReplace($i, "i", "")
$i = StringReplace($i, "j", "")
$i = StringReplace($i, "k", "")
$i = StringReplace($i, "l", "")
$i = StringReplace($i, "m", "")
$i = StringReplace($i, "n", "")
$i = StringReplace($i, "o", "")
$i = StringReplace($i, "p", "")
$i = StringReplace($i, "q", "")
$i = StringReplace($i, "r", "")
$i = StringReplace($i, "s", "")
$i = StringReplace($i, "t", "")
$i = StringReplace($i, "u", "")
$i = StringReplace($i, "v", "")
$i = StringReplace($i, "w", "")
$i = StringReplace($i, "x", "")
$i = StringReplace($i, "y", "")
$i = StringReplace($i, "z", "")
GUICtrlSetData($Input1,$i)
$ii = $i
endfunc

评分

参与人数 1金钱 +35 贡献 +1 收起 理由
lynfr8 + 35 + 1

查看全部评分

发表于 2010-7-23 16:30:59 | 显示全部楼层
P版出过题的。我忘记叫什么了。
记得有很多人都是先输入消息 判断 然后删除。
P版的代码是直接截取消息
发表于 2010-7-28 13:44:06 | 显示全部楼层
學習了.......  不知道是不是有 P版 的 源碼
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-16 16:38 , Processed in 0.073747 second(s), 14 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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