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屬性可以為各控制按鈕設置其他的動態提示信息,用戶自己設置的動態提示信息會覆蓋原來的提示信息。