Masked Edit 控件

Masked Edit 控件提供受限制的数据输入及格式化的数据输出。它显示提示信息，说明输入的数据或显示的数据类型。此控件看起来很象工具栏中的一个图标。

文件名

MSMASK32.OCX

类名

MaskEdBox

说明

Masked Edit 控件通常表现为一个标准文本框控件，增强了选择掩码输入和格式化输出的功能。如果没有使用输入掩码，那么，除了它的动态数据交换 (DDE) 功能，Masked Edit 控件的状态更接近于标准文本框。

如果用 Mask 属性定义输入掩码，则 Masked Edit 控件中的每一个字符位置，或者是指定类型的占位符，或者是原义字符。原义字符或 literals 可以指出所用数据的类型。例如，电话号码的区号两边的圆括号就是原义字符：(206)。

如果输入的字符与输入掩码冲突，控件将产生 ValidationError 事件。输入掩码不允许在控件中输入无效字符。

Masked Edit 控件具有三个被绑定的属性：DataChanged、DataField 和 DataSource。这意味着可将它链接到数据控件上，并可显示记录集中当前记录的字段值。Masked Edit 控件也可向记录集中写值。

如果可能的话，在读取 DataField 属性引用的字段值时，会将此值转换成 Text 属性的字符串。如果记录集是可更新的，那么字符串将转换成该字段的数据类型。

为了在定义掩码后清除 Text 属性，首先要给一个空字符串设置 Mask 属性，然后再给空字符串设置 Text 属性。

MaskedEdit1.Mask = ""
MaskedEdit1.Text = ""

在定义输入掩码时，Masked Edit 控件的状态就不同于标准文本框了。当输入数据或移动插入点时，插入点会自动跳过原义字符。

当插入或删除字符时，插入点右侧的所有非原义字符都必须跟着移位。如果这些字符的移位导致有效性错误，则应防止插入或删除，同时会触发 ValidationError 事件。

假设 Mask 属性被定义为 "?###"，而 Text 属性的当前值是 "A12"。如果想把字母“下”插入到字母 "A"的左侧，"A" 就会右移。因为要求输入掩码中的第二个值为数字，所以 "A" 使控件生成 ValidationError 事件。

Masked Edit 控件也供 Text 属性的值在运行时有效。如果 Text 属性的设置使属性自身与输入掩码冲突，则控件生成运行时错误。

可以象对标准文本框控件那样，用与那里相同的方法选择文本。当删除选定文本时，控件将移动选定文本右侧的其余字符。但是，在移位过程中可能导致有效性错误的任何剩余字符都被删除了，所以不会产生 ValidationError 事件。

通常，当把 Masked Edit 控件中的选定文本复制到剪贴板时，包括原义字符在内的全部选定文本都被送到剪贴板上。用 ClipMode 属性，可以只将用户输入的数据送到剪贴板上，而不会复制输入掩码中的原义字符。


Topic Not Found

未找到该主题

未找到相匹配的主题。可能的原因和解决方法如下：

  • 包含目标主题的文件 (.chm) 没有位于指定的位置。

    解决方法：重新运行 MSDN Library的安装。

  • 包含当前主题或目标主题的文件 (.chm) 已经过时，并且链接不再有效。

    解决方法：安装最新版本的 MSDN Library。

  • MSDN Library CD 不在 CD-ROM 中。

    解决方法：将 MSDN Library CD 装入 CD-ROM 中。


ValidationError 事件

当 Masked Edit 控件接收到无效输入时，就会产生该事件，其中，无效输入与输入掩码确定的输入一样。

语法

Private Sub ctlname_ValidationError(InvalidText As String; StartPosition As Integer)

说明

InvalidText 是 Text 属性的值，其中包括无效字符。这意味着 InvalidText 包括输入掩码中使用的任何原义字符和占位符。

StartPosition 是 InvalidText 中出现错误的位置（第一个无效字符的位置）。


Masked Edit 控件常数

外观常数

常数 | 值 | 描述
mskFlat | 0 | 平面。无直观效果的画图控件和窗体。
mskThreeD | 1 | （缺省）3D。有三维效果的画图控件。

BorderStyle 常数

常数 | 值 | 描述
vbBSNone | 0 | 无边界
vbFixedSingle | 1 | 单个固定

ClipBoard 常数

常数 | 值 | 描述
mskCFRTF | &HFFFFBF01 | 丰富的文本格式（.rtf 文件）
mskCFText | 1 | 文本（.txt 文件）
mskCFBitmap | 2 | 位图（.bmp 文件）
mskCFMetafile | 3 | 元文件（.wmf 文件）
mskCFDIB | 8 | 与设备无关的位图
mskCFPalette | 9 | 颜色调色板
mskCFEMetafile | 14 | 扩展元文件（.emf 文件）
mskCFFiles | 15 | 文件名列表

ClipMode 常数

常数 | 值 | 描述
mskIncludeLiterals | 0 | 在执行剪贴或复制操作时包括原义字符。
MskExcludeLiterals | 1 | 在执行剪贴或复制操作时排除原义字符。

DragOver 常数

常数 | 值 | 描述
mskEnter | 0 | 拖动到目标的源控件。
mskLeave | 1 | 被拖出目标的源控件。
mskOver | 2 | 从目标的一个位置拖到另一个位置的源控件。

错误常数

常数 | 值 | 描述
mskDataObjectLocked | 672 | DataObject 格式列表可能不被清除，或被扩充到 OLEStartDrag 事件之外。
mskExpectedAnArgument | 673 | 至少希望有一个参数。
mskFormatNotByteArray | 675 | 非固有 OLE 拖放格式，与 SetData 共用，要求字节数组数据。GetData 可能返回的字节比给予 SetData 的字节要多。
mskGetNotSupported | 394 | 属性是只写的。
mskInvalidObjectUse | 425 | 无效使用对象。
mskInvalidProcedureCall | 5 | 无效过程调用。
mskInvalidPropertyValue | 380 | 无效属性值。
mskRecursiveOleDrag | 674 | 非法递归调用 OLE 拖放。
mskSetNotSupported | 383 | 属性是只读的。
mskWrongClipboardFormat | 461 | 指定的格式与数据格式不匹配。

MousePointer 常数

常数 | 值 | 描述
mskDefault | 0 | 缺省
mskArrow | 1 | 箭头
mskCross | 2 | 十字线
mskIbeam | 3 | 梁形
mskIcon | 4 | 图标
mskSize | 5 | 调整大小
mskSizeNESW | 6 | 调整大小 NE，SW 鼠标指针
mskSizeNS | 7 | 调整大小 N，S 鼠标指针
mskSizeNWSE | 8 | 调整大小 NW，SE 鼠标指针
mskSizeEW | 9 | 调整大小 W，E 鼠标指针
mskUpArrow | 10 | 向上箭头
mskHourglass | 11 | 沙漏
mskNoDrop | 12 | 非下拉
mskArrowHourglass | 13 | 箭头与沙漏
mskArrowQuestion | 14 | 箭头与问号
mskSizeAll | 15 | 全部调整大小
mskCustom | 99 | 定制 MouseIcon 属性指定的鼠标指针图标

OLEDrag 常数

常数 | 值 | 描述
mskOLEDragManual | 0 | 只在编程控件下初始化 OLE 拖/放。
mskOLEDragAutomatic | 1 | 当用户拖“出”控件时或在编程控件下初始化 OLE 拖/放。

OLEDrop 常数

常数 | 值 | 描述
mskOLEDropNone | 0 | 不接受 OLE 拖/放操作。
mskOLEDropManual | 1 | 只在编程控件下接受 OLE 拖/放。
mskOLEDropAutomatic | 2 | 无须编程控件就可接受 OLE 拖/放。

OLEDropEffect 常数

常数 | 值 | 描述
mskOLEDropEffectNone | 0 | 未曾发生 OLE 拖/放操作，也不将发生 OLE 拖/放操作。
mskOLEDropEffectCopy | 1 | 掩码，指出进行了复制，或将进行复制。
mskOLEDropEffectMove | 2 | 掩码，指出进行了移动，或将移动。
mskOLEDropEffectScroll | &H80000000 | 掩码，指出滚动了拖放目标窗口，或将滚动拖放目标窗口。


AllowPrompt 属性

确定提示字符是否为有效的输入字符。

语法

[form.]MaskedEdit.AllowPrompt [= {True | False}]

说明

AllowPrompt 属性的设置值如下所示：

设置值 | 描述
False | （缺省）提示字符不是有效输入字符。如果输入提示字符，则将触发 ValidationError 事件。
True | 提示字符是有效输入字符。

例如，假设已定义提示字符：0，并希望 Masked Edit 控件接收 0 到 9 之间的五个数字。指定的掩码是：#####。如果 AllowPrompt 属性的值是 False，则输入 0 就会产生 ValidationError 事件。如果 AllowPrompt 属性值是 True，则可将 0 作为有效输入字符输入。

数据类型

Integer (Boolean)


AutoTab 属性

确定是否只要用有效数据填充 Masked Edit 控件的 Text 属性，Tab 键次序中的下一控件就能接收焦点。Mask 属性确定 Text 属性值是否有效。

语法

[form.]MaskedEdit.AutoTab[ = {True | False}]

说明

把所有用 Mask 属性定义的字符都输入到控件中，而这些字符都是有效的，同时 AutoTab 属性的设置值为 True，只有在此时，才产生自动 Tab 键次序。

设置值 | 描述
False | （缺省）AutoTab 没有打开。当输入的字符超过输入掩码中定义的字符时就会产生 ValidationError 事件。
True | AutoTab 打开。当把输入掩码所定义的所有字符全部输入之后，焦点将转移到 tab 键次序中的下一控件，以后输入的字符就都由下一控件来处理。

向控件输入最后一个有效字符后，不论该字符处于输入掩码的哪个位置，都认为 Masked Edit 控件已经填满了数据。如果 Mask 属性设置成空字符串 ("")，则 AutoTab 属性没有任何作用。

数据类型

Integer (Boolean)


ClipMode 属性

在执行剪贴或复制命令时，确定输入掩码中是包含还是排除原义字符。

语法

[form.]MaskedEdit.ClipMode [ = setting%]

说明

下表列出 ClipMode 属性对 Masked Edit 控件的设置值。

设置值 | 描述
mskIncludeLiterals (0) | （缺省）在执行剪贴或复制操作时包含原义字符。
mskIncludeLiterals (1) | 在执行剪贴或复制操作时排除原义字符。

如果 Mask 属性被设置为空字符串 ("")，则 ClipMode 属性没有任何作用。

数据类型

Integer (Enumerated)


ClipText 属性

排除输入掩码中的原义字符，将文本返回到 Masked Edit 控件中。该属性不能在设计时使用，并且在运行时是只读的。

语法

[form.]MaskedEdit.ClipText

说明

当 Mask 属性被设置成空字符串 ("") 时，该属性与 SelText 属性的操作方式相同。

数据类型

String


Format 属性（Masked Edit 控件）

为显示和打印数字、数据、次数以及文本而指定格式。

语法

[form.]MaskedEdit.Format [ = posformat$; negformat$; zeroformat$; nullformat$]

参数 | 描述
posformat$ | 此表达式用来显示正值。
negformat$ | 此表达式用来显示负值。
zeroformat$ | 此表达式用来显示零值。
nullformat$ | 此表达式用来显示 null 值或空值。

说明

Format 属性定义格式表达式，该表达式用来显示控件的内容。象 Visual Basic Format 函数那样定义的格式表达式都可使用，但也有例外，即不能使用命名的格式 ("On/Off")。

该属性可有一至四个参数，参数之间用分号隔开。如果有一个参数未被指定，则使用由第一个参数指定的格式。如果多个参数同时出现，则必须使用分隔符。例如，为了指定 posformat$ 和 nullformat$，使用以下语法

[form.]MaskedEdit.Format = posformat$;;; nullformat$

下表给出一些标准格式的示例，这些格式可能会用到。

数据类型 | 值 | 描述
Number | （缺省）空字符串 | 通用数值型格式。输入时的显示格式。
Number | $#,##0.00;($#,##0.00) | 货币格式。用千位分隔符；显示括号中的负数。
Number | 0 | 固定数字格式。至少显示一位数字。
Number | #,##0 | 逗号格式。用逗号作为千位分割符。
Number | 0% | 百分号格式。将数值乘以 100，再追加一个百分号。
Number | 0.00E+00 | 科学型格式。使用标准科学记数法。
Date/Time | （缺省） | 通用日期与时间格式。显示日期或时间，或两者一起显示。
Date/Time | dddddd | 长日期格式。Microsoft Windows 控制面板的区域部件中，有与此相同格式的长日期设置。例如：Tuesday, May 26, 1992。
Date/Time | dd-mmm-yy | 中间日期格式。例如：26-May-92。
Date/Time | ddddd | 短日期格式。Microsoft Windows 控制面板的区域部件中，有与此相同格式的短日期设置。例如：5/26/92。
Date/Time | ttttt | 长时间格式。Microsoft Windows 控制面板的区域部件中，有与此相同格式的时间设置。例如：05:36:17 A.M。
Date/Time | hh:mm AM/PM | 中间时间格式。例如：05:36 A.M。
Date/Time | hh:mm | 短时间格式。例如：05:36。

数据类型

String


FormattedText 属性

当 Masked Edit 控件无焦点时，FormattedText 属性返回控件中所显示的字符串。该属性不能在设计时使用，而在运行时是只读的。

语法

[form.]MaskedEdit.FormattedText

说明

如果 Format 属性等于空字符串，那么它等同于 Text 属性，两者只有一点不同：Format 属性是只读的。如果将 HideSelection 属性设置为 False，那么控件在失去焦点时不显示已设置格式的文本。但，仍可通过该属性使用设置格式的文本。

数据类型

String


Mask 属性

确定控件的输入掩码。

语法

[form.]MaskedEdit.Mask [ = string$]

说明

无论在设计时还是运行时都可以定义输入掩码。但是，以下列举的是在设计时使用的标准输入掩码示例。控件可以判定数字和字母字符的有效性，但是不能检查内容的有效性，例如某一天的时间或所在月份。

掩码 | 描述
Null String | （缺省）没有定义掩码。等同于标准文本框。
##-???-## | 中间日期 (US)。例如：20-May-92
##-##-## | 短日期 (US)。例如：05-20-92
##:## ?? | 中间时间。例如：05:36 AM
##:## | 短时间。例如：17:23

输入掩码可包含以下字符。

掩码字符 | 描述
# | 数字位置。
. | 小数点位置。实际使用的字符就是在区域设置中指定的小数点定位符。该字符是用于掩码的原义字符。
, | 千分号。实际使用的字符就是在区域设置中指定的小数点定位符。该字符是用于掩码的原义字符。
: | 时间分隔符。实际使用的字符就是在区域设置中指定的小数点定位符。该字符是用于掩码的原义字符。
/ | 日期分隔符。实际使用的字符就是在区域设置中指定的小数点定位符。该字符是用于掩码的原义字符。
\ | 视掩码字符串中的下一字符为原义字符。这就允许掩码中包含 '#', '&', 'A', 以及 '?' 字符。该字符是用于掩码的原义字符。
& | 字符占位符。占位符的有效值是 32-126 以及 128-255 之间的字符。
> | 将其后所有字母转换成大写。
< | 将其后所有字母转换成小写。
A | 数字或字母占位符（需要的输入）。例如：a - z， A - Z，或 0 - 9。
a | 数字或字母占位符。（可选的输入）。
9 | 数字占位符。（可选的输入）。例如：0- 9。
C | 字符或空格占位符。（可选的输入）。此操作与 & 占位符完全相同，并且与 Microsoft Access 兼容。
? | 字母占位符。例如：a - z 或 A- Z.
Literal | 其它所有符号都作为用原义字符来显示；也就是说，用和它们自身相同的形式显示。

当 Mask 属性值是空字符串时，控件的状态很象一个标准文本框。在定义输入掩码时，掩码中的每个占位符下都有一条下划线。用字符替换占位符时，字符的类型必须和输入掩码中的指定类型相同。如果输入无效字符，则被屏蔽的编辑控件拒绝接受字符，并产生 ValidationError 事件。

注意 为 Masked Edit 控件定义了输入掩码并按 tab 键到另一控件，这时，如果 Masked Edit 控件中含有无效字符，则产生 ValidationErrorl 事件。

数据类型

String


MaxLength 属性

设置或返回 Masked Edit 控件的最大长度。

语法

[form.]MaskedEdit.MaxLength [ = setting%]

说明

Masked Edit 控件的最大长度是 64 个字符（Maxlenth 属性的有效值范围是 1 到 64）。输入掩码的缺省长度是 64 个字符，其中包括原义字符。

如果用户输入的字符数超过了指定的最大长度，控件会发出“哔”声以示警告。

数据类型

Integer


PromptChar 属性

设置或返回字符，用来提示用户输入。

语法

[form.]MaskedEdit.PromptChar [ = char$]

说明

该属性的缺省字符值是下划线字符 "_"。PromptChar 属性只能被设置成一个字符。

用 PromptInclude 属性来说明提示字符是否包含在 Text 属性中。

用 AllowPrompt 属性来测试提示字符是不是用户输入的。

数据类型

String


PromptInclude 属性

说明 Text 属性值中是否包含提示字符。用 PromptChar 属性改变提示字符的值。

语法

[form.]MaskedEdit.PromptInclude [ = { True | False }]

说明

下表列出 Masked Edit 控件的 PromptInclude 属性的设置值。

设置值 | 描述
False | Text 属性值不包含任何提示字符。
True | （缺省）Text 属性值包含提示字符，如果提示字符存在的话。

如果 Masked Edit 控件被限定为一个数据控件，则 PromptInclude 属性影响数据控件读取 Text 属性的方式。如果 PromptInclude 为 False，则数据控件将忽略 Text 属性中的任何原义字符和提示字符。按照这种模式，数据控件从 Masked Edit 控件中恢复的值等价于 ClipText 属性值。

如果 PromptInclude 为 True，则数据控件把 Text 属性值当作数据值一样存储。

数据类型

Integer (Boolean)


SelText 属性（Masked Edit 控件）

设置或返回包含在控件中的文本。

语法

[form.]MaskedEdit.SelText[ = string$]

说明

如果没有为 Masked Edit 控件定义输入掩码，则 SelText 属性的状态类似于 Text Box 控件的标准 SelText 属性。

如果在 Masked Edit 控件中定义了输入掩码并选定了文本，则 SelText 属性返回一个文本串。是否返回选定文本的全部字符，这要视 ClipMode 属性值而定。如果 ClipMode 是打开的，则返回的字符串中不包含原义字符。

在设置 SelText 属性时，Masked Edit 控件中的文本就象是从剪贴板上粘贴过来的一样。这意味着在 string$ 中，每个输入到控件的字符都好象是由用户键入的。

数据类型

String


Text 属性（MaskedEdit 控件）

设置或返回包含在控件中的文本。该属性不能在设计时使用。

语法

[form.]MaskedEdit.Text[ = string$]

说明

该属性设置和检索 Masked Edit 控件中的文本，包括原义字符和下划线，它们都是输入掩码的一部分。设置 Text 属性时，string$ 的值必须完全与输入掩码中的字符相匹配，这些字符也包括原义字符和下划线。

注意 ClipMode 属性的设置对 Text 属性值没有影响。

SelText 属性提供了在 Masked Edit 控件中设置文本的简易方法。

数据类型

Variant