摘 要 樹型控制項是一種有效表示方法,在資料庫應用程式的開發中經常用它可視化表示對象之間的層次關係。本文介紹了Developer Express inc. 的ExpressQuantumGrid Suite中樹型控制項 TdxDBTreeList 的使用方法和技巧,特別是由多關係表構成樹型結構的情況。
關鍵詞 樹型控制項,TdxDBTreeList,多關係表
簡介
樹型控制項是一種有效表示方法,在資料庫應用程式的開發中經常用它可視化表示對象之間的層次關係,便於使用者的操作和使用。比如:表示一個公司部門的階層;磁碟檔案系統等。Borland 公司的Delphi 開發系統提供了一般的樹型控制項TTreeView,它可以在設計時或運行時產生必要的樹型結構圖,方法是通過產生控制項對象的 Items 屬性。設計時方式通過手工方式增加items,主要適用於靜態、少量的 items 的情況;運行時方式通過程式產生樹型結構的 items,它既適合靜態又可用於動態情況。在實際工作中,樹狀結構中的 items 經常來自資料庫的一個或若干個關係表中,若想利用 TTreeView 控制項產生相關的樹狀結構,設計時方式很難實現,運行時方式雖然可以實現,但需要程式員設計大量的代碼,而且容易出錯。因此,為了提高開發效率,減少重複開發,我們必須使用 data-aware 樹型控制項。Developer Express inc. 的ExpressQuantumGrid Suite 中樹型控制項TdxDBTreeList 屬於 data-aware 型,items 不僅可以來自資料庫的關係表,而且可以為數組等其它資料來源。本文介紹了TdxDBTreeList 的使用方法和技巧,特別是由多關係表構成樹型結構的情況。
TdxDBTreeList 概述
Developer Express inc. 開發的The ExpressQuantumGrid Suite 包含三個功能強大的控制項,它們分別是:TdxTreeList 、 TdxDBTreeList 和 TdxDBGrid。TdxDBTreeList 直接繼承於 TCustomdxDBTreeListControl ,它是 data-aware 型的,不僅結合標準的樹型視圖和清單控制項的特性,而且具有獨特的特性:運行時列定製、一個樹結點內編輯任意列的能力和由dataset 產生樹結構。
使用該樹型控制項關鍵是設定屬性頁面中幾個重要的屬性,分別為:DataSource、KeyField、ParentField 和 Bands。其中 DataSource 為提供樹型結構的資料來源,可以為來自一個或若干個關係表的元組的集合,因此它是必須的且不為空白;KeyField 為 DataSource 的元組中唯一標識自身的關鍵碼;樹型控制項表示的是對象之間的層次關係,除樹根結點之外(最上層項目),每一個結點都有一個唯一的雙親結點(直接上層結點)。ParentField 即是元組中標識其雙親結點的 KeyField 。根結點的 ParentField 值必須不是 DataSource 代表的元組中 KeyField 值之一;Bands 控制樹型結構顯示的列數,通過它提供的 Add 方法增加合適的 Columns ,Columns 有兩個重要的屬性:Caption 和 FieldName 。Caption 可以設定樹型結構的標題,FieldName 代表 DataSource 的元組表示樹型結構項目的欄位。例如用如下的部門關係表作為 DataSource 形成樹型結構:
表1 unti 關係表
| UnitNo |
unitName |
superiorUnit |
| 0000 |
東南大學 |
-1 |
| 0001 |
電腦系 |
0000 |
| 000101 |
硬體教研室 |
0001 |
| 000102 |
軟體教研室 |
0001 |
| 0002 |
外語系 |
0000 |
| 000201 |
大外教研室 |
0002 |
| 000202 |
專外教研室 |
0002 |
其中,unitNo 表示部門號;unitName 部門名稱;superiorUnit 上層業務號。KeyField 設為unitNo;ParentField 設為 superiorUnit ;Bands 的一列 Columns 的 FieldName 設為 unitName 。這樣形成如圖1所示的樹型結構。
圖1 樹型結構樣本圖