PB中TreeView控制項使用技巧

2021-08-31 02:02:52 字數 4436 閱讀 9460

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!

powerbuilder中的treeview 控制項為樹狀遊覽,類似於windows的資源管理器,其特點是資訊項呈樹狀層次結構,能更清晰地表現主、細目關係 ,操作非常方便。在應用中可將其與datawindow 配合使用, 乙個提供資訊的分類體系,乙個提供具體資訊,達到珠連碧合的奇妙效果。它特別適用於多級資訊的分類檢索, 是多級選單所無法比似的,它的表現形式深受程式設計人員和廣大使用者的喜愛,在許多應用軟體中都能看到她的英姿。

在powerbuilder下,treeview 控制項的應用較其它控制項要複雜得多,剛接觸它時往往有些不知所措。但如果將它的機理搞清楚,掌握它也不是很難的事。下面我結合長白公司圖書分類檢索的例項,把treeview 控 件的使用方法和大家**一下。

一、應用treeview 控制項的一般步驟

1、 建立乙個應用,並設好與資料庫的介面,這是運算元據庫的前提。

2、 在應用中建一應用視窗w_1,在其上加入二個名為dw_3和dw_4的datawindow控制物件和乙個名為tv_1的treeview物件。

3、 修改dw_3屬性

general:把datawindow object name填寫乙個已存在的名為dw_date的datawindow(注意:它與datawindow控制物件是不同的),用於生成樹檢視項,將其visible項設為不可見。

4、 修改dw_4屬性

general:把datawindow object name填寫乙個已存在的名為dw_ts的datawindow物件,用於顯示查詢出的具體內容。

5、 編輯tv_1的屬性

treeview的樹檢視項不能直接編輯,必須在script中編寫程式。

picture:在picture name中加入四個不同的圖示,用於代表樹檢視中的兩個層次(一、二級)、兩種狀態(未選、選中)。

general:可根據具體應用設定是否選中,其中:

delete items:執行中是否允許刪除表項。

disable pragdrog: 執行中是否允許拖放表項。

edit labels: 執行中是否允許單擊表項來改變表項的標題。

show buttons:是否在表項放顯示+-按鈕,有示相對的擴充套件和收縮。

hide selection:當該控制項失去焦點時,選中項是否以高亮度顯示。

show line:表項間是否加一豎線。

lines at root:所有根層表項是否用豎線連線。

indentation:子表項相對于父表項的向右縮進度。

6、 編寫tv_1的script

這裡是treeview控制項的關鍵,也是難點。

二、treeview 控制項的資訊構成及建立

樹檢視項treeviewitem是treeview 控制項的基本資訊單位,樹檢視項的生成一般有二種方法,一種是先生成根層檢視項,再在應用中動態生成下級檢視項,另一種是把全部樹檢視項一次和成。兩種方法各有優點,請根據具體情況選用,本例中採用後一種方法。

1、 樹檢視項treeviewitem的主要屬性

label:string 型,樹檢視項的顯示資訊。

data:any型,樹檢視項的內部值。

level:integer型,樹檢視項在樹檢視中級別。

pictureindex:integer 型,該項非選中時所用的圖示在圖示佇列中的編號。

selectedpictureindex:integer型,該項選中時所用的圖示在圖示佇列中的編號。

2、 生成treeviewitem項用到的函式

insertitemfirst():將加入項作為第一項

insertitemlast():將加入項作為最後一項

insertitem():將加入項插入到指定項的後面

insertitemsort():按順序放置。

3、 treeview的常用事件

constructor: 該事件在控制項建立時觸發,可在這裡構造treeviewitem。

click:單擊treeviewitem項時,執行查詢程式。

double click: 雙擊treeviewitem項時,執行查詢程式。

itempopulate 事件: 該事件在某treeviewitem項首次展開時觸發, 觸發的同時系統會將 該treeviewitem項的控制代碼通過引數handle 傳遞過來。它主要用來生成對應項的下層資訊項。主要用於第一種方法。

三、 事件**

1、樹檢視控制項tv_1的constructor事件** wanqi 1999.6.28

integer li_rowcount,li_row

string li_current_dn,li_last_dn,li_current_ei,li_last_ei

//宣告二個樹檢視的例項變數

treeviewitem itvi_level_one,itvi_level_two

//long ii_h_l_one

//long ii_h_l_two

dw_3.settransobject(sqlca)//dw_3

為隱含的資料視窗,存有生成樹的資料

li_rowcount=dw_3.retrieve()//行數

dw_3.setsort("lb,pm")

dw_3.sort()

//生成樹檢視的各級樹檢視項

for li_row=1 to li_rowcount

li_current_dn=dw_3.object.lb[li_row]

//dw_3物件中"lb類別"

li_current_ei=dw_3.object.pm[li_row]

//dw_3物件中"pm品名"

if isnull (li_current_ei) then

li_current_ei=""

end if

if li_current_dn< >li_last_dn then

//if lb不與一級檢視項重複

//設定一級樹檢視項

itvi_level_one.label=dw_3.object.lb[li_row]

//檢視項的顯示資訊

itvi_level_one.level=1 //級別

itvi_level_one.data=li_current_dn

//檢視項的內部資訊

itvi_level_one.pictureindex=1

//沒選中時所用的圖示序號

itvi_level_one.selectedpictureindex=3

//選中時使用的圖示序號

itvi_level_one.children=(li_current_ei< >' ')

//樹檢視是否有下一級

ii_h_l_one=this.insertitemlast(0,itvi_level_one)

//將項加入到一級樹的最後一項

end if

//設定二級樹檢視項

if li_current_dn< >li_last_ei then

if li_current_ei<>' ' then

itvi_level_two.label=dw_3.object.pm[li_row]

itvi_level_two.level=2

itvi_level_two.data=li_current_dn

itvi_level_two.pictureindex=2

itvi_level_two.selectedpictureindex=4

itvi_level_two.data=li_current_ei

itvi_level_two.children=false

ii_h_l_two=this.insertitemlast

(ii_h_l_one,itvi_level_two)

//將項加入到二級樹的最後一項

end if

end if

li_last_dn=li_current_dn//設比較項

li_last_ei=li_current_ei

next

2、tv_1控制項的clicked事件**

string s1

treeviewitem ii

this.getitem(handle,ii)

s1=string(ii.label)

choose case ii.level

case 1

//過濾類別

dw_4.setfilter("lb='"+s1+"'")

dw_4.filter()

case 2

dw_4.setfilter("pm='"+s1+"'")

dw_4.filter()

//過濾書名

end choose

給我老師的人工智慧教程打call!

PB中TreeView控制項使用技巧

powerbuilder中的treeview 控制項為樹狀遊覽,類似於windows的資源管理器,其特點是資訊項呈樹狀層次結構,能更清晰地表現主 細目關係 操作非常方便。在應用中可將其與datawindow 配合使用,乙個提供資訊的分類體系,乙個提供具體資訊,達到珠連碧合的奇妙效果。它特別適用於多級...

使用WinFrom控制項 TreeView

使用winfrom控制項 treeview 為了後續課程的學習,今天老師講了乙個新的控制項 treeview,說實話,上課真的沒聽明白,回家看了一晚上才弄懂,哎,我太愚鈍了.定義乙個 treeview控制項命名為tv private void frmtreeview load object send...

TreeView控制項的使用

treeview.nodes.add 新增節點的字串 treeview.selectednode.nodes.add 新增字串 treeview.selectednode.remove treeview控制項使用 在產品類別管理,部門管理等樹狀多級選單中的應用,主要把樹控制項中資料表儲存到sql資料...