999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

TreeView在借書管理系統中的實現與應用

2013-12-29 00:00:00周小平
考試周刊 2013年36期

摘 要: 文章介紹了樹形視圖控件(也稱為樹狀瀏覽控件)的常用事件、常用函數及使用的具體步驟,并以借書管理系統為例,詳細地介紹了樹形視圖的具體實現與應用。通過靈活使用樹形視圖控件,在PB開發中,可以使應用程序的功能更加強大,更加直觀地表示數據項。

關鍵詞: PowerBuilder 樹型視圖控件 數據窗口

1.引言

PowerBuilder是一款優秀的企業級數據庫前端應用開發工具,它提供簡潔友好的用戶界面、功能強大的數據窗口技術和性能優越的數據庫訪問能力,所以受到很多程序開發人員的喜愛,是當前流行的數據庫前端開發工具之一。而在PowerBuilder的眾多控件之中,樹形視圖控件能直觀地表示數據項,所以在開發各種管理系統時,經常會用到這種控件,但是這種控件使用時比較復雜,故本文在介紹樹形視圖的常用事件、常用函數及使用方法之后,通過具體的實例進行講解。

2.樹形視圖簡介

如果你想顯示具有層次關系的數據,那么樹形視圖控件是最適合的控件。它就像Windows系統中的資源管理器,通過資源管理器,可以在左邊的列表中以層次結構列出驅動器、目錄及子目錄,而用戶可以通過單擊層次結構中的加號(+)、減號(-)展開或者折疊目錄。要想管理大量數據,樹形視圖是最好的工具,因為用戶只需要簡單地單擊鼠標左鍵就可以選擇自己想要的數據,這種表示方法使用戶一目了然。

在PowerBuilder中,樹形視圖(TreeView)和樹形視圖項(TreeViewItem)是樹狀瀏覽控件的兩個對象。其中樹型視圖對象可以在窗口畫筆中通過點擊鼠標的方式創建,而樹型視圖項則必須通過編程來聲明及定義它們的屬性[1]。樹狀瀏覽控件的常規屬性很多課本都有介紹,在此不再贅述。下面介紹它的常用事件和常用函數。

2.1常用事件

Constructor(構造事件):在控件創建時觸發該事件,一般在構造事件里構造樹視圖項。

Click(單擊事件):單擊樹視圖項時,執行查詢程序。

2.2常用函數[1]

Insert Item First ( ): 將加入項作為第一個子項;

Insert Item Last ( ): 將加入項作為最后一個子項;

Insert Item( ) :將加入項放在指定的子項后面;

InsertI tem Sort ( ) :按排序的順序放置加入項。

3.樹形視圖的使用步驟

第一步,添加TreeView控件,設置該控件的常規屬性。

第二步,編寫事件處理程序為樹瀏覽控件添加樹視圖項。在添加樹視圖項時,有兩種方法:第一種方法是一次性地向樹形視圖控件添加全部層次的項目。第二種方法是先添加所需層次的項目,而其他項目在需要時再進行添加。

(注意:要正確地運行,就必須建立數據庫,設置好數據源,而且能連接數據庫。通常連接數據庫的代碼是放在應用程序里的。)

4.樹形視圖使用實例

下面以借書管理系統為例,先建立圖書信息數據庫,該庫中包含圖書信息表。圖書信息表包含圖書編號(bookid)、圖書類型(typeid)、圖書名稱(title)、作者(author)等字段。該表中的每本書都對應到樹中的一個節點。樹形視圖控件跟數據窗口控件一起使用更加能體現出數據的層次性,適用于大量數據的管理。故在此,我們新建一個應用程序book,并新建一個窗口w_tree、數據窗口dw_book和dw_tree。數據窗口dw_book的數據列為圖書信息表中的所有列,數據窗口dw_tree的數據列為圖書信息表中的圖書編號和圖書類型列。窗口w_tree中包含一個樹狀瀏覽控件和一個數據窗口控件。數據窗口控件用來顯示圖書的信息,其dataobject=“dw_book”。為樹狀瀏覽控件設置好常規屬性后,就可以編寫事件程序代碼了。

在樹形視圖控件中,樹形視圖項是非常重要,也是很關鍵的,它是在程序中逐項加入的,可以用InsertItem()系列函數中的其中一種將樹形視圖項加入到樹形視圖中。在將樹形視圖項加入到樹形視圖時,本文分別使用了三種方法:第一種方法是采用直接插入的方法加入根節點;第二種方法是采用游標插入第二層;第三種方法是通過數據存儲插入第三層。下面介紹事件處理程序代碼:

首先,在窗口的OPEN()中添加以下代碼:

dw_1.settransobject(sqlca)

dw_1.retrieve()

其次,在樹控件tv_1的構造事件中添加如下代碼:

TreeViewItem t_node // 定義樹視圖項目 對象

integer lev0,lev1,lev2,rc,i // lev0第一層,lev1第二層,rc行數,

string c_typeid,s_id,s_typeid

//數據存儲

datastore ds

ds=create datastore

ds.dataobject="dw_tree"

ds.settransobject(sqlca)

ds.retrieve()

rc=ds.rowcount() //總行數

//插入第一層:根節點(直接插入)

t_node.label="圖書編碼"

lev0=tv_1.insertitemfirst(0,t_node)

//游標

declare c cursor for select distinct typeid from bookinfo; //聲明游標

open c; //打開游標

fetch c into :c_typeid; //使用游標

do while sqlca.sqlcode=0

//插入第二層:類型 (通過游標插入)

t_node.label=c_typeid

lev1=tv_1.insertitemlast(lev0,t_node)

//插入第三層:編號 (通過數據存儲插入)

for i=1 to rc

s_typeid=ds.getitemstring(i,"typeid") // 圖書類型

s_id=ds.getitemstring(i,"bookid") // 圖書編號

if s_typeid=c_typeid then

t_node.label=s_id

lev2=tv_1.insertitemlast(lev1,t_node)

end if

next

fetch c into :c_typeid; // 通過游標取下一個類型的值

loop

tv_1.expanditem(lev0) //展開第一層下的節點

close c; // 關閉游標

destroy ds; // 銷毀數據存儲ds, 釋放空間

最后,在樹狀瀏覽控件的click事件中編寫如下代碼:

TreeViewItem t_node

string str

integer lev

this.getitem(handle,t_node) //得到樹控件點擊項

lev=t_node.level //獲得點擊項的層次

str=t_node.label //獲得節點名稱

choose case lev

case 1 // 點擊項為第一層,顯示所有的信息

dw_1.setfilter("typeid like '%'")

dw_1.filter()

case 2 // 點擊項為第二層,顯示該層下所有的信息

dw_1.setfilter("typeid='"+str+"'")

dw_1.filter()

dw_1.setsort("bookid A")

dw_1.sort()

case 3 // 點擊項為第三層,顯示該層下所有的信息

dw_1.setfilter("bookid=?耷?謖"+str+"?謖"?謖)

dw_1.filter()

end choose

5.結語

PowerBuilder是一款優秀的企業級數據庫前端應用開發工具,是當前最流行的數據庫前端開發工具之一。在PB中,樹狀瀏覽控件能夠很好地體現出數據間的層次關系,靈活地使用樹狀瀏覽控件會使程序界面更加美觀。本文在介紹了樹狀瀏覽控件的常用事件、常用函數及使用方法的基礎上,以借書管理系統為例,詳細地介紹了樹形視圖的具體實現與應用。

參考文獻:

[1]周詠梅.PB中樹形視圖的實現與數據庫表結構的設計.軟件技術,2004.

[2]樊金生,張翠肖.PowerBuilder 10.5實用教程.科學出版社.

主站蜘蛛池模板: 久久精品人人做人人综合试看 | 色偷偷男人的天堂亚洲av| 色婷婷成人网| 91在线国内在线播放老师| 视频一本大道香蕉久在线播放| 免费观看成人久久网免费观看| 免费不卡在线观看av| 国产亚洲欧美在线专区| 免费av一区二区三区在线| 午夜视频在线观看免费网站| 在线欧美日韩| 国产成人区在线观看视频| 国产视频一二三区| 中文字幕 欧美日韩| 国产一级毛片在线| 欧美va亚洲va香蕉在线| 国产在线视频二区| 免费一级α片在线观看| 日韩毛片在线视频| 999精品视频在线| 99福利视频导航| 亚洲综合婷婷激情| 亚洲熟女中文字幕男人总站| 欧美国产视频| 99热这里只有精品在线播放| 国产91在线|中文| 97人人模人人爽人人喊小说| 欧美日韩一区二区三| 免费99精品国产自在现线| 一级爆乳无码av| 国语少妇高潮| 熟女成人国产精品视频| 中文字幕人成乱码熟女免费| 婷婷中文在线| 麻豆精品在线播放| 干中文字幕| 成人国产精品一级毛片天堂| 一级毛片中文字幕| 国产手机在线观看| 福利一区三区| 91久久偷偷做嫩草影院电| 婷婷99视频精品全部在线观看| 免费一级成人毛片| 久久99国产综合精品1| 热久久综合这里只有精品电影| 免费无码AV片在线观看中文| 久久黄色视频影| 久久这里只精品热免费99| 久久久久久久久18禁秘| 亚洲中文字幕久久无码精品A| www精品久久| 99手机在线视频| 精品91视频| 综合天天色| 欧美曰批视频免费播放免费| 亚洲欧美成人影院| 亚洲大尺度在线| 欧美亚洲国产一区| 88av在线| 又黄又湿又爽的视频| 欧美激情视频一区| 制服丝袜一区| 亚洲精品福利视频| 久久这里只有精品66| 欧美亚洲第一页| 亚洲三级成人| 最新午夜男女福利片视频| 在线永久免费观看的毛片| 在线观看亚洲国产| 亚洲男人的天堂在线观看| 国产精品乱偷免费视频| 亚洲最大福利视频网| 性视频久久| 超清无码熟妇人妻AV在线绿巨人| 国产成人高清亚洲一区久久| 99久久国产综合精品女同| 久无码久无码av无码| 伊人色综合久久天天| 蜜桃臀无码内射一区二区三区| 久草视频精品| 91人妻日韩人妻无码专区精品| 2020久久国产综合精品swag|