首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 怎么限制inputbox只允许输入汉字
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-21 15:56:24 楼主

    如题,。。。。。。
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-21 16:17:411楼 得分:0
    好像沒這個功能吧﹐關注中。。。

    只能判斷是字母還是數字的有﹐排除法吧﹐呵呵,要是小日本語﹐韓國語挂了。
    判斷漢字好像不行。
    A=inputbox("输入.......")
    select case asc(A)
    case 48 to 57
    msgbox "数字。"
    case 65 to 90
    msgbox "大写字母。"
    case 97 to 122
    msgbox "小写字母。"
    case else
    msgbox "其他字符。"
    end select
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-21 16:34:002楼 得分:0
    出丑了﹐我來幫樓主想辦法﹐晚上問問我老師去.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-21 16:35:203楼 得分:0
    用楼上的方法判断 汉字的asc码范围,
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-21 16:38:394楼 得分:0
    楼上的应该就可以判断出不是字母和数字了,呵呵,姑且把这些非字母数字的都当作汉字就行了!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Fanks
    • 等级:
    发表于:2008-05-21 17:02:375楼 得分:0
    确实是,限制非字母和数字容易,限制汉字,呵呵...,还有一个简便办法排除数字和字母,判断每个输入的字符的字节数是否双字节,不知道你是否允许汉字符号。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • myjian
    • 等级:
    发表于:2008-05-21 19:12:076楼 得分:0
    呃...关注
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-22 10:30:227楼 得分:0
    来学习一下
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • alifriend
    • 等级:
    发表于:2008-05-22 11:01:468楼 得分:0
    inputbox不好搞,只能输入后再判断,建议用text,或者自己搞个窗体模拟inputbox

    http://www.moditek.com/intranet/gb2312code.htm

    这是汉字码表,在文本框的keypress事件里,用Hex(KeyAscii)取得汉字的十六进制(直接用KeyAscii得到的是负数,不直观,但也行),比如“有”是D3D0,再根据码表的范围判断是否汉字,如果不是汉字,keyascii=0便行。
    如果是用的inputbox,那就只能输入完后,再mid()一位一位取,hex(asc(XXX)),把不是汉字的过滤掉了。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-22 13:07:089楼 得分:0
    Dim aa$, i%, HexStr$, HexVal&, IsEngNum As Boolean
    Private Sub Command1_Click()
      aa = InputBox("ÊäÈë.......")
      If aa <> "" Then
          IsEngNum = False
          For i = 1 To Len(aa)
            HexStr = Hex(Asc(Mid(aa, i, 1)))
            HexVal = Val("&H" + Mid(HexStr, 1, 2)) * 256 + Val("&H" + Mid(HexStr, 3, 2))
            If HexVal < 45217 Or HexVal > 63486 Then IsEngNum = True: Exit For
          Next i
          MsgBox IIf(IsEngNum, "ÊäÈëµÄÄÚÈÝÓзǺº×Ö", "ÊäÈëµÄÄÚÈÝÖ»Óкº×Ö")
      End If
    End Sub


    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-22 13:07:3610楼 得分:0
    Dim aa$, i%, HexStr$, HexVal&, IsEngNum As Boolean
    Private Sub Command1_Click()
      aa = InputBox("输入.......")
      If aa <> "" Then
          IsEngNum = False
          For i = 1 To Len(aa)
            HexStr = Hex(Asc(Mid(aa, i, 1)))
            HexVal = Val("&H" + Mid(HexStr, 1, 2)) * 256 + Val("&H" + Mid(HexStr, 3, 2))
            If HexVal < 45217 Or HexVal > 63486 Then IsEngNum = True: Exit For
          Next i
          MsgBox IIf(IsEngNum, "输入的内容有非汉字", "输入的内容只有汉字")
      End If
    End Sub
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-22 23:04:3611楼 得分:0
    1.先要子类化窗体,捕获窗体的WM_Activate消息,
    2.如果截获到弹出Inputbox(类名为#32770),再用
    EnumChildWindows lParam, AddressOf EnumChildProc, ByVal 0&

    Public Function EnumChildProc(ByVal hwnd As Long, ByVal lParam As Long) As Long

        Select Case GetWindowClassName(hwnd)
                Case "Edit"
                  ls=Getwindowlong(hwnd,gwl_style)
                  setwindowlong hwnd,ls or ES_Number
        End Select
       
        EnumChildProc = 1
    End Function


    Public Function GetWindowClassName(ByVal m_hWnd As Long) As String
    Dim RetVal As Long, lpClassName As String

        lpClassName = Space(255)
        RetVal = GetClassName(m_hWnd, lpClassName, 255)
        ThisWindowClassName = Left$(lpClassName, RetVal)

    End Function
               
               
               

       


    End Function
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-24 10:11:4412楼 得分:0
    学习
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-24 11:00:4213楼 得分:0

    以上就是通过截获msgbox后,改变msgbox的样式和子窗口的位置
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-27 22:07:1714楼 得分:0
    请问如何将本机的图片贴上去,我上图的图片看不到
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-27 23:55:2115楼 得分:0
    引用 8 楼 alifriend 的回复:
    inputbox不好搞,只能输入后再判断,建议用text,或者自己搞个窗体模拟inputbox

    http://www.moditek.com/intranet/gb2312code.htm

    这是汉字码表,在文本框的keypress事件里,用Hex(KeyAscii)取得汉字的十六进制(直接用KeyAscii得到的是负数,不直观,但也行),比如“有”是D3D0,再根据码表的范围判断是否汉字,如果不是汉字,keyascii=0便行。
    如果是用的inputbox,那就只能输入完后,再mid()一位一位取,hex(asc(X…


    在这个基础上再用 正则表达式 判断

    http://topic.csdn.net/u/20080507/17/d31bf1af-a3a0-417d-b52b-dbd20e4c0221.html

    这里的代码可以帮到你~
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved