Textbox 的自动完成(Auto Completion)功能
张洪举(
http://www.vfptop.com) Microsoft Visual FoxPro MVP
概述
在即将发布的VFP9.0(公测Beta版可以从
http://msdn.microsoft.com/vfoxpro/下载)中,为Textbox控件增加了类似IE浏览器的“自动完成”(AutoCompletion)功能。在IE浏览器的地址栏中,用户输入一个链接地址,会显示一个与之相匹配的所有地址列表,同样,在网页中的某些文本框中,也会保留用户最近输入过的词条列表,如http://mail.163.com的“用户名”文本框,如图1所示。VFP9将使用数据表来提供“自动完成”支持,所以FoxPro程序员可以很容易地修改其中的内容,该功能可以提供一个类似组合框功能的支持。

图1 IE浏览器中文本框的下拉列表
解决方案
键盘、鼠标、笔在文本框中的触发动作方式
• 重要事项:当从文本框的下拉列表中选择项目后,则整个文本框中的内容会被该项目内容替换,即使先前在文本框中输入了内容。
• 当用户使用鼠标或笔在文本框中第一次单击时,将自动显示一个可用选择的下拉列表,用户然后可以移动鼠标到列表项上进行选择,选择后,该列表项将自动插入到文本框中。
• 如果用户通过键盘定位到文本框,只到在文本框中输入一个字符时,才自动显示下拉列表,空格键将触发整个列表。注意:列表的大小(可见显示限制)在Options对话框的View选项卡中设置。
• 当下拉列表第一次显示时,下拉列表的内容根据用户输入的内容进行筛选,在下拉列表中仅显示包含用户所输入内容的列表项,如果没有列表项可匹配,将隐藏下拉列表。当按下了退格(backspace)或删除(delete)键,下拉列表会根据匹配结果重新调整下拉列表的大小。注意:用户在文本框中输入时,不会自动选择下拉列表中的项目,如果要选择项目,可以使用上/下箭头、上翻(PageUp)、下翻(PageDown)键或鼠标来完成操作。
• 如果用户按下了回车(Enter)或Tab键,则在下拉列表中选定项目的内容会自动插入到文本框中。注意:如果用户已经在文本框中输入有空格,则会首先剪裁掉这些前导空格。
• 当列表项被选定并插入到文本框中时,将进行如下“自动完成”表更新:
o 如果是一个新项目,将增加一条新记录。
o 如果在表中已经存在该项目,将更新Updated、Count和Data 字段,并只存储文本的最近指定情况。
注意:如果第一次输入时指定的“自动完成”表不存在,将自动建立该表。
• 如果用户在已具有的文本的文本框中重新输入,将在下