Delphi 中的字段對象(TField 衍生類別)雖在設計與執行期皆不可見,但擁有完整的屬性、方法與事件,是資料呈現與操作的核心中介。依建立時機分為動態欄位與永久欄位,存取方式截然不同。
動態欄位隨資料集開啟自動產生,對應資料表每一欄,存放於 Fields 陣列屬性(索引從 0 起)。
Table1.Fields[0].DisplayLabel := '客戶編號'; // 第一欄
FieldByName 名稱存取(語意清晰、易維護)Table1.FieldByName('Company').DisplayLabel := '公司名稱';
經 Fields Editor 建立的永久欄位,會自動加入表單類別宣告,命名慣例為 資料集名稱+欄位名稱(如 Table1CustNo),可直接引用:
Table1CustNo.DisplayLabel := '客戶編號';
Table1CustNo.DisplayWidth := 12;
Value 屬性回傳欄位原始值,但型別必須相容才能直接指派。若型別不符,需透過轉換屬性:
| 目標型別 | 轉換屬性 | 適用欄位類型 |
|---|---|---|
| String | AsString | 所有類型 |
| Integer | AsInteger | 數值、布林 |
| Float | AsFloat | 數值、貨幣 |
| DateTime | AsDateTime | 日期、時間 |
| Boolean | AsBoolean | 布林、字串 |
var
CustNoDouble: Double;
CustNoInt: Integer;
CustNoStr: string;
begin
// 字串欄位直指
Edit1.Text := Table1Company.Value; // TStringField → string ✓
// 數值欄位需轉型
Edit1.Text := Table1CustNo.AsString; // TFloatField → string ✓
// Edit1.Text := Table1CustNo.Value; // ✗ 執行期錯誤:型別不符
// 指派給變數
CustNoDouble := Table1CustNo.Value; // Double ← Float ✓
CustNoInt := Table1CustNo.AsInteger; // Integer ← Float ✓
CustNoStr := Table1CustNo.AsString; // String ← Float ✓
end;
關鍵提醒:AsString 是最通用的橋樑,幾乎所有欄位型別皆支援轉為字串,是介面顯示的首選;寫入時亦可用 Table1CustNo.AsString := Edit1.Text 由元件內部解析。