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

Delphi 開發數據庫控件的方法[1]

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

  Delphi作為一種目前十分流行的數據庫開發語言在數據庫開發領域有著十分重要的地位它不僅提供了可視化的開發環境使得開發變得相對容易而且還是一種面向對象的語言 使得程序員能夠充分利用面向對象編程的種種優勢——如封裝繼承等等從而大大減輕了開發的難度和工作量下面我們就談一談利用面向對象的特性來開發數據庫控件的方法

  Delphi本身提供了一些數據庫控件如DBGridTable等它們給開發帶來了很多方便下面我們來以一個能夠顯示數據表中的所有字段的控件為例來說明如何用Delphi來進行控件的編程

  首先要為控件選擇一個合適的父類Windows的一個好處就在於它將許多操作標准化了通過這些標准的操作使得學習和使用都有章可循用戶就很容 易融會貫通地掌握整個系統在Delphi中提供了許多控件這些控件生成的應用程序足以滿足Windows編程的要求而一些新的控件也可以在此基礎上 產生它一方面繼承了一部分控件標准的操作另一方面也在程序中加入一些代碼來實現特定的功能這樣用戶使用起來不會覺得突兀也簡化了程序的開發根據 我們的目標可以看出利用下拉框控件作為新控件的父類比較合適因為它提供了下拉框中的所有標准操作這就可以大大減少我們的編程量  然後就是為 特定的功能編寫代碼我們應該想到如果一個下拉框能夠顯示一個數據庫中的所有字段那麼它一定有一個屬性能夠與數據庫相連我們將這個屬性定名為 DataSource並將這一屬性添加到控件中添加的方法是首先在Private段中加入如下代碼

   FDataLink:TFieldDataLink;
   function GetDataSource:TDataSource;
   Procedure SetDataSource( Value:TDataSource);

  其中TfieldDataLink是一個十分重要的類我們之所以能夠很容易地進行數據庫控件的開發全是拜它之賜它有一些十分有用的屬性DataSource利用這個屬性我們就能很容易地指定新控件的DataSource屬性

  第三步就是為控件的功能編寫代碼可以想到如果我們想要在拉下下拉框時顯示數據庫中的所有字段就要在它的DropDown事件中加入代碼來將所有 的字段加入到下拉框的下拉區域中這應該分兩步走第一就是要取得指定數據庫的所有字段第二就是將這些字段以字符串的格式加入到下拉框中(而拉下時顯示 所有字段的功能則由下拉框控件自己完成)在取得數據庫的字段時用到了我們上面提到的TfieldDataLink類下面的代碼就可以獲得指定數據庫 的字段數目

   j:=;
   j:=FDataLinkDataSourceDataSet FieldCount ;//取得數據庫中的所有字段的名字
   I:=;

  然後再用下面的代碼將這些字段的名字加入到下拉框的items屬性中值得注意的是在每次拉下這個下拉框時都要將items屬性清空否則這個下拉框將每次都會因加入重復的內容而變得越來越長並且一次選擇可以選定許多項使得控件看起來有點怪

  itemsClear ; //清空items屬性

  repeat //循環操作將字段加入下拉框中

  itemsAdd (FDataLinkDataSetFields[I]FieldName ); //將字段名加入到下拉框中

  I:=I+;

  until I>j-; //直到所有的字段加入完為止

  第四步就是將以上代碼加入到Delphi的控件編輯窗口中去點擊Delphi的Component/New Component菜單系統出現一個對話框將對話框如圖所示填寫

  填寫完畢點擊OK按鈕就可以創建一個文件將上面提供的代碼加入到文件的適當位置就可以完成這個控件的編寫是帶有這個控件的程序的例子

  可以想見這個控件有著十分廣泛的功能例如我們能夠利用它設置指定字段的值來運行查詢也可以返回數據庫中指定字段的數據類型長度等信息給我們的編程提供了極大的方便

但是也應該看到這個控件也有一些缺點那就是它只能顯示字段的名稱一般的數據庫中字段的名稱都是英文的這給中文版的應用軟件帶來不便下面我們 就用FdataLink的另一個屬性來顯示中文化的字段這個屬性就是DisplayName它所指定的是數據庫字段的顯示名稱而這個名稱我們可以在 設計時將其漢化這樣在應用程序中顯示出來的就是有意義的中文了

[]  []  []  


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