以下屬性控制欄位在資料感知元件中的顯示行為,非所有欄位型別皆擁有全部屬性(如 TStringField 無 Currency/MaxValue/DisplayFormat;TFloatField 無 Size)。
| 屬性 | 功能 | 備註 |
|---|---|---|
Alignment | 對齊:左/中/右 | taLeftJustify/taCenter/taRightJustify |
Calculated | 是否計算欄位 | True 表值由 OnCalcFields 產生 |
Currency | 數值以貨幣格式顯示 | 數值型欄位專用 |
DisplayFormat | 瀏覽模式顯示格式 | 如 '#,##0.00'、'0.00%' |
DisplayLabel | 網格標題 | 預設=FieldName |
DisplayWidth | 網格欄寬(字元數) | — |
EditFormat | 編輯模式輸入格式 | 與 DisplayFormat 常配合 |
EditMask | 編輯輸入遮罩/過濾 | 雙擊屬性可開啟 Input Mask Editor |
FieldName | 對應實體欄位名 | — |
Index | 欄位在資料集中順序 | 0 起 |
MaxValue/MinValue | 允許輸入最大/最小值 | 數值型驗證用 |
Name | 元件名稱 | 慣例:TableName+FieldName |
ReadOnly | 禁止編輯 | True/False |
Size | 欄位大小(字元數) | 字串型專用 |
Visible | 是否在 DBGrid 顯示 | True/False |
選取 Table1Phone → 雙擊 EditMask 開啟 Input Mask Editor,選擇/自訂格式(如 '(###) #######'),TestInput 即時驗證。TStringField 無 DisplayFormat 時可用 EditMask 兼顧顯示格式。
| 例程 | 適用欄位型別 |
|---|---|
FormatFloat | TFloatField、TCurrencyField |
FormatDateTime | TDateField、TTimeField、TDateTimeField |
FormatInteger | TIntegerField、TSmallIntField、TWordField |
亦可自訂 DisplayFormat/EditFormat 或撰寫 OnGetText/OnSetText 事件達到同樣效果。
| 事件 | 觸發時機 |
|---|---|
OnChange | 欄位值改變時 |
OnGetText | 取得顯示文字時(可自訂格式化) |
OnSetText | 設定欄位值時(可自訂解析) |
OnValidate | 修改/插入值前驗證 |
表列出各欄位型別支援的 AsXxx 轉換(「不允許」表執行期會報錯)。
| 欄位型別 | AsString | AsInteger | AsFloat | AsDateTime | AsBoolean |
|---|---|---|---|---|---|
TStringField | ✓ | 可轉則轉 | 可轉則轉 | 可轉則轉 | 可轉則轉 |
TIntegerFieldTSmallIntFieldTWordField | ✓ | ✓ | ✓ | ✗ | ✗ |
TFloatFieldTCurrencyFieldTBCDField | ✓ | 四捨五入 | ✓ | ✗ | ✗ |
TDateFieldTDateTimeFieldTTimeField | ✓ | ✗ | 浮點數 | ✓ | ✗ |
TBooleanField | 'True'/'False' | ✗ | ✗ | ✗ | ✓ |
TBytesFieldTVarBytesFieldTBlobFieldTMemoFieldTGraphicField | 二進位字串 | ✗ | ✗ | ✗ | ✗ |
// 欄位 → 介面
Edit1.Text := TableMyField.AsString;
// 介面 → 欄位(自動解析轉型)
TableMyField.AsString := Edit1.Text;
AsXxx 可用於任何運算式兩側,極大簡化型別處理。