首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

Delphi DBEdit 元件完整指南:資料綁定、屬性設定與事件處理

     編輯:Delphi

前言

TDBEdit 是 Delphi「Data Controls」頁面核心資料感知編輯元件,用於顯示與編輯資料集當前記錄的指定欄位值。本文系統整理其關鍵屬性、方法與實務應用技巧。

核心屬性詳解

屬性用途關鍵說明
DataSource 指定資料來源 連結 TDataSource 元件,橋接資料集與 UI。必須先設定此屬性,DataField 才能列出可用欄位。
DataField 指定綁定欄位 下拉選單顯示 DataSource.DataSet 的所有欄位名稱。設定後,元件自動顯示當前記錄該欄位值。
Enabled 啟用/停用元件 True:可編輯、可聚焦;False:灰色顯示,禁止輸入與聚焦。常配合資料集狀態動態切換。
ReadOnly 唯讀模式 True:僅顯示不可修改(但可複製、聚焦);False:可編輯。預設 False。適合顯示主鍵、自動產生欄位。

提示:上述四個屬性幾乎是所有資料感知元件(DBGrid、DBMemo、DBComboBox 等)的共同基礎屬性,掌握即可觸類旁通。

主要事件處理

以下事件繼承自 TCustomEdit,但在資料綁定情境下語義略有不同:

事件觸發時機實務應用建議
OnChange編輯內容變更時即時驗證、啟用「儲存」按鈕、計算衍生欄位。注意:程式修改 Field.Value 也會觸發。
OnClick / OnDblClick滑鼠單擊/雙擊雙擊可彈出選單、日曆或查詢視窗輔助輸入。
OnKeyDown / OnKeyUp鍵盤按下/釋放攔截 Enter 跳至下一欄、Esc 取消編輯、F3 開啟查詢等熱鍵。
OnMouseDown / OnMouseUp滑鼠按鍵按下/釋放實作拖放、右鍵選單顯示座標計算等進階互動。

實務進階技巧

1. 動態切換唯讀狀態

procedure TForm1.DataSource1StateChange(Sender: TObject);
begin
  DBEdit1.ReadOnly := not (DataSource1.State in [dsEdit, dsInsert]);
  DBEdit1.Color := IfThen(DBEdit1.ReadOnly, clInfoBk, clWindow);
end;

2. 整合輸入驗證

procedure TForm1.DBEdit1KeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then begin // Enter 鍵
    Key := #0;
    SelectNext(ActiveControl, True, True); // 跳至下一控制項
  end;
  // 數字欄位限制輸入
  if (DBEdit1.DataField = 'Price') and not (Key in ['0'..'9', '.', #8]) then
    Key := #0;
end;

3. 顯示格式化(需搭配 TField.DisplayFormat)

// 在 Field 定義時或執行期設定
ADOQuery1.FieldByName('Amount').DisplayFormat := '#,##0.00';
ADOQuery1.FieldByName('BirthDate').DisplayFormat := 'yyyy/mm/dd';

4. 客製化提示資訊

procedure TForm1.DBEdit1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
  if DBEdit1.DataSource.DataSet.Active then
    DBEdit1.Hint := '當前值:' + DBEdit1.Field.Text
  else
    DBEdit1.Hint := '資料集未開啟';
  DBEdit1.ShowHint := True;
end;

常見問題排查

  • 不顯示資料:檢查 DataSource.DataSet.Active = True、DataField 拼寫、欄位是否存在。
  • 無法編輯:確認 ReadOnly=False、Enabled=True、資料集處於 dsEdit/dsInsert 狀態、欄位非 pfInKey 且非唯讀。
  • 格式錯誤:TField.EditFormat 控制編輯模式顯示,DisplayFormat 控制瀏覽模式。

結語

TDBEdit 雖屬基礎元件,但搭配 TField 事件、資料集狀態機與驗證邏輯,能構建健壯的資料輸入介面。熟悉其屬性事件互動機制,是 Delphi 資料庫應用開發的必修課。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved