| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 40 人关注过本帖
标题:只能输入电话号码的textbox类,很实用
只看楼主 加入收藏
sam_jiang
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:14
帖 子:992
专家分:1516
注 册:2021-10-13
结帖率:97.62%
收藏
 问题点数:20 回复次数:2 
只能输入电话号码的textbox类,很实用
如题。

已经放入表单测试过,好像没有问题。

代码如下:
程序代码:
**************************************************
*-- 类:           txt_phone (d:\documents\visual foxpro 项目\myclass.vcx)
*-- 父类:  textbox
*-- 基类:    textbox
*-- 时间戳:   10/08/25 09:40:09 PM
*
DEFINE CLASS txt_phone AS textbox


    Value = (space(14))
    Height = 20
    Width = 100
    *-- 分隔符
    decollater = "-"
    Name = "txt_phone"


    PROCEDURE InteractiveChange
        DO CASE 
            CASE LEN(ALLTRIM(this.value))=3
                IF INLIST(SUBSTR(this.Value,1,1),"0","1")
                    IF SUBSTR(this.Value,1,2)="01" OR SUBSTR(this.Value,1,2)="02" OR SUBSTR(this.Value,1,1)="1"
                        *!* 座机区号01或02开头,手机则以1开头
                        this.Value=ALLTRIM(this.Value)+SPACE(1)+this.decollater
                        this.SelStart=LEN(this.Value)
                        this.SelLength=4
                    ENDIF 
                ELSE 
                    SET MESSAGE TO "电话号码的首尾应为0或1"
                    this.SelStart=0
                    this.SelLength=3
                ENDIF
            CASE LEN(allt(this.value))=9
                 this.Value=ALLTRIM(this.Value)+this.decollater
                 this.SelStart=LEN(this.Value)
                 this.sellength=4
            CASE LEN(ALLTRIM(this.value))=4
                this.Value=ALLTRIM(this.Value)+this.decollater
                 this.SelStart=LEN(this.Value)
                 this.SelLength=4
        ENDCASE 
    ENDPROC


    PROCEDURE KeyPress
        LPARAMETERS nKeyCode, nShiftAltCtrl
        IF !(BETWEEN(nkeycode,48,57) OR INLIST(nkeycode,32,9,19,4,13,127,7))
            *!* 只允许输入0-9,空格,tab,左箭头,右箭头,回车,退格,删除
            NODEFAULT 
        ENDIF
        *!*    假设text的值为0571-8888-9999
        *!*    座机号
        *!*    基础结构:由区号(3-4位 如:021,0571)和本地号码8位(还有少部分地区7位)组成,总位长不超过11位
        *!*    手机号
        *!*    前3位:网络识别号(区分运营商,如移动134-139、联通130-132、电信133等)
        *!*    4-7位:地区编码(标识归属地)
        *!*    8-11位:用户号码(随机分配)
        *!*    1,当前控件区号段只允许输入0-9数字,以及空格
        *!*    第一位,只能是0(座机),或1(手机);
        *!*    三位区号城市列表
        *!*    北京 - 010(首都,全国政治文化中心)
        *!*    广州 - 020(华南地区核心城市)
        *!*    上海 - 021(全国经济中心)
        *!*    天津 - 022(北方重要港口城市)
        *!*    重庆 - 023(西部直辖市)
        *!*    沈阳 - 024(东北地区中心城市)
        *!*    南京 - 025(华东地区重要城市)
        *!*    台北 - 026 (预留)
        *!*    武汉 - 027(中部交通枢纽)
        *!*    成都 - 028(西南地区核心城市)
        *!*    西安 - 029(西北地区中心城市)
    ENDPROC


    PROCEDURE Valid
        n=ALINES(atemp,this.Value,5,this.decollater)
        IF LEN(ALLTRIM(this.value))<13 &&不完整
            this.SelStart=0
            this.SelLength=3
            RETURN .f.
        ENDIF 

*****************************************************************
*这段代码有点多余,好像不会发生了,interactivechange里已经避免了*
        IF !INLIST(SUBSTR(this.Value,1,1),"0","1")
            this.SelStart=0
            this.SelLength=IIF(AT(this.decollater,this.Value)=0,4,AT(this.decollater,this.Value))-1
        ENDIF
*****************************************************************         
        n=ALINES(atemp,this.Value,5,this.decollater )
        IF n<3 
            this.SelStart=0
            this.SelLength=AT(this.decollater ,this.Value)-1
            RETURN .f.
        ELSE 
            DO CASE 

                CASE LEN(ALLTRIM(atemp(1)))<3 OR LEN(ALLTRIM(atemp(1)))>4
                    this.SelStart=0
                    this.SelLength=LEN(ALLTRIM(atemp(1)))
                    RETURN .f.
                CASE LEN(ALLTRIM(atemp(2)))<4
                    this.SelStart=5
                    this.SelLength=4
                    RETURN .f.
                CASE LEN(ALLTRIM(atemp(3)))<3
                    this.SelStart=9
                    this.SelLength=4
                    RETURN .f.
                 
            ENDCASE 
        ENDIF

    ENDPROC


ENDDEFINE
*
*-- EndDefine: txt_phone
**************************************************
搜索更多相关主题的帖子: this 城市 IF CASE Value 
昨晚 21:48
schtg
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:Usa
等 级:贵宾
威 望:67
帖 子:2257
专家分:4736
注 册:2012-2-29
收藏
得分:0 
4 小时前
hsfisher
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:142
专家分:103
注 册:2009-4-26
收藏
得分:0 
1 小时前
快速回复:只能输入电话号码的textbox类,很实用
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019417 second(s), 10 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved