程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 第十六章-數據浏覽部件的應用及編程(二)(2)

第十六章-數據浏覽部件的應用及編程(二)(2)

編輯:Delphi

16.4.2 TDBGrid部件的事件及應用

TDBGrid部件在具有很多重要屬性的同時,Delphi也為它賦予了一些事件,以用於控制用戶在TDBGrid部件中的操作,我們通過為其中的一些事件編寫處理程序,可以有效地控制TDBGrid部件的行為。因為在TDBGrid部件中一次是顯示多條記錄和記錄中的多個字段,也許在實際應用中,不同的用戶各有自己特殊的需要,如只想改變其中某一列的值或者控制用戶每次只能進出網格中指定的列等等。表16.7列出了TDBGrid部件的主要事件及目的用途。

表16.7 TDBGrid部件中的主要事件

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

事 件 名 目 的 用 途

────────────────────────────────

OnColEntor 當用戶進入網格各列時,觸發該事件

OnColExit 當用戶離開網格各列時,觸發該事件

OnDblClick 當用戶在網格中雙擊鼠標左鍵時,觸發該事件

OnDragDrop 當用戶在網格中用鼠標進行拖放操作時,觸發該事件

OnDragOver 當用戶在網格中用鼠標拖動網格時,觸發該事件

OnDrawDataCell 用於定制繪制網格中各網格單元,當向網格中填充數

據時觸發該事件

OnEndDrag 當用戶停止拖動網格時,觸發該事件

OnEnter 當網格獲得焦點時,觸發該事件

OnExit 當網格失去焦點時,觸發該事件

OnKeyDown 當用戶在網格中按下任何鍵或組合鍵時,觸發該事件

OnKeyPress 當用戶在網格中按了任何一個數字鍵或字母鍵時,觸

發該事件

OnKeyUp 當用戶在網格中釋放任何被按下的鍵時,觸發該事件

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

上述這些事件在我們開發實際的應用程序時,是很有用處的,讀者們可以仔細地研究這些事件的用途,並參看聯機幫助信息。

例如,我們可以為TDBGrid部件的OnDblClick事件編寫處理程序,當用戶在網格中雙擊鼠標左鍵時,彈出一個列表框供用戶為網格中某一列選擇一個字段值。在例16.1中我們創建如圖16.5所示的應用,在Object Inspector中設置各字段部件的Visible屬性,在網格中只顯示CustNo、Company、Country和City字段。我們為DBGrid編寫OnDblclick事件處理過程,當用戶編輯修改Country字段時,雙擊鼠標左鍵便彈出一個列表框ListBox1,其中顯示“中國”、“美國”、“日本”、“英國”、“法國”、“俄羅斯”供用戶選擇,用戶單擊其中的國家名稱後,將相應的洲名選入網格中。 

其中ListBox1的Items屬性寫入上述國家的名稱,並且設置其Visible屬性為False。

6.5 TDBNavigator部件及其應用 

TDBNavigator 部件主要用於在數據集中進行記錄導航和為用戶操縱數據集中的記錄提供了一組簡單明了的控制按鈕。TDBNavigator部件中包含一組控制按鈕,用戶單擊其中的按鈕可以向前向後移動記錄指針、插入記錄、修改現存記錄、投寄對記錄的修改、取消修改、刪除記錄;以及刷新記錄的顯示等。

圖16.7為TDBNavigator部件中的控制按鈕。 

下表描述了TDBNavigator部件中的各個控制按鈕。 

表16.8 TDBNavigator部件中的控制按鈕

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

按鈕名稱 主 要 功 能

─────────────────────────────────

First 將當前記錄指針移到數據庫表中第一條記錄處

Prior 將記錄指針移到當前記錄的前一條記錄處

Next 將記錄指針移到當前記錄的後一條記錄處

Last 將當前記錄指針移到數據庫表中最後一條記錄處

Insert 調用數據集部件的Insert方法,在當前記錄的前面

插入一條新記錄,並將數據集部件置為插入狀態

Delete 刪除當前記錄,如果TDBNavigator部件的ConfirmDelete

屬性設置為true時,會彈出刪除確認對話框

Edit 將數據集部件置為編輯狀態,以便用戶修改當前的記錄

Post 投寄對當前記錄的修改

Cancel 取消對當前記錄的修改,並將數據集部件置為浏覽狀態

Refresh 清除數據浏覽部件的顯示緩沖區,並用與其相連的數據

集部件(TTable或TQuery)中的記錄刷新顯示緩沖區。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

TDBNavigator部件的屬性較少。下面我們作一簡單的介紹:TDBNavigator部件的一個重要屬性是VisibleButtons屬性,該屬性中包含著多個可選的擴展子屬性,主要用於選擇TDBNavigator部件中各個控制按鈕的顯示與否的。因為在實際的應用當中,我們並不需要那麼多的控制按鈕。如在一個浏覽數據庫表的應用中,我們一般只需要First、Prior、Next、Last四個按鈕就行了,那麼我們便在VisibleButtons屬性中設置其它的按鈕為False即可。

ShowHint屬性:該屬性是布爾型屬性,它用於控制是否顯示TDBNavigator部件中各按鈕的動態提示信息。缺省情況下該屬性的值為False,當設置它的值為True時,當用戶將鼠標光標停留在TDBNavigator部件中某一個控制按鈕上,超過1秒鐘時間後,Delphi便會自動顯示有關該控制按鈕的提示信息。

Hints屬性:在缺省情況下,TDBNavigator部件中的各控制按鈕都有相應的動態提示信息,如First、Prior、Next、Last等,用戶可以根據自己的需要,通過設置Hints屬性可以為各控制按鈕設置其他的動態提示信息,用戶自己設置的動態提示信息會覆蓋原來的提示信息。 

16.6 TDBMemo部件及其應用

 TDBMemo部件主要用於顯示和編輯數據庫表中的大二進制(BLOB)類型的字段值。TDBMemo部件能夠顯示多行文本,也允許用戶在其中輸入和修改多行文本信息,它是Delphi中用來顯示和編輯數據庫表中的大二進制類型的文本字段的唯一的數據浏覽部件。

TDBMemo部件的主要屬性和作用如下:

ReadOnly屬性:這是布爾型屬性,為True時,用戶只能在TDBMemo部件中顯示BLOB型文本信息,如Paradox和dBASE數據庫表中的備注型字段。當為False時,用戶在TDBMemo 部件中不僅可以顯示BLOB文本信息而且還允許用戶編輯修改其中的文本信息。

MaxLength屬性:該屬性是整數型屬性,設置該屬性的值用於限制用戶向TDBMemo 部件中輸入字符的個數。若設置該值為0時,表示輸入字符的個數沒有限制。

SCrollBar屬性:說明TDBMemo部件是否顯示滾動條。

WordWrap屬性:說明在TDBMemo部件中輸入文本信息時,輸入到右邊界時,是否自動換行。

Alignment屬性:說明文本信息在TDBMemo部件中的對齊方式,有三種可選值:taLeftJustify、taCenter和taRightJustify。其含義分別是左對齊,居中和右對齊。

在運行過程中,用戶對TDBMemo部件中顯示的文本信息是不能夠進行剪切、拷貝和粘貼操作的,要想具備這些功能,用戶必須編程調用CutToClipboard、CopyToClipboard 和PasteFromClipboard方法分別來實現剪切,拷貝和粘貼操作。

AutoDisplay屬性:因為TDBMemo部件中包含著大量的文本信息。應用程序在運行過程中要顯示其中的信息需要花費很多的時間,特別是當用戶移動記錄指針時,都要更新TDBMemo部件中顯示的信息,這樣會大大減慢程序的運行速度。為此Delphi為TDBMemo部件設定了AutoDisplay屬性,用來控制是否自動顯示表中的備注型字段。當AutoDisplay設置為False時,在TDBMemo部件中只顯示其對應表中的字段名而不顯示字段中的文本信息,用戶如果想浏覽字段中的文本信息,用鼠標左鍵雙擊TDBMemo部件的內部即可;當設置AutoDisplay屬性為True時,在TDBMemo部件中會自動地顯示其對應數據庫表中的字段值。

這裡要注意的是,TDBMemo部件中顯示和編輯文本信息的最大字節數為32K,在使用過程中不要超過這一限制。

圖16.8是TDBMemo顯示數據庫表中備注型字段的情形。該例子在C:\Delphi\DEMOS\DA子目錄中,項目名稱為FashFact.dpr。 

用TDBMemo部件顯示備注型字段 

16.7 TDBImage部件及其應用

 TDBImage部件與TDBMemo部件具有很多相似的屬性,它是用來顯示和編輯數據庫表中的BLOB類型的位圖圖像字段的。

圖16.8中同時也使用了一個TDBImage部件來顯示數據庫表中的位圖圖像。

缺省情況下,在TDBImage部件中是允許用戶對位圖圖像進行編輯的,如將圖像剪切或拷貝到剪帖板上或從剪帖板上粘帖到TDBImage部件中等操作,同時也可以在程序中調用CutToClipboard、CopyToClipboard和PasteFromClipboard方法來實現剪切、拷貝、粘帖操作,當然要進行上述操作必須確保TDBImage的ReadOnly屬性值為False。

TDBImage部件也具有一個AutoDisplay屬性,該屬性的控制和作用與TDBMemo 部件的AutoDisplay屬性是一樣的。 

16.8 數據浏覽部件中的列表框和組合框 

在數據浏覽部件中有四個部件類似於標准部件中的列表框和組合框,這些列表框和組合框主要是在數據庫應用程序中為用戶提供一系列的可選擇的字段值。注意這些部件只能與TTable部件配合使用,而不能與TQuery部件配合使用。 

表16.9 數據浏覽部件中的列表框和組合框

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

部 件 名 用 途

──────────────────────────────────

TDBlistBox 在用戶修改當前記錄中指定的字段值時,可用該部件顯示

一個字段值列表供用戶選擇

TDBComboBox 把一個TDBEdit部件與一個可選的字段值列表結合在一起,

當用戶修改當前記錄中的字段時,可以直接從部件中輸入

新的字段,也可以打開下拉式列表框選擇其中的一個可選項。

TDBLookapList 當用戶要編輯修改數據庫表當前記錄的指定字段時,使用

該部件提供多個可選項,這多個可選項是從相關的其它數

據庫表中讀取的,且以列表框的形式提供給用戶

TDBLookupCombo 該部件結合了TDBEdit部件和TDBComboBOx部件的功能,用

戶可以直接向該部件中輸入字段值,也可以從下拉式列表

框中選擇一個可選項,只是下拉式列表框中的可選項是從

相關的其他數據庫表中讀取來的。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

16.9 TDBComboBox部件

TDBComboBox部件中包含了TDBEdit部件的全部功能,它們具有相似性,不同的是在運行過程中TDBComboBox部件同時有一個下拉式列表框,在下拉式列表框中有一組可供選擇的項供用戶選擇,這些可選項是在設計階段由程序設計人員提供給TDBComboBox部件的Items屬性的。圖16.9是TDBComboBox部件的下拉式列表框中的內容,注意TDBComboBox部件一定要對應數據庫表中的一個字段。 

圖16.9 TDBComboBox部件在運行過程中 

TDBComboBox部件的一個重要的屬性是Items屬性,該屬性中包含著TDBComboBox部件在運行過程中下拉式列表框中的可選項,Items中的內容可以在設計階段指定。

如果一個TDBComboBox部件對應著數據庫表中一個字段,那麼當用戶要編輯修改該字段中的值時,可以打開下拉式列表框,從中選擇一個可選項作為字段值,也可以自己在TDBComboBox部件中輸入一個其他的字段值。

TDBComboBox部件還有下列一些重要的屬性,主要用來控制TDBComboBox部件的顯示模式和風格的。

Style屬性:控制TDBComboBox部件列表框的顯示格式的,當它的取值為:

● CSDropDown

缺省情況下為此值,顯示一個下拉式列表框和一個編輯框,下拉式列表框中的可選項都是字符串且各選擇項占居的高度一樣。

● CsSimple

只顯示一個列表框,列表框中的可選項都是字符串,且各選項占居一樣的高度。

● CSDropDownList

顯示一個下拉式列表框和一個編輯框,但用戶不能向編輯框中輸入一個在列表框中沒有的值。

● CSOwnerDrawFixed和CSOWnerDrawVariable

在列表框中不僅有字符串選項而且還允許有其他類型的選項,如位圖圖像等,這方面的詳細信息請參看聯機幫助。 

DropDownCount屬性:允許列表框中顯示可選項的最大數目,當可選項數目大於該屬性值時,用戶可以用滾動條察看全部的可選項,當可選項數小於該屬性值時,列表框會自動調整其大小以足夠顯示全部可選項。

ItemHeight屬性:當TDBComboBox部件的Style屬性被設置為CSOwnerDrawFixed時,用此屬性來設置列表框中每個可選項占居的高度。

Sorted屬性:布爾型屬性,它決定列表框中的可選項是否按字母的排列順序排序。 

16.10 TDBListBox部件 

TDBListBox部件的基本功能與TDBComboBox部件基本上是一樣的,它們的不同之處在於TDBListBox部件沒有下拉式列表框而是一個列表框,在列表框中顯示一組供用戶選擇的可選項,在運行過程中,用戶單擊其中的可選項可以為TDBListBox 部件對應的字段賦一個字段值,但用戶不能自己從鍵盤上輸入一個列表框中不存在的字段值。

如果在應用程序中,TDBListBox對應數據庫表中一個具體的字段,那麼當在數據集中移動記錄指針時,當前記錄中對應TDBListBox部件的字段的值在TDBListBox部件的列表框中將以高亮度顯示,如果當前記錄的該字段值不在列表框中,那麼列表框中的可選項沒有一項是高亮度地顯示的。

TDBListBox的幾個屬性:

IntegralHeight屬性:該屬性是用來控制TDBListBox部件中的列表框的顯示格式的。當該屬性值為True(缺省情況下為此值)時,列表框底部的可選項自動地移到上一次被選用過的可選項的上面。當該屬性的值為False時,列表框底部的可選項的顯示方式取決於TDBListBox部件的ItemHeight屬性,並且列表框底部可選項可能不能被全部地顯示出來。

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