欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Textbox 的自動完成(Auto Completion)功能

系統 1810 0

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 字段,并只存儲文本的最近指定情況。
注意:如果第一次輸入時指定的“自動完成”表不存在,將自動建立該表。
? 如果用戶在已具有的文本的文本框中重新輸入,將在下拉列表中顯示精確匹配的項目以及在精確匹配文本之外包含有其他附加文本的項目。
? 文本的顯示和內容區分大小寫,因此,在“自動完成”表中只存儲文本項目的一個實例,也就是存儲最近輸入的實例。例如,如果Hong Ju已經存儲在“自動完成”表中,這時用戶又輸入了HONG JU,則將用HONG JU替換掉原來的Hong Ju,使用這種方法可以只顯示最近的版本。此外,在保存時也會刪除掉文本頭尾的多余空格。
? 下拉列表中的項目可以從列表中刪除掉。方法是在下拉列表打開時,選定要刪除的列表項并按Delete鍵,這時會為該記錄添加刪除標記,并且不會提示警告信息。當項目被刪除時,只影響下拉列表的內容,而不會更新被編輯的實際字段。

AutoComp表

用于自動完成的數據默認存儲在AutoComp.DBF表中,該表的結構如下:
字段名稱字段類型說明
Source C (20)自動完成控件的源名稱
DataC (254)在控件中顯示的數據
CountI項目被選擇的次數
WeightI這是用于用戶自定義的字段
CreatedT日期時間字段,是第一次建立時的唯一時間戳
UpdatedT日期時間字段,是最近更新時的唯一時間戳
UserM用戶字段
“自動完成”表被文本框的AutoCompSource屬性引用,因此,每個文本框可以具有自己的“自動完成”表。當一個文本框被允許使用“自動完成”功能,將按照下列方式處理 “自動完成”表:
? 如果指定的“自動完成”表不存在,系統將自動建立,存在則自動打開表。
? 缺省情況下,如果沒有指定目錄,VFP使用HOME(7)位置存儲“自動完成”表。如果要控制用于所有程序的全局設置,可以使用新增的_SCREEN.AutoCompSource屬性指定一個表。注意:Textbox.AutoCompSource屬性會優先執行。
? 如果Textbox.AutoCompSource屬性不為空,將為“自動完成”使用該屬性指定的表(如果不存在則自動建立);如果Textbox.AutoCompSource屬性為空,則檢測_SCREEN.AutoCompSource屬性并作為源表;如果Textbox和_SCREEN的AutoCompSource屬性都為空,則使用默認的HOME(7)位置和Autocomp.DBF表。
? 在運行時,可以動態改變AutoCompSource屬性。
? 每次激活/禁止“自動完成”菜單,將打開/關閉“自動完成”表一次,了解這一點是十分重要的,因為這可以讓你知道在如KeyPress等事件中如何書寫代碼來訪問“自動完成”表。
? “自動完成”表以共享模式打開,這允許其他用戶也可以以共享模式打開該表。
? 如果指定的表存在,但是不能打開,文本框將不支持自動完成功能,并且不產生錯誤。
? 每當一個新“自動完成”表被創建,也將創建相應的索引來提高數據訪問性能,索引標識基于下列表達式:
SOURCE+UPPER(LEFT(DATA,30))+PADL(COUNT,8)

AutoCompTable屬性

指定“自動完成”表的名稱和位置,存儲用于文本框的數據。
語法:
Textbox.AutoCompTable [ = String Value]
屬性詳述:
在設計和運行時可讀寫。
應用于:Textbox, _SCREEN
說明: 為“自動完成”數據指定源表名稱。
注釋:
? 如果沒有指定位置和名稱,則默認位置和名稱是:HOME(7) + “Autocomp.DBF”。
? 參考上面“AutoComp表”部分的表規則和操作觸發方式。
示例:
AddressForm.Text1.AutoCompTable = 'c:\myApp\AutoComp.DBF'
AutoCompSource屬性
指定用于在“自動完成“表中查找數據的源表名稱。
語法:
Textbox. AutoCompSource [ = String Value]
屬性詳述:
在設計和運行時可讀寫。
應用于:Textbox
說明: 指定源表名稱,用于查找“自動完成“數據。
注釋:
? 當詞條在“自動完成”表中被創建或訪問時,將使用一個主鍵(保存在Source字段中)。缺省情況下,如果該屬性沒有指定表,則使用文本框的名稱(如Text1)作為主鍵。
? 通過使用該屬性,可以在應用程序中共享這些“自動完成”列表信息。例如:可能許多表單中都有一個Address字段,通過為每個顯示Address字段的文本框設置AutoCompSource屬性到類似myAddress的表,這樣你的整個程序就可以重復使用這些相同的“自動完成”詞條。
示例:
AddressForm.AddressText1.AutoCompSource = 'myAddress'
AutoComplete屬性
該屬性指定是否在文本框中使用“自動完成”功能和“自動完成”的模式。使用“自動完成”功能時,根據輸入的詞條,將顯示一個與之匹配的最近輸入的詞條列表,如果選擇了其中的一個詞條,將使用該詞條自動填充文本框內容,這很類似IntelliSense。
語法:
Textbox.AutoComplete [ = Value]
字段名稱字段類型說明
Source C (20) 自動完成控件的源名稱
Data C (254) 在控件中顯示的數據
Count I 項目被選擇的次數
Weight I 這是用于用戶自定義的字段
Created T 日期時間字段,是第一次建立時的唯一時間戳
UpdatedT 日期時間字段,是最近更新時的唯一時間戳
User M 用戶字段
屬性詳述:
在設計和運行時可讀寫。
應用于:Textbox
說明: 指定自動完成的模式。
注釋:
? 值1用于指定按字母順序排序,不區分大小寫。
? 值2指定按最常使用排序,VFP首先基于Count字段,然后基于Updated字段顯示“自動完成”詞條。.
? 值3指定按最近使用排序,VFP基于Updated 字段顯示“自動完成”詞條。
? 值4是按用戶指定的順序排序。在AutoComp表中包含一個特定的Weight字段,所以用戶可以按照自己的算法來指定如何顯示列表排序。如果有約束,則使用Updated字段排序(按最近使用排序)。
? 出現在“自動完成”下拉列表中的項目數目受Options對話框View選項卡中的List Display Count(列表顯示數目)設置控制。

示例

下面的示例程序在表單中建立了兩個Textbox對象,其中Text1沒有指定“自動完成”表的位置和名稱,所以將默認使用HOME(7)下的AutoComp.DBF表來存儲數據,而Text2指定了tblAddress作為“自動完成”表名稱,由于該表并不存在,在運行該程序時,會在當前目錄下自動創建該表。
      PUBLIC oform1
oform1=NEWOBJECT("form1")
oform1.Show
RETURN

DEFINE CLASS form1 AS form
    Top = 0
    Left = 0
    Height = 150
    Width = 352
    Caption = "Form1"
    Name = "form1"

    ADD OBJECT text1 AS textbox WITH ;    &&未指定“自動完成”表的位置和名稱
        Height = 22, ;
        Left = 66, ;
        Top = 36, ;
        Width = 111, ;
        AutoComplete = 1, ;
        Name = "Text1"

    ADD OBJECT text2 AS textbox WITH ;    &&指定了“自動完成”表,該表將保存在當前目錄下
        Height = 22, ;
        Left = 66, ;
        Top = 75, ;
        Width = 198, ;
        AutoComplete = 1, ;
        AutoCompSource = "", ;
        AutoCompTable = "tblAddress", ;
        Name = "Text2"

    ADD OBJECT label1 AS label WITH ;
        Caption = "姓名:", ;
        Height = 17, ;
        Left = 21, ;
        Top = 36, ;
        Width = 40, ;
        Name = "Label1"

    ADD OBJECT label2 AS label WITH ;
        Caption = "地址:", ;
        Height = 17, ;
        Left = 21, ;
        Top = 75, ;
        Width = 40, ;
        Name = "Label2"
ENDDEFINE

    
執行上面的代碼,在表單的文本框中輸入詞條,效果如圖2所示。
圖2 “自動完成”運行效果
這時,可以使用USE命令打開tblAddress表查看一下其中的內容,如圖3所示。其中,TEXT2是文本框的對象名稱;第5條記錄(山東煙臺)的Count字段值為2,表示被選擇了2次;第3條記錄被添加了刪除標記,是在下拉列表中選中項目后按下Delete鍵后的結果。
圖3 tblAddress表中保存的內容

Textbox 的自動完成(Auto Completion)功能


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 日韩欧美国产网站 | 成人高清视频免费观看 | 国产理论自拍 | 999久久久免费视频 国产精品国产 | 国产午夜视频在线 | 久久亚洲国产精品五月天婷 | 成人在线一区二区三区 | 久久精品一 | 欧美一级欧美一级高清 | 在线观看www| 欧美a级v片不卡在线观看 | 欧美va在线观看 | 亚洲精品久久午夜无码一区二区 | 日韩在线欧美 | 奇米色吧| 国产一级特黄aa大片免费 | 素人视频免费观看 | 国产精品视频网 | 久草小视频 | 毛片成人永久免费视频 | 亚洲三区视频 | 国产美女www | 性夜影院爽黄a爽免费视 | 国产女主播喷出白浆视频 | 老色鬼a∨在线视频在线观看 | 青娱乐免费| 小明永久免费 | 一级特黄aaa免费 | 亚洲欧美成人中文在线网站 | 国产人成激情视频在线观看 | 奇米影音先锋 | 日本在线观看中文字幕 | 射综合网 | 成人一区二区在线 | 亚洲精品国产综合一线久久 | 色播基地 | www.国产一区 | 成年人小视频网站 | 国产精品久久久久久搜索 | 久久精品视频一区二区 | 日韩欧美一区二区三区四区 |