15.8 應用舉例:多個窗體顯示同一個數據庫表
在應用當中,我們常常需要以不同的視圖顯示同一個數據庫表中的內容,例如要在兩窗體中同時顯示一個數據庫表中一個記錄的不同字段時,我們必須要想辦法使兩個窗體中的數據浏覽部件同步地顯示數據庫表中的同一條記錄的不同字段的值。要想做到以不同的視圖顯示同一個數據庫表中的記錄,下面兩條規則是很重要的:
● 多個TDataSource部件能夠同時訪問同一個數據集部件
● 在多個窗體中顯示同一個表時,必須為每個窗體設置一個TDataSource部件,只須為其中的一個窗體設置一個TTable部件
例如,如果想在窗體Form1和Form2中同時顯示一個數據庫表的記錄,最簡單可行的辦法是:為Form1和Form2各設置一個TDataSource部件叫DataSource1、DataSource2,並在Form1中設置一個TTable部件Table1,連接Form1中的Datasource1和Table1,在程序運行過程中設置Form2中的DataSource2的DataSet屬性為Form1中的Table1,代碼如下:
Format2.DataSource1.Dataset := Form1.Table1;
這樣,當Table1被打開時,兩個窗體中便可以同步地顯示數據庫表中的同一條記錄了。
一個名叫TWOForms.DPR的例子在C:\Delphi\DEMos\DB\TwoForms中(如果Delphi安裝在其它的磁盤驅動器中,從相應的磁盤驅動器中可以找到該例子),它演示了在兩個窗體中顯示同一個數據庫表的記錄。應用程序在第一個窗體中打開Contry.DB表,並在窗體中顯示Name、Captial和Continent字段,在第二個窗體中顯示Area和Population字段,在第一個窗體中有一個按鈕用於打開第二個窗體,兩個窗體中都有TDBNavigator部件,用於記錄的導航。