1、 文本框自動完成
你是否曾夢想過給文本框添加一種看起來更流行的“輸入常用的單詞或短語就出現(xiàn)一個下拉列表”的外觀?通過使用 VFP 智能感知的核心引擎,VFP 開發(fā)組給了我們這樣一種很酷的新功能,并且不但令人驚訝的易于使用,而且完全可以擴充。 讓我們來嘗試一下,將一個文本框拖放到表單上(或者打開一個有文本框的任何一個表單),將文本框新的 AutoComplete 屬性設(shè)置為一個非零值,這樣就搞定了!運行幾次這個表單,在文本框里輸入一些內(nèi)容,然后就看魔術(shù)表演吧!你也可以用下面這樣的代碼來讓表格中的文本框支持 AutoComplete: THISFORM.Grid1.Column1.Text1.AutoComplete = 1 AutoComplete 屬性控制著自動完成的行為表現(xiàn),可用的值如下:
※ 0 —— 不使用自動完成;
※ 1 —— 按字母順序;
※ 2 —— 最常用的;
※ 3 —— 最近使用的;
※ 4 —— 用戶自定義的加權(quán)排序(Weighted Order);
這些選項中的最后一個需要特別注意一下。當(dāng) AutoComplete 的值在 1-3 之間的時候,自動完成的功能是系統(tǒng)自維護的,而用戶自定義加權(quán)排序的值4則讓你可以通過給 AutoComp.DBF 表中的 Weight 字段賦以一個數(shù)值型值來指定各個數(shù)據(jù)項的顯示順序(最大的 Weight值顯示在下拉列表的頂部)。 默認的 AutoComp.DBF 表位于 HOME(7) 目錄下(譯者注:使用參數(shù)7,該函數(shù)返回用戶應(yīng)用程序的數(shù)據(jù)目錄。),但你可以通過在全局的層次上設(shè)置 _SCREEN.AutoCompTable、或者在單個文本框的層次上設(shè)置 Text1.AutoCompTable來覆蓋默認的設(shè)置。不管你在哪個屬性中指定一個表,如果這個表不存在,則系統(tǒng)會自動為你新建一個。你可以同時擁有多個AutoComp表,而每個表也可以服務(wù)于一個或多個文本框,VFP會管理這些在一個隱藏的數(shù)據(jù)工作期內(nèi)的表的打開和關(guān)閉。 在 AutoComp 表中,除非你給文本框設(shè)置了 AutoCompSource 屬性,否則這個文本框的 Name 將作為決定顯示哪些數(shù)據(jù)項的查詢關(guān)鍵字,反之,則使用 AutoCompSource 屬性指定的值。要想讓多個文本框共享自動完成提供的值的話,只要簡單的把這些文本框的 AutoCompSouce 屬性設(shè)置為相同的值就可以里,例如設(shè)置為 NameAutoComp或者Cities。 通過在運行時將 AutoCompSource 動態(tài)的設(shè)置為一個代表某個用戶的特定代碼的字符串、或者在屬性表中設(shè)置如下的代碼,你甚至可以為你所在組織中的每個人啟用獨特的自動完成列表: = "Custs_" + LoginName 不過,如果采用了這種辦法,你需要注意的是在 AutoComp 表中作為搜索關(guān)鍵字的 Source 字段只有 20個字符大小。當(dāng)然,你可以自己建一個有著更大長度的 Source 字段的表作為 AutoComp 表,可是如果在為一個特定的文本框初次使用AutoComplete功能的時候你讓 VFP 自動為你建立這個表,那么這個表中的 Source 字段的長度默認就是 20個字符。 要在測試的時候看看 AutoComp 表中發(fā)生了什么事情,你可以從 VFP 的另一個數(shù)據(jù)工作期內(nèi)共享打開這個表來瀏覽它的內(nèi)容,或者也可以在命令窗口中執(zhí)行如下代碼:
USE HOME(7) + "autocomp.dbf" SHARED IN 0
SELECT autocomp
BROWSE