程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 數據網格DBGrid應用

數據網格DBGrid應用

編輯:Delphi

 

 

    數據網格是非常流行的數據輸入和顯示形式,像大家熟悉的Excel97、VFP中的功能強大的BROWS等,為廣大程序員樂於采用。在用Delphi開發數據庫應用系統時,利用數據網格DBGrid輸入數據時,有些字段只允許某幾個固定的字符串,像檔案案卷的保管期限,只有“永久”、“長期”和“短期”三種,可否從一個下拉列表中進行選擇,從而方便輸入和避免輸入錯誤呢?還有一些字段,例如職工信息庫中的單位編號(在另外的單位庫中保存著單位的詳細信息),在輸入和顯示職工數據時,能否不對單位編號進行操作,而代之於更加直觀的單位庫中的單位名稱呢?答案是肯定的,Delphi的數據網格控件DBGrid,支持下拉列表和查找字段的編程,而且,編程的過程都是可視化的,不需要寫一行語句。

一、DBGrid中的下拉列表

  在DBGrid網格中實現下拉列表,設置好DBGrid中該字段的PickList字符串列表、初始的序號值DropDownRows即可。以職工信息庫中的籍貫字段(字符串類型)為例,具體設計步驟如下: 

  1、在窗體上放置Table1、DataSource1、DBGrid1、DBNavigator1等控件對象,按下表設置各個對象的屬性:

對象 
屬性 
設定值 

Table1 
DataBase 
sy1 

TableName 
zgk.dbf 
//職工信息庫 

DataSource1 
DataSet 
Table1 

DbGrid1 
DataSource 
DataSource1 

DBNavigator1 
DataSource  
Datasource1 

2、雙擊Table1

在彈出的Form1.Table1窗口中,用右鍵彈出快捷菜單,單擊AddFields菜單項;選擇所有的字段後,按OK按鈕。

  3、修改第2步新增字段的DisplayLabel屬性。以Table1ZGBH字段為例,在ObjectInspector窗口中選擇Table1ZGBH

修改屬性DisplayLabel=職工編號,其余字段類似。

  4、雙擊DBGrid1

在彈出的Editing DBGrid1.Columns窗口中,單擊AddallFields按鈕,增加Table1的所有字段。

  5、在EditingDBGrid1.Columns窗口,選擇jg這一行,切換到ObjectInspector窗口,修改它的PickList.Strings為“湖北枝江市、北京市、河南平頂山市、浙江德清市”

  6、在Form1.Oncreate事件中寫 入語句:

Table1.Open;

  7、F9運行,用鼠標點擊某個記錄的籍貫字段,右邊即出現一個按鈕,點擊這個按鈕,可出現一個下拉列表,包含第5步中輸入的四行字符串,可用鼠標進行選擇。當然也可以自行輸入一個並不屬下拉列表中的字符串。

二、DBGrid中的查找字段

所謂查找字段(LookUpField),即DBGrid 中的某個關鍵字段的數值來源於另外一個數據庫的相應字段。運用查找字段技術,不僅可以有效的避免輸入錯誤,而且DBGrid的顯示方式更為靈活,可以不顯示關鍵字段,而顯示源數據庫中相對應的另外一個字段的數據。

  例如,我們在DBGrid中顯示和編輯職工信息,包括職工編號、職工姓名、籍貫、所在單位編號,而單位編號來源於另一個數據庫表格——單位庫,稱“單位編號”為關鍵字段。如果我們直接顯示和編輯單位編號的話,將會面對1、2、3等非常不直觀的數字,編輯時極易出錯。但是如果顯示和編輯的是單位庫中對應的單位名稱話,將非常直觀。這就是DBGrid的所支持的查找字段帶來的好處。

  實現DBGrid的查找字段同樣不需要任何語句,具體設計步驟如下:

1、在窗體上放置Table1、Table2、DataSource1、DBGrid1、DBNavigator1等控件對象,按下表設置各個對象的屬性:

對象 
屬性 
設定值 

Table1 
DataBase 
sy1 

TableName 
zgk.dbf 
//職工信息庫 

Table2 
DataBase 
sy1 

TablenAME 
dwk.dbf 
//單位信息庫 

DataSource1 
DataSet 
Table1 

DbGrid1 
DataSource 
DataSource1 

DBNavigator1 
DataSource 
Datasource1 

  2、雙擊Table1

在彈出的Form1.Table1窗口中,用右鍵彈出快捷菜單,單擊AddFields菜單項;選擇所有的字段後,按OK按鈕。

  3、修改第2步新增字段的DisplayLabel屬性。以Table1ZGBH字段為例,在ObjectInspector窗口中選擇Table1ZGBH

修改屬性DisplayLabel=職工編號,其余字段類似。

  4、設置Table1DWBH.Visible=False。 

  5、在Form1.Table1窗口,用右鍵彈出快捷菜單,單擊NewField菜單項,新增一個查找字段DWMC,在彈出的窗口設置相應的屬性

按OK按鈕確認;在ObjectInspector窗口,設置Table1DWMC.DisplayLabel=

單位名稱。

  6、在Form1.Oncreate事件中寫 入語句:

Table1.Open;

  7、按F9運行,當光標移至某個記錄的單位名稱字段時,用鼠標點擊該字段,即出現一個下拉列表,點擊右邊的下箭頭,可在下拉列表中進行選擇。在這裡可以看出,下拉列表的內容來自於單位信息庫,並且不能輸入其他內容。

三、DBGrid中的下拉列表和查找字段的區別

雖然DBGrid中的下拉列表和查找字段,都是以下拉列表的形式出現的,但兩者有很大的差別。

1、用PickList屬性設置的下拉列表,它的數據是手工輸入的,雖然也可以在程序中修改,但動態特性顯然不如直接由另外數據庫表格提取數據的查找字段。

  2、用PickList屬性設置的下拉列表,允許輸入不屬於下拉列表中的數據,但查找字段中只能輸入源數據庫中關鍵字段中的數據,這樣更能保證數據的完整性。

  3、用PickList屬性設置的下拉列表設計較為簡單。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved