在 Delphi 資料庫應用開發中,字段對象的顯示格式既可在設計階段透過物件檢查器設定,也能在執行期以程式碼動態調整。這種彈性讓開發者能根據不同業務場景呈現最適合的資料外觀。
以 TaxRate 欄位為例,若資料庫儲存的值為 0.085,將其 DisplayFormat 屬性設為 0.00%,資料網格便會自動顯示為 8.50%,無需額外轉換邏輯。
不同國家的電話號碼格式差異極大(如美式 808-555-0269、中式 (808) 5550269)。透過 OnGetText 事件,我們可攔截欄位輸出並重組格式:
procedure TForm1.Table1PhoneGetText(Sender: TField; Text: string; DisplayText: Boolean);
begin
if DisplayText then
begin
Text := Table1Phone.Value;
Delete(Text, 4, 1); // 移除第 4 字元 '-'
Delete(Text, 7, 1); // 移除原第 7 字元 '-'
Insert('(', Text, 1); // 第 1 位插入 '('
Insert(')', Text, 5); // 第 5 位插入 ')'
end;
end;
此技巧同樣適用於日期、貨幣、自訂編碼等多樣化格式需求。
實務上常需顯示資料表中不存在的衍生欄位(如「餘額 = 訂單總額 - 已付金額」),此時便需建立計算欄位。
Table1 開啟 Fields EditorCurrencyField,名稱輸入 BalanceTable1Balance.Calculated := TrueTable1.OnCalcFields 事件撰寫:procedure TForm1.Table1OnCalcFields(DataSet: TDataSet);
begin
Table1Balance.Value := Table1ItemsTotal.Value - Table1AmountPaid.Value;
end;
執行時,Balance 會即時反映每筆記錄的最新餘額,且不佔用實體儲存空間。
面對海量資料,高效查詢是核心需求。Paradox/dBASE 資料表僅支援關鍵欄位或輔助索引作為查詢依據。
| 方法 | 特點 | 適用場景 |
|---|---|---|
GotoKey | 需先 SetKey 再指定值,回傳 Boolean 指示成敗 | 精確比對、多欄位組合鍵 |
FindKey | 單行完成「設狀態+指定值+查詢」,參數為陣列 | 簡單單鍵查詢、程式碼簡潔 |
兩者核心邏輯一致:在指定索引欄位中尋找目標值,找到則記錄指標定位該筆,否則維持原位。GotoNearest/FindNearest 則提供模糊最近比對,適合「輸入前綴自動補全」類介面。