利用EditMask屬性為字段設定編輯模式:
為字段部件設置一定的EditMask屬性值,當編輯輸入該字段的字段值時,用戶只能根據EditMask設定的編輯模式進行編輯或輸入字段值。在為EditMask屬性設置屬性值時可以用手動方式也可以用輸入模式編輯器來完成,當為某字段部件設置EditMask屬性時,雙鼠標雙擊EditMask屬性便可以打開輸入模式編輯器(Input Mask Editor) 。例如在為Customer.DB表的Phone字段設定編輯模式時,首先在Object Inspector中選取與Phone字段對應的Table1Phone字段對象,然後雙擊EditMask屬性,打開輸入模式編輯器。
字段輸入模式編輯器
在字段輸入模式編輯中可以選擇一種輸入模式,而且在TestInput編輯框中輸入字段值進行檢驗。
因為TStringFIEld類型的字段部件沒有DisplayFormat屬性,但是可以把EditMask屬性當DisplayFormat屬性使用。
設定字段的顯示和編輯格式:
Delphi本身為某些類型的字段對象提供了設定其顯示和編輯格式的例程,並且為字段部件的DisplayFormat和EditFormat屬性指定了缺省值,例如對於與浮點型數值字段對應的TFloatFIEld類型的字段部件,而且該字段部件的Currency屬性設置為True 時,字段值1234.56的顯示格式為$1234.56,編輯格式是1234.56。表15.7是Delphi提供了設置字段顯示和編輯格式的例程。
表15.7 字段格式例程
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
例 程 名 運用的字段對象
─────────────────────────────
FormatFloat TFloatField,TCurrencyFIEld
FormatDateTime TDateField,TTimeField,TDateTimeFIEld
FormatInteger TIntegerField,TSmallIntFIEld,TWordFIEld
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
上述這些用於設定日期時間類型、數值型以及貨幣型字段的顯示和編輯格式的例程,都是按國際上通行格式來設定相應類型字段的格式的,用戶可以自己設置字段部件的DisplayFormat和EditFormat屬性,來設定適合自己使用的格式,還可以為有關字段對象的OnGetText和OnSetText事件編寫代碼來設定字段的顯示和編輯格式。
15.6.1.2 字段部件的事件及應用
字段部件常需處理的事件如表15.8所示
表15.8 字段部件的事件
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
事件名 用 途
────────────────────────────
OnChange 當字段部件的字段值發生改變時,觸發該事件
OnGetText 當字段部件獲得字段值時,觸發該事件
OnSetText 當字段部件被設置字段值時,觸發該事件
OnValidata 當字值被修改或插入新的字段值時,對字段值
進行有效性檢驗時,觸發該事件
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
用戶想自己設定字段的顯示和編輯格式時,可以編寫OnGetText事件和OnSetText事件的處理過程,以達到設定字段的顯示和編輯格式。
15.6.1.3 字段部件的類型轉換函數及使用
字段部件具有一些內部函數用於轉換字段值的類型,對於不同的字段類型,這些轉換函數的作用是不一樣的,表15.9概括了不同類型的字段及轉換函數的作用。
表15.9 字段部件的轉換函數
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
字段類型 AsString AsInteger AsFloat AsDatetime AsBoolean
────────────────────────────────────
TStringFIEld 轉換成 轉換成整數 若能轉換 日期 轉換成布型
Stringg型 (若能轉換) 則轉換成 (若能轉換)
────────────────────────────────────
TIntegerFIEld
TSmallFIEld 字符型 整數型 浮點型 不允許 不允許轉換
TWordFIEld
────────────────────────────────────
TFloatFIEld
TCurrencyFIEld 字符串型 捨入成整數 浮點型 不允許 不允許
TBCDFIEld
────────────────────────────────────
TDateFIEld
TDateTimeFIEld 字符串 不允許 浮點數 日期型 不允許
TTimeFIEld
────────────────────────────────────
TBooleanFIEld 轉換成Time 不允許 不允許 不允許 布爾型
或False
────────────────────────────────────
TBytesFIEld
TVarBytesFIEld 字符串 不允許 不允許 不允許 不允許
TBlobFIEld
────────────────────────────────────
TMemoFIEld 二進制 不允許 不允許 不允許 不允許
TGraphilFIEld 字段
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
上述這些轉換函數可以在任何與字段部件有關的表達式中使用,只要是表15.9中允許進行轉換的數據類型,這些轉換函數其實是當做字段部件的屬性來使用的,它們可以出現在賦值語句的兩邊。例如下面的程序代碼是將字段部件TableMyFIEld的字段值轉變成字符串類型的數據,並將它賦給編輯框Edit1的Text屬性:
Edit1.Text := TableMyFIEld.AsString;
而下面的代碼是進行相反的操作,它將編輯框部件Edit1的Text屬性值以字符串的形式賦給字段TableMyField,TableMyFIEld通過AsString接受字符串並將其轉變成自身的數據類型。
TableMyFIEld.AsString :=Edit1.Text;