TDataSource部件的事件
TDataSource部件具有三個事件
● OnDataChange事件
● OnStateChange
● OnUpdataData
OnDataChange事件當與TDataSource相連的數據集中的記錄指針的位置發生改變時該事件就被觸發也就是說當程序調用數據集部件的NextPreviousInsertAppend等方法導致記錄指針的位置發生改變時便會觸發該事件該事件一般用於保持應用中多個部件之間的同步
OnUpdataData事件當數據集部件中當前記錄將要被修改時觸發該事件例如在程序調用post方法之後但在修改後的數據記錄真正被寫回磁盤中的數據庫文件之前觸發該事件在應用中使用非數據浏覽部件時要它與數據集保持同步時常使用該事件進行相關的處理
OnStateChange事件當與TDataSource部件相連的數據集部件的狀態發生改變時便觸發該事件因為數據集部件的State屬性標明了數據集部件當前所處的狀態當數據集的狀態發生變化時使用該事件進行有關的處理是很有用的在一個具體的應用中數據集部件的狀態常常是頻繁地變化的為了跟蹤數據集部件的狀態變化可以用下面例子中的程序代碼將數據集部件當前的狀態顯示在一個標簽上
TFormDataSourceOnStateChange(Sender : Tobject)
var
S : String;
begin
Case TableState of
dsInactive : S := Inactive;
dsBrowse : S := Browse;
dsEdit : S := Edit;
dsInsert : S := SetKey;
dsSetKey : S := SetKey;
end;
LabelCaption := S;
end;
類似地我們也可以通過檢測數據集部件的狀態來控制有關的按鈕和菜單項是否有效例如在一個應用窗體中有一個InsertBtn按鈕用於控制向數據集部件table對應的數據庫表中插入記錄還有一個CancelBtn按鈕用於控制是否取消用戶對當前記錄的修改或插入新記錄下面的程序代碼根據Table的狀態來控制這兩個按鈕的功能(是否有效在窗體是否變灰暗)
FormDataSourceOnStateChange(Sender : Tobject)
begin
InsertBtnEnabled := (TableState = dsBrowse)
CancelBtnEnabled := TableState in [dsInsertdsEditdsSetKey]
end;
上面的代碼中當Table處於浏覽狀態(Browse狀態時)用戶是不能夠向數據庫表中插入新記錄的此時InsertBtn按鈕將變灰暗即無效當Table不處於Browse狀態時InsertBtn按鈕有效用戶是可以向表中插入新記錄同理只有當Table處於特入狀態(Insert狀態)或編輯狀態(Edit狀態)或查找狀態(SetKey狀態)時CancelBtn按鈕才有效也即用戶可以取消當前插入的記錄修改當前的記錄以及查找到的結果等
字段部件和字段編輯器的使用
字段部件有時又稱字段對象它對應著數據庫表中的列即字段字段對象是不可見的部件在Delphi中有兩種方式創建字段部件
①在應用程序運行過程中隨著數據集部件被激活對應於數據庫表中每一列的字段部件便動態地被創建
②在設計過程中程序設計人員利用字段編輯器(Fields Editor)可以創建永久性的字段部件即使字段對象對應的數據庫表的結構發生了變化時這些字段部件也不會發生變化
既然字段部件是對應於數據庫表中的各個字段的而數據庫表中的字段有多種數據類型所以字段部件相應也有多種類型字段部件的類型與數據庫表中的字段的數據類型的對應關系如表所示
表 字段部件的類型
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
字段部件的類型 對應的數據類型
────────────────────────────
TStringField 字符串類型的字段
TSmallIntField 短整數類型的字段
TIntegerField 整數類型的字段
TWordField 正整數類型的字段
TBooleanField 布爾型字段
TFloatField 浮點數類型的字段
TCurrenCyField 貨幣型字段
TDataField 日期型
TTimeField 時間型
TBCDField 小數位數固定的浮點數
TDataTimeField 日期時間型字段
━━━━━━━━━━━━━━━━━━━━━━━━━━━
我們在本書中只介紹一些常見類型的字段部件的使用其他類型字段部件的使用可以參看聯機幫助文件
返回目錄DELPHI基礎教程
編輯推薦
Java程序設計培訓視頻教程
JEE高級框架實戰培訓視頻教程
Visual C++音頻/視頻技術開發與實戰
Oracle索引技術
ORACLEG數據庫開發優化指南
Java程序性能優化讓你的Java程序更快更穩定
C嵌入式編程設計模式
Android游戲開發實踐指南
[] [] [] []
From:http://tw.wingwit.com/Article/program/Delphi/201311/25160.html