?? 039.htm
字號:
<HTML><HEAD><meta http-equiv="Content-Type" content="text/html; charset=GB2312"><TITLE>-->DELPHI基礎教程-->第十六章 數據瀏覽部件的應用及編程(一)</TITLE>
<META NAME="keywords" CONTENT=" DELPHI基礎教程 第十六章 數據瀏覽部件的應用及編程(一)">
<META NAME="description" CONTENT=" - DELPHI基礎教程 - 第十六章 數據瀏覽部件的應用及編程(一)">
<style>
<!--
#page {position:absolute; z-index:0; left:0px; top:0px}
.tt3 {font: 9pt/12pt "宋體"}
.tt2 {font: 12pt/15pt "宋體"}
a {text-decoration:none}
a:hover {color: blue;text-decoration:underline}
-->
</style>
</HEAD>
<body text="#000000" aLink=#9900ff link=#006699 vLink=#006699 bgcolor="#FFFFFF" leftmargin="3" topmargin="3" marginheight="3" marginwidth="3">
<TABLE WIDTH="100%" CELLPADDING=10 CELLSPACING=0 BORDER=0>
<TR>
<TD CLASS="tt3" VALIGN="top" width="8%" bgcolor="#e0e0e0"><strong><A HREF="040.htm"><FONT style="FONT-SIZE: 9pt">后一頁</font></A><BR>
<A HREF="038.htm"><FONT style="FONT-SIZE: 9pt">前一頁</font></A><BR>
<A HREF="index.html"><FONT style="FONT-SIZE: 9pt">回目錄</font></A><BR>
<A HREF="../../../../index.htm"><FONT style="FONT-SIZE: 9pt">回首頁</font></A><BR>
</strong>
</TD>
<TD class="tt2" bgcolor="#F5F8F8" width="84%"><center><B><FONT style="FONT-SIZE: 16.5pt" COLOR="#FF6666" FACE="楷體_GB2312">第十六章 數據瀏覽部件的應用及編程(一)</FONT></B></center>
<hr color="#EE9B73" size="1" width="94%">
<p>數據瀏覽部件主要用于顯示和編輯數據庫表中的數據,因而它們又常常被稱為數據控制部件或數據明了部件,它們在部件選擇板中的DataControls頁上,圖16.1顯示的是DataControls頁上的全部數據瀏覽部件,其中的TDBGrid部件用于全屏幕顯示和編輯數據庫表中的記錄,TDBNavigator用于在數據記錄之間導航、插入記錄、刪除記錄、投寄被修改的記錄。 </p>
<p>圖16.1 DataControls部件頁上的部件 </p>
<p>在表16.1中,我們對DataControls部件上的各個數據瀏覽部件的一些特性進行描述: </p>
<p>表16.1 各數據瀏覽部件概述</p>
<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>
<p>部 件 名 稱 特 性 描 述 </p>
<p>────────────────────────────────</p>
<p>TDBGrid 用網格的形式顯示數據庫表中的記錄信息,網格中的</p>
<p>各列可以在設計階段使用字段編輯器創建也可以在運</p>
<p>行過程中用程序設定</p>
<p>────────────────────────────────</p>
<p>TDBNavigator 它提供了一組按鈕用于數據庫表中的導航,編輯修改、</p>
<p>插入、刪除記錄以及刷新數據的顯示,TDBNavigator中</p>
<p>包含的控制按鈕在設計階段可以進行選擇</p>
<p>────────────────────────────────</p>
<p>TDBText 用于顯示數據庫表中當前記錄的字段值</p>
<p>────────────────────────────────</p>
<p>TDBEdit 用于顯示和編輯數據庫表中當前記錄指定的字段值</p>
<p>────────────────────────────────</p>
<p>TDBMemo 用于顯示數據庫表中的備注型字段,備注型字段中可</p>
<p>以包含多行字符甚至可以是BLOB(大二進制對象)數據</p>
<p>────────────────────────────────</p>
<p>TDBImage 用于顯示數據庫表中的圖像字段和BLOB數據</p>
<p>────────────────────────────────</p>
<p>TDBListBox 當用戶編輯修改表中當前記錄的某個字段時,該部件</p>
<p>是一個包含多個選擇項的列表框,用戶可以從中選擇</p>
<p>一個項做為字段的值</p>
<p>────────────────────────────────</p>
<p>TDBComboBOx 該部件是一個組合框,當用戶編輯修改表中當前記錄</p>
<p>的一個指定字段時,可以直接在該部件中輸入字段值</p>
<p>也可以單擊該部件從下拉式列表框中選擇一個字段值</p>
<p>────────────────────────────────</p>
<p>TDBCheck 用于顯示數據庫中的字段信息的檢查框,當表中字段</p>
<p>的值與該檢查框的ValueChecked屬性值相匹配時,該</p>
<p>檢查框被選中</p>
<p>────────────────────────────────</p>
<p>TDBReadioGroup 使用該部件可以為用戶提供一組選擇項,但用戶只能</p>
<p>從中選擇一個可選項</p>
<p>────────────────────────────────</p>
<p>TDBLookapList 當用戶要編輯修改數據庫表當前記錄的指定字段時,</p>
<p>使用該部件提供多個可選項,這多個可選項是從相關</p>
<p>的其他表中讀取的,且以列表框的形式提供給用戶</p>
<p>────────────────────────────────</p>
<p>TDBLookupCombo 該部件結合了TDBEdit部件和TDBComboBox部件的功能,</p>
<p>用戶可以直接向該部件中輸入字段值,也可以從下拉</p>
<p>式列表框中選擇一個可選項,只是下拉式列表框中的</p>
<p>可選項是從相關的其他的數據庫表中讀取來的。</p>
<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>
<p> </p>
<p>16.1 數據瀏覽部件的基本特性</p>
<p> </p>
<p>大多數的數據瀏覽部件是從標準部件中演變過來的,它們具有一些相似的特性,如TDBGrid部件和TStringGrid部件,TDBEdit和TEdit部件,TDBListBox和TListBox等等,只是數據瀏覽部件是專門用于顯示和編輯數據庫中記錄的字段信息而已。它們的使用方法以及屬性有很大的不同。在程序設計階段,當數據瀏覽部件通過TDatasource部件和TTable部件連接到一個物理數據庫時,便可在其中觀看到數據庫中的數據信息,也就是說在程序設計階段便可以看到應用程序運行之后的效果,這種特性給我們修改應用程序帶來了方便。</p>
<p>數據瀏覽部件是通過TDatasource部件連接到TTable部件中具體的字段部件的,因而數據控制部件具有一些共同的屬性,用于連接TDatasource部件和TField部件。</p>
<p>Datasource屬性:說明數據瀏覽部件連接的數據源部件TDatasource,數據瀏覽部件是從TDatasource部件中獲取數據的。</p>
<p>DataField屬性:說明數據瀏覽部件對應數據庫表中實際的字段名稱。該屬性的值其實是TDataSource連接的數據集部件TTable或TQuery部件中的字段部件的名字。</p>
<p>因此要創建一個應用程序顯示和編輯數據庫表中的記錄,一般要在應用窗體中放置一個數據集部件(TTable部件或TQuery部件)和至少一個數據源部件TDataSource部件以及多個數據瀏覽部件。其創建的一般步驟如下:</p>
<p> </p>
<p>1.在窗體中放置上述所說的部件并連接數據集部件、數據源部件。</p>
<p>2.為各數據瀏覽部件設置DataSource屬性值為窗休中存在的TDataSource部件的名字。</p>
<p>3.設置各數據瀏覽部件的DataField屬性為數據集部件TTable或TQuery部件中存在的
字段部件的名字。</p>
<p> </p>
<p>在這里需要注意的是:TDBGrid部件和TDBNavigator部件是自動地訪問數據集部件中所有可以訪問的字段部件的,因此它們是沒有DataField屬性的,對于這些部件可以跳過第3步。</p>
<p>Enabled屬性:當數據瀏覽部件連接到數據集部件時,它的Enabled屬性決定了數據瀏覽部件能否接受來自鼠標、鍵盤和定時器事件的消息。當Enabled屬性值為False時,數據瀏覽部件將變為無效而不能接受外界的信息。當與數據瀏覽部件相連的TDataSource部件的Enabled屬性為False時或與數據源部件TDataSource部件相連的數據集部件TTable或TQuery部件的Active屬性為False時,數據瀏覽部件也會隨之而變為無效。</p>
<p>ReadOnly屬性:大多數的數據瀏覽部件能夠用來編輯修改與之對應的字段,因而有ReadOnly屬性,該屬性用來控制是否可以在數據瀏覽中編輯修改字段的值。缺省情況下,該屬性的值為False,也就是說用戶可以在其中編輯修改字段的值。</p>
<p>當然用戶要想通過數據瀏覽部件編輯修改數據庫表中的記錄字段時,還要受到其它因素的制約。除了數據瀏覽部件本身的ReadOnly屬性設置為False外,還要設置其相應的字段部件和數據集部件的CanModify屬性True性;設置TDataSource部件的AutoEdit屬性為True,如果數據庫表是SQL數據庫服務器中的數據庫表,用戶必須要具有讀寫數據庫的權限等。當然在實際的程序設計過程中并沒有這樣繁瑣,因為很多屬性的缺省值都是允許用戶修改表中的記錄的。</p>
<p>除了TDBGrid部件之外,如果通過一個數據瀏覽部件修改字段值,那么當光標(或焦點)離開數據瀏覽部件時,數據瀏覽部件中被修改的值就會自動地被寫回到磁盤數據庫中。若在焦點沒有離開數據瀏覽部件之前,按ESC鍵,那么Delphi會自動地放棄其對字段值的修改。在TDBGrid部件中修改表中的記錄時,只有當焦點離開當前的記錄時,即記錄指針移到其他記錄上時,用戶對當前記錄的修改會被寫回磁盤上的數據庫表,在焦點沒有離開當前記錄時,按ESC鍵,Delphi會自動放棄對當前記錄的修改。 </p>
<p align="center">16.2 使用TDBText部件顯示表中的數據 </p>
<p>TDBText部件是一個只讀的數據瀏覽部件,它類似于TLabel部件。只是TDBText
部件用于顯示數據庫表中記錄的指定字段的值。因為TDBText部件顯示的是表中當前記錄的指定的字段的值,因而它顯示的內容也是動態的,在其中顯示的內容隨著記錄指針的移動而變化。用TDBText部件顯示Customer.DB表中的Company字段信息時可用如圖16.2所示的窗體來實現。 </p>
<p>其中各部件的屬性設置如表16.2所示 </p>
<p>表16.2 表中各部件的屬性設置</p>
<p>━━━━━━━━━━━━━━━━━━━</p>
<p>屬 性 屬 性 值</p>
<p>───────────────────</p>
<p>Table1.DatabaseName DEMOS</p>
<p>Table1.TableName Customer.DB</p>
<p>Datasource1.DataSet Table1</p>
<p>DBText.DataSource DataSource1</p>
<p>DBText.DBField Company</p>
<p>━━━━━━━━━━━━━━━━━━━ </p>
<p>16.3 使用TDBEdit部件顯示和編輯表中的數據 </p>
<p>TDBEdit部件是專門用于顯示編輯數據庫表中當前記錄的各個字段值的數據瀏覽部件,在應用程序中,我們常常用一個TDBEdit部件來對應表中一個字段,通過設置TDBEdit部件的DataSource、DataField屬性便可以為TDBEdit部件指定表中相應的字段。如果用戶希望能通過TDBEdit部件編輯修改數據庫表中的字段值,還要設置TDBEdit部件的ReadOnly屬性為False,設置與TDBEdit相連的數據源部件TdataSource部件的AutoEdit屬性為True以及確保與TDataSource部件相連的數據集部件TTable或TQuery部件處于編輯狀態,即設置它們的CanModify屬性為True。</p>
<p>例如,在圖16.3所示的窗體中,使用多個TDBEdit部件顯示和編輯Customer.DB表中當前記錄的各個字段。窗體中各部件的屬性如表16.3所示。 </p>
<p>圖16.3 用TDBEdit部件顯示和編輯表中的數據 </p>
<p>表16.3 窗體中各部件的屬性</p>
<p>━━━━━━━━━━━━━━━━━━━━</p>
<p>屬 性 屬 性 值</p>
<p>────────────────────</p>
<p>Table1.DatabaseName DEMOS</p>
<p>Table1.TableName Customer.DB</p>
<p>Datasource.DataSet Table1</p>
<p>DataSource.AutoEdit True</p>
<p>DBNavigator.DataSource DataSource1</p>
<p>━━━━━━━━━━━━━━━━━━━━ </p>
<p>窗體中其它部件都是TLabel部件和TDBEdit部件,TLabel部件用于顯示表中各字段的名字,TDBEdit部件對應表中各個字段。程序運行之后如圖16.4所示。用戶可以在其中任何一個TDBEdit部件中修改其中的字段值。 </p>
<p> 用TDBEdit部件顯示和修改表中的數據 </p>
<p>窗體中還使用了一個TDBNavigator部件,使用它的目的是在表中移動記錄指針,還可以進行修改、插入、刪除記錄等操作,具體的使用和操作參看
16.5 TDBNaigator部件的使用一節。 </p>
<p>16.4 用TDBGrid部件顯示和編輯表中的數據 </p>
<p>TDBGrid部件和TDBEdit部件一樣,它們是專門用來顯示和編輯數據庫表中的數據的,但TDBGrid部件的功能更強大一些,它可以以網格的形式顯示數據庫表中全部記錄的所有字段信息。 </p>
<p> 用TDBGrid顯示數據庫表中的記錄信息 </p>
<hr color="#EE9B73" size="1" width="94%">
</TD>
<TD CLASS="tt3" VALIGN="bottom" width="8%" bgcolor="#e0e0e0"><strong><A HREF="040.htm"><FONT style="FONT-SIZE: 9pt">后一頁</font></A><BR>
<A HREF="038.htm"><FONT style="FONT-SIZE: 9pt">前一頁</font></A><BR>
<A HREF="index.html"><FONT style="FONT-SIZE: 9pt">回目錄</font></A><BR>
<A HREF="../../../../index.htm"><FONT style="FONT-SIZE: 9pt">回首頁</font></A><BR>
</strong>
</TD>
</TR>
</table>
</BODY></HTML>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -