熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Delphi編程 >> 正文

Delphi數據庫控件使用入門(一)

2013-11-11 21:05:06  來源: Delphi編程 

  在數據庫應用程序中數據控件是經常要用到的數據控件都是可視的也就是說如果修改了這些構件的屬性能在窗體上馬上反映出來如果這些構件的Enabled屬性設為True並且數據集的Active屬性也設為True在設計期就可以看到數據

  下面就來介紹一下這些控件的簡單應用

  指定一個數據源

  數據控件必須通過TDataSource構件連接數據集TDataSource構件扮演的角色實際上就是數據控件與數據集之間的橋梁首先把一個數據集構件放到窗體或數據模塊上設置它的DatabaseName屬性指定要訪問的數據庫設置它的TableName屬性指定要訪問的表接著把一個TDataSource構件放到窗體或數據模塊上設置它的DataSet屬性指定數據集然後把一個數據控件放到窗體上設置它的DataSource屬性指定TDataSource構件而這個TDataSource構件的DataSet屬性已經指定了一個數據集最後設置數據控件的DataField屬性指定要顯示的字段不過對於TDBGridTDBCtrlGrid和TDBNavigator構件來說不需要設置DataField屬性因為這幾個控件是以整個數據集為工作內容的

  編輯和更新數據

  除了TDBNavigator構件外其他數據控件都是用來顯示和編輯數據的這裡要介紹怎樣編輯數據

  要使用戶能編輯數據數據集必須進入dsEdit狀態如果TDataSource的AutoEdit屬性設為False用戶不能直接編輯數據除非程序調用Edit函數

  要使用戶能夠在數據控件中修改數據必須把數據控件的ReadOnly屬性設為False如果ReadOnly屬性設為True數據控件中顯示的數據就是只讀的一般情況下TDataSource構件的Enabled屬性設為True如果這個屬性設為False數據控件就無法顯示數據更不能修改數據

  如果數據集構件的ReadOnly屬性設為True數據集就是只讀的用戶在數據控件中所作的修改不能寫到數據集中除了TDBGrid構件外當用戶修改了一個字段的值還需要把輸入焦點移走新的數據才寫到數據集中在移走輸入焦點之前用戶隨時可以按ESC鍵取消修改在TDBGrid構件建立的柵格中當用戶修改了一個字段的值還需要把輸入焦點移到另一條記錄上新的數據才寫到數據集中

  禁止和允許數據刷新

  當程序正在遍歷整個數據集或者搜索一個特定的記錄時應當暫時禁止數據控件刷新數據這樣能加快遍歷或搜索的速度防止屏幕總是在閃爍調用數據集的DisableControls可以暫時禁止連接這個數據集的數據控件刷新數據DisableControls函數通常在循環操作前調用等循環結束後程序應當立即調用數據集構件的EnableControls函數重新允許刷新數據為了確保最後總是能恢復刷新建議采用TryFinally結構這樣即使在循環中出現異常也可以保證總能調用EnableControls

  下面的代碼演示了怎樣調用DisableControls和EnableControls函數

  CustTableDisableControls;
  Try
  CustTableFirst;
  While not CustTableEOF Do
  Begin
  
  CustTableNext;
  End;
  Finally
  CustTableEnableControls;
  End;

  手動刷新數據

  調用數據集的Refresh可以讀取數據集中最新的數據並刷新數據控件這個功能在多用戶環境尤其有用因為其他用戶有可能已改變了數據集中的數據有時候調用Refresh可能會導致意想不到的結果例如如果另一個用戶已經刪除了一條記錄調用Refresh後這條記錄將從數據控件中消失

  顯示單個字段的數據控件

  有的數據控件以數據庫的一個或幾個字段作為工作內容如TDBText和TDBEdit而有的數據控件以整個數據集為工作內容如TDBGrid和TDBNavigator顯示單個字段的數據控件往往是從一個標准的Windows控件演化而來的例如TDBEdit構件就可以認為是TEdit的數據感知版本

  把數據作為標簽顯示

  TDBText構件是一個只讀的數據控件它非常類似於TLabel構件和TStaticText構件TDBText構件能夠把數據作為標簽顯示用來標注其他控件例如可以用一個TDBText構件顯示名稱(Common_Name字段)

  TDBText構件需要指定一個字段當用戶使用導航器或其他手段浏覽記錄時TDBText構件顯示的數據將自動變化因為TDBText構件總是顯示當前記錄的數據

  TDBText構件的AutoSize屬性一般要設為True這是因為字段的內容長度可能是不同的如果AutoSize屬性設為False有些較長的內容可能會被截斷

  顯示和編輯數據

  TDBText構件只能顯示數據不能編輯數據要既能顯示數據又能編輯數據就要用到TDBEdit構件TDBEdit可以認為是TEdit的數據感知(DataAware)版本例如有一個TDataSource構件叫CustomersSource它的DataSet屬性指向一個TTable構件叫CustomersTable把一個TDBEdit構件放在窗體上其DataSource屬性設為CustomersSource把它的DataField屬性設為CustNo這個TDBEdit構件馬上就能顯示CustNo字段的值用戶可以在編輯框中鍵入新的值

  顯示和編輯多行文本

  TDBMemo構件是TMemo構件的數據感知版本可以顯示dBASE和Paradox數據庫中備注字段的內容

  與TDBEdit不同的是TDBMemo能夠以多行的形式顯示文本同時也允許用戶鍵入多行文本

  默認情況下TDBMemo允許用戶修改它顯示的文本如果不想讓用戶修改文本只要把ReadOnly屬性設為True即可

要允許用戶在文本中插入一個制表符應當把WantTabs屬性設為True否則當用戶按下Tab鍵將把輸入焦點移走而不是插入制表符要限制用戶最多可輸入的字符數可以設置MaxLength屬性如果這個屬性設為表示沒有限制

  此外ScrollBars屬性可以設置要不要加上滾動欄WordWrap屬性可以設置是否允許自動繞回Alignment屬性可以設置文本的對齊方式在運行期您可以調用CutToClipboard和CopyToClipboard函數把選擇的文本剪切和復制到剪貼板中調用PasteFromClipboard能夠粘貼剪貼板中的文本

  如果AutoDisplay屬性設為True當DataField屬性所指定的字段的內容改變了時TDBMemo構件會自動刷新如果AutoDisplay屬性設為FalseTDBMemo構件上只顯示字段名用戶必須雙擊這個構件或程序調用LoadMemo才能刷新數據


From:http://tw.wingwit.com/Article/program/Delphi/201311/8453.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.