1、 文本框自动完成
你是否曾梦想过给文本框添加一种看起来更流行的“输入常用的单词或短语就出现一个下拉列表”的外观?通过使用 VFP 智能感知的核心引擎,VFP 开发组给了我们这样一种很酷的新功能,并且不但令人惊讶的易于使用,而且完全可以扩充。 让我们来尝试一下,将一个文本框拖放到表单上(或者打开一个有文本框的任何一个表单),将文本框新的 AutoComplete 属性设置为一个非零值,这样就搞定了!运行几次这个表单,在文本框里输入一些内容,然后就看魔术表演吧!你也可以用下面这样的代码来让表格中的文本框支持 AutoComplete: THISFORM.Grid1.Column1.Text1.AutoComplete = 1 AutoComplete 属性控制着自动完成的行为表现,可用的值如下:
※ 0 —— 不使用自动完成;
※ 1 —— 按字母顺序;
※ 2 —— 最常用的;
※ 3 —— 最近使用的;
※ 4 —— 用户自定义的加权排序(Weighted Order);
这些选项中的最后一个需要特别注意一下。当 AutoComplete 的值在 1-3 之间的时候,自动完成的功能是系统自维护的,而用户自定义加权排序的值4则让你可以通过给 AutoComp.DBF 表中的 Weight 字段赋以一个数值型值来指定各个数据项的显示顺序(最大的 Weight值显示在下拉列表的顶部)。 默认的 AutoComp.DBF 表位于 HOME(7) 目录下(译者注:使用参数7,该函数返回用户应用程序的数据目录。),但你可以通过在全局的层次上设置 _SCREEN.AutoCompTable、或者在单个文本框的层次上设置 Text1.AutoCompTable来覆盖默认的设置。不管你在哪个属性中指定一个表,如果这个表不存在,则系统会自动为你新建一个。你可以同时拥有多个AutoComp表,而每个表也可以服务于一个或多个文本框,VFP会管理这些在一个隐藏的数据工作期内的表的打开和关闭。 在 AutoComp 表中,除非你给文本框设置了 AutoCompSource 属性,否则这个文本框的 Name 将作为决定显示哪些数据项的查询关键字,反之,则使用 AutoCompSource 属性指定的值。要想让多个文本框共享自动完成提供的值的话,只要简单的把这些文本框的 AutoCompSouce 属性设置为相同的值就可以里,例如设置为 NameAutoComp或者Cities。 通过在运行时将 AutoCompSource 动态的设置为一个代表某个用户的特定代码的字符串、或者在属性表中设置如下的代码,你甚至可以为你所在组织中的每个人启用独特的自动完成列表: = "Custs_" + LoginName 不过,如果采用了这种办法,你需要注意的是在 AutoComp 表中作为搜索关键字的 Source 字段只有 20个字符大小。当然,你可以自己建一个有着更大长度的 Source 字段的表作为 AutoComp 表,可是如果在为一个特定的文本框初次使用AutoComplete功能的时候你让 VFP 自动为你建立这个表,那么这个表中的 Source 字段的长度默认就是 20个字符。 要在测试的时候看看 AutoComp 表中发生了什么事情,你可以从 VFP 的另一个数据工作期内共享打开这个表来浏览它的内容,或者也可以在命令窗口中执行如下代码:
USE HOME(7) + "autocomp.dbf" SHARED IN 0
SELECT autocomp
BROWSE