首頁 考試吧論壇 Exam8視線 考試商城 網(wǎng)絡(luò)課程 模擬考試 考友錄 實(shí)用文檔 求職招聘 論文下載
2011中考 | 2011高考 | 2012考研 | 考研培訓(xùn) | 在職研 | 自學(xué)考試 | 成人高考 | 法律碩士 | MBA考試
MPA考試 | 中科院
四六級 | 職稱英語 | 商務(wù)英語 | 公共英語 | 托福 | 雅思 | 專四專八 | 口譯筆譯 | 博思 | GRE GMAT
新概念英語 | 成人英語三級 | 申碩英語 | 攻碩英語 | 職稱日語 | 日語學(xué)習(xí) | 法語 | 德語 | 韓語
計(jì)算機(jī)等級考試 | 軟件水平考試 | 職稱計(jì)算機(jī) | 微軟認(rèn)證 | 思科認(rèn)證 | Oracle認(rèn)證 | Linux認(rèn)證
華為認(rèn)證 | Java認(rèn)證
公務(wù)員 | 報關(guān)員 | 銀行從業(yè)資格 | 證券從業(yè)資格 | 期貨從業(yè)資格 | 司法考試 | 法律顧問 | 導(dǎo)游資格
報檢員 | 教師資格 | 社會工作者 | 外銷員 | 國際商務(wù)師 | 跟單員 | 單證員 | 物流師 | 價格鑒證師
人力資源 | 管理咨詢師考試 | 秘書資格 | 心理咨詢師考試 | 出版專業(yè)資格 | 廣告師職業(yè)水平
駕駛員 | 網(wǎng)絡(luò)編輯
衛(wèi)生資格 | 執(zhí)業(yè)醫(yī)師 | 執(zhí)業(yè)藥師 | 執(zhí)業(yè)護(hù)士
會計(jì)從業(yè)資格考試會計(jì)證) | 經(jīng)濟(jì)師 | 會計(jì)職稱 | 注冊會計(jì)師 | 審計(jì)師 | 注冊稅務(wù)師
注冊資產(chǎn)評估師 | 高級會計(jì)師 | ACCA | 統(tǒng)計(jì)師 | 精算師 | 理財(cái)規(guī)劃師 | 國際內(nèi)審師
一級建造師 | 二級建造師 | 造價工程師 | 造價員 | 咨詢工程師 | 監(jiān)理工程師 | 安全工程師
質(zhì)量工程師 | 物業(yè)管理師 | 招標(biāo)師 | 結(jié)構(gòu)工程師 | 建筑師 | 房地產(chǎn)估價師 | 土地估價師 | 巖土師
設(shè)備監(jiān)理師 | 房地產(chǎn)經(jīng)紀(jì)人 | 投資項(xiàng)目管理師 | 土地登記代理人 | 環(huán)境影響評價師 | 環(huán)保工程師
城市規(guī)劃師 | 公路監(jiān)理師 | 公路造價師 | 安全評價師 | 電氣工程師 | 注冊測繪師 | 注冊計(jì)量師
繽紛校園 | 實(shí)用文檔 | 英語學(xué)習(xí) | 作文大全 | 求職招聘 | 論文下載 | 訪談 | 游戲

2011計(jì)算機(jī)等考Delphi:數(shù)據(jù)訪問部件應(yīng)用及編程

本章主要介紹用Delphi開發(fā)簡單的數(shù)據(jù)庫應(yīng)用程序的一般方法和步驟,首先讓讀者對Delphi強(qiáng)勁的數(shù)據(jù)庫應(yīng)用開發(fā)工具有一個直觀的印象,然后在此基礎(chǔ)上進(jìn)行復(fù)雜的數(shù)據(jù)庫應(yīng)用程序的設(shè)計(jì)。

  15.5 TDataSource部件及其應(yīng)用

  TDataSource部件是開發(fā)數(shù)據(jù)庫應(yīng)用程序中用到的非常重要的部件,它是連接數(shù)據(jù)集部件TTable或TQuery和數(shù)據(jù)瀏覽部件的橋梁。TDataSource部件本身十分簡單,它所擁有的屬性、事件和方法都比較少,在使用該部件時無需作太多的工作,它主要是為數(shù)據(jù)瀏覽部件服務(wù)的,如果在應(yīng)用程序中沒有使用數(shù)據(jù)瀏覽部件,我們也沒有必要為應(yīng)用程序設(shè)置TDataSource部件。

  15.5.1 TDataSource部件的屬性

  TDataSource部件除了其他部件都擁有的Name屬性和Tag屬性之外,主要有下面幾個屬性:

  DataSet屬性:該屬性說明TDataSource部件從中獲取數(shù)據(jù)的數(shù)據(jù)集的名字,它可以是TTable部件的名字,也可以是TQuery部件的名字,甚至還可以指定其他窗體內(nèi)的數(shù)據(jù)集作為該屬性的值,如在下面的程序中我們指定窗體Form2中的table1作為窗體Form1中的DataSource1的DataSet屬性值:

  TForm1.Formcreate(Sender : Tobject);

  Begin

  DataSource1.DataSet := Form2.Table1;

  end;

  Enable屬性:Enable屬性可以暫時性地切斷TDataSource部件和與之相連的數(shù)據(jù)集部件的連接。這是一個布爾型變量。當(dāng)它的值為False時,TDataSource部件和數(shù)據(jù)集部件的連接被切斷,且所有與TDataSource部件相連的數(shù)據(jù)瀏覽部件中將變?yōu)橐黄瞻,不顯示任何數(shù)據(jù)信息。當(dāng)Enabled的值變?yōu)門rue時,TDataSource部件和數(shù)據(jù)集部件的連接恢復(fù),且與TDataSource部件相連的數(shù)據(jù)瀏覽部件恢復(fù)顯示數(shù)據(jù)。不過要實(shí)現(xiàn)上述這些功能,一般不使用TDataSource部件的Enabled屬性,而是調(diào)用數(shù)據(jù)集部件的DisableControls方法和EnableControls 方法,因?yàn)檎{(diào)用這兩個方法可以方便地控制與數(shù)據(jù)集部件相連的所有TDataSource部件以及與TDataSource部件相連的數(shù)據(jù)瀏覽部件。

  AutoEdit屬性:這是一個布爾型變量,它用于說明是否將與TDataSource部件相連的數(shù)據(jù)集置于編輯狀態(tài)。當(dāng)AutoEdit的值為True時,應(yīng)用程序運(yùn)行時,與TDataSource相連的數(shù)據(jù)集部件自動地被設(shè)置成編輯狀態(tài),當(dāng)用戶在與TDataSource部件相連的數(shù)據(jù)瀏覽部件中輸入新的值時,數(shù)據(jù)集部件中的記錄也隨之改變。如果AutoEdit的值為False,用戶想通過數(shù)據(jù)瀏覽部件或程序修改數(shù)據(jù)集中的記錄,必須要調(diào)用數(shù)據(jù)集部件的Edit方法,將其置為編輯狀態(tài)之后才能夠進(jìn)行。

  15.5.2 TDataSource部件的事件

  TDataSource部件具有三個事件:

  ● OnDataChange事件

  ● OnStateChange

  ● OnUpdataData

  OnDataChange事件:當(dāng)與TDataSource相連的數(shù)據(jù)集中的記錄指針的位置發(fā)生改變時,該事件就被觸發(fā),也就是說當(dāng)程序調(diào)用數(shù)據(jù)集部件的Next、Previous、Insert、Append等方法導(dǎo)致記錄指針的位置發(fā)生改變時,便會觸發(fā)該事件。該事件一般用于保持應(yīng)用中多個部件之間的同步。

  OnUpdataData事件:當(dāng)數(shù)據(jù)集部件中當(dāng)前記錄將要被修改時,觸發(fā)該事件。例如在程序調(diào)用post方法之后但在修改后的數(shù)據(jù)記錄真正被寫回磁盤中的數(shù)據(jù)庫文件之前觸發(fā)該事件,在應(yīng)用中使用非數(shù)據(jù)瀏覽部件時要它與數(shù)據(jù)集保持同步時常使用該事件進(jìn)行相關(guān)的處理。

  OnStateChange事件:當(dāng)與TDataSource部件相連的數(shù)據(jù)集部件的狀態(tài)發(fā)生改變時,便觸發(fā)該事件。因?yàn)閿?shù)據(jù)集部件的State屬性標(biāo)明了數(shù)據(jù)集部件當(dāng)前所處的狀態(tài),當(dāng)數(shù)據(jù)集的狀態(tài)發(fā)生變化時,使用該事件進(jìn)行有關(guān)的處理是很有用的,在一個具體的應(yīng)用中,數(shù)據(jù)集部件的狀態(tài)常常是頻繁地變化的,為了跟蹤數(shù)據(jù)集部件的狀態(tài)變化,可以用下面例子中的程序代碼將數(shù)據(jù)集部件當(dāng)前的狀態(tài)顯示在一個標(biāo)簽上:

  TForm1.DataSource1OnStateChange(Sender : Tobject);

  var

  S : String;

  begin

  Case Table1,State of

  dsInactive : S := 'Inactive';

  dsBrowse : S := 'Browse';

  dsEdit : S := 'Edit';

  dsInsert : S := 'SetKey';

  dsSetKey : S := 'SetKey';

  end;

  Label1.Caption := S;

  end;

  類似地我們也可以通過檢測數(shù)據(jù)集部件的狀態(tài)來控制有關(guān)的按鈕和菜單項(xiàng)是否有效。例如:在一個應(yīng)用窗體中有一個InsertBtn按鈕,用于控制向數(shù)據(jù)集部件table1對應(yīng)的數(shù)據(jù)庫表中插入記錄;還有一個CancelBtn按鈕用于控制是否取消用戶對當(dāng)前記錄的修改或插入新記錄。下面的程序代碼根據(jù)Table1的狀態(tài)來控制這兩個按鈕的功能(是否有效,在窗體是否變灰暗)。

  Form1.DataSource1OnStateChange(Sender : Tobject);

  begin

  InsertBtn.Enabled := (Table1.State = dsBrowse);

  CancelBtn.Enabled := Table1.State in [dsInsert,dsEdit,dsSetKey]

  end;

  上面的代碼中,當(dāng)Table1處于瀏覽狀態(tài)(Browse狀態(tài)時),用戶是不能夠向數(shù)據(jù)庫表中插入新記錄的,此時InsertBtn按鈕將變灰暗即無效。當(dāng)Table1不處于Browse狀態(tài)時,InsertBtn按鈕有效,用戶是可以向表中插入新記錄。同理,只有當(dāng)Table1處于特入狀態(tài)(Insert狀態(tài))或編輯狀態(tài)(Edit狀態(tài))或查找狀態(tài)(SetKey狀態(tài))時,CancelBtn按鈕才有效,也即用戶可以取消當(dāng)前插入的記錄、修改當(dāng)前的記錄以及查找到的結(jié)果等。

上一頁  1 2 3 4 5 6 7 8 9 10  ... 下一頁  >> 
  相關(guān)推薦:2010年9月計(jì)算機(jī)等級考試試題及答案解析專題
       預(yù)告:名師解析2010年9月計(jì)算機(jī)等級考試試題答案
       2010年9月計(jì)算機(jī)等級考試成績查詢時間及入口
       2010年9月計(jì)算機(jī)等考成績查詢短信免費(fèi)提醒開通
文章搜索
版權(quán)聲明:如果計(jì)算機(jī)等級考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請與我們聯(lián)系800@exam8.com,我們將會及時處理。如轉(zhuǎn)載本計(jì)算機(jī)等級考試網(wǎng)內(nèi)容,請注明出處。