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

Delphi TDataSource 元件詳解:屬性、事件與狀態驅動 UI 控制實戰

     編輯:Delphi

15.5 TDataSource:資料集與資料感知元件的橋樑

TDataSource 本身簡單輕量,屬性/事件/方法寥寥數個,却是連結 TTable/TQuery 與 DBGrid/DBEdit 等視覺元件的關鍵。若無資料感知元件,甚至不需放置。

15.5.1 核心屬性

屬性型別說明
DataSetTDataSet指定資料來源(Table/Query),可跨視窗指派:
DataSource1.DataSet := Form2.Table1;
EnabledBooleanFalse 切斷與資料集連線,所有關聯視覺元件變空白。
實務多用資料集的 DisableControls/EnableControls 批次控制。
AutoEditBooleanTrue:使用者在視覺元件輸入即自動進入編輯狀態;
False:需呼叫資料集 Edit 方法才能修改。

15.5.2 三大事件與實戰模式

OnDataChange:記錄指標移動同步

資料集指標變動(Next/Prior/Insert/Append 等)觸發。常用於多元件同步,如 Detail Grid 隨 Master 移動自動重查。

OnUpdateData:寫入前攔截

Post 呼叫後、資料真正寫回磁碟前觸發。非資料感知元件(如自訂編輯框)需在此同步資料集。

OnStateChange:狀態驅動 UI 啟用/禁用

資料集 State 屬性變化時觸發。State 值:dsInactive/dsBrowse/dsEdit/dsInsert/dsSetKey。

範例 1:狀態列顯示目前模式

procedure TForm1.DataSource1StateChange(Sender: TObject);
var S: string;
begin
  case Table1.State of
    dsInactive: S := 'Inactive';
    dsBrowse:   S := 'Browse';
    dsEdit:     S := 'Edit';
    dsInsert:   S := 'Insert';
    dsSetKey:   S := 'SetKey';
  end;
  Label1.Caption := S;
end;

範例 2:按鈕啟用邏輯綁定狀態

procedure TForm1.DataSource1StateChange(Sender: TObject);
begin
  InsertBtn.Enabled  := (Table1.State = dsBrowse);                    // 只在瀏覽態可新增
  CancelBtn.Enabled  := Table1.State in [dsInsert, dsEdit, dsSetKey]; // 編輯/新增/查找態可取消
end;

善用 OnStateChange 可讓 UI 即時反映資料操作狀態,避免使用者誤操作。

15.6 字段元件型別體系

字段元件類別對應資料型別範圍/備註
TStringField字串—
TSmallIntField短整數-32768~32767
TIntegerField整數—
TWordField無號整數0~65535
TBooleanField布林—
TFloatField浮點數—
TCurrencyField貨幣固定 4 位小數
TDateField日期—
TTimeField時間—
TBCDField固定精度浮點—
TDateTimeField日期時間—

本書重點介紹常用型別,其餘請參閱線上說明。

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