国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

PB中TreeView控件使用技巧

2024-07-21 02:09:59
字體:
供稿:網(wǎng)友

 pb中treeview控件使用技巧
powerbuilder中的treeview 控件為樹狀游覽,類似于windows的資源管理器,其特點(diǎn)是信息項(xiàng)呈樹狀層次結(jié)構(gòu),能更清晰地表現(xiàn)主、細(xì)目關(guān)系 ,操作非常方便。在應(yīng)用中可將其與datawindow 配合使用, 一個(gè)提供信息的分類體系,一個(gè)提供具體信息,達(dá)到珠連碧合的奇妙效果。它特別適用于多級(jí)信息的分類檢索, 是多級(jí)菜單所無法比似的,它的表現(xiàn)形式深受程序設(shè)計(jì)人員和廣大用戶的喜愛,在許多應(yīng)用軟件中都能看到她的英姿。

  在powerbuilder下,treeview 控件的應(yīng)用較其它控件要復(fù)雜得多,剛接觸它時(shí)往往有些不知所措。但如果將它的機(jī)理搞清楚,掌握它也不是很難的事。下面我結(jié)合長白公司圖書分類檢索的實(shí)例,把treeview 控 件的使用方法和大家探討一下。

  一、應(yīng)用treeview 控件的一般步驟

  1、 建立一個(gè)應(yīng)用,并設(shè)好與數(shù)據(jù)庫的接口,這是操作數(shù)據(jù)庫的前提。

  2、 在應(yīng)用中建一應(yīng)用窗口w_1,在其上加入二個(gè)名為dw_3和dw_4的datawindow控制對(duì)象和一個(gè)名為tv_1的treeview對(duì)象。

  3、 修改dw_3屬性

  general:把datawindow object name填寫一個(gè)已存在的名為dw_date的datawindow(注意:它與datawindow控制對(duì)象是不同的),用于生成樹視圖項(xiàng),將其visible項(xiàng)設(shè)為不可見。

  4、 修改dw_4屬性

  general:把datawindow object name填寫一個(gè)已存在的名為dw_ts的datawindow對(duì)象,用于顯示查詢出的具體內(nèi)容。

  5、 編輯tv_1的屬性

  treeview的樹視圖項(xiàng)不能直接編輯,必須在script中編寫程序。

  picture:在picture name中加入四個(gè)不同的圖標(biāo),用于代表樹視圖中的兩個(gè)層次(一、二級(jí))、兩種狀態(tài)(未選、選中)。

  general:可根據(jù)具體應(yīng)用設(shè)定是否選中,其中:

  delete items:運(yùn)行中是否允許刪除表項(xiàng)。

  disable pragdrog: 運(yùn)行中是否允許拖放表項(xiàng)。

  edit labels: 運(yùn)行中是否允許單擊表項(xiàng)來改變表項(xiàng)的標(biāo)題。

  show buttons:是否在表項(xiàng)放顯示+-按鈕,有示相對(duì)的擴(kuò)展和收縮。

  hide selection:當(dāng)該控件失去焦點(diǎn)時(shí),選中項(xiàng)是否以高亮度顯示。

  show line:表項(xiàng)間是否加一豎線。

  lines at root:所有根層表項(xiàng)是否用豎線連接。

  indentation:子表項(xiàng)相對(duì)于父表項(xiàng)的向右縮進(jìn)度。

  6、 編寫tv_1的script

  這里是treeview控件的關(guān)鍵,也是難點(diǎn)。

  二、treeview 控件的信息構(gòu)成及創(chuàng)建

  樹視圖項(xiàng)treeviewitem是treeview 控件的基本信息單位,樹視圖項(xiàng)的生成一般有二種方法,一種是先生成根層視圖項(xiàng),再在應(yīng)用中動(dòng)態(tài)生成下級(jí)視圖項(xiàng),另一種是把全部樹視圖項(xiàng)一次和成。兩種方法各有優(yōu)點(diǎn),請根據(jù)具體情況選用,本例中采用后一種方法。

  1、 樹視圖項(xiàng)treeviewitem的主要屬性

  label:string 型,樹視圖項(xiàng)的顯示信息。

  data:any型,樹視圖項(xiàng)的內(nèi)部值。

  level:integer型,樹視圖項(xiàng)在樹視圖中級(jí)別。

  children:boolean 型,它決定該項(xiàng)是否有下一層(如圖中書名)。

  pictureindex:integer 型,該項(xiàng)非選中時(shí)所用的圖標(biāo)在圖標(biāo)隊(duì)列中的編號(hào)。

  selectedpictureindex:integer型,該項(xiàng)選中時(shí)所用的圖標(biāo)在圖標(biāo)隊(duì)列中的編號(hào)。

  2、 生成treeviewitem項(xiàng)用到的函數(shù)

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

  insertitemlast():將加入項(xiàng)作為最后一項(xiàng)

  insertitem():將加入項(xiàng)插入到指定項(xiàng)的后面

  insertitemsort():按順序放置。

  3、 treeview的常用事件

  constructor: 該事件在控件創(chuàng)建時(shí)觸發(fā),可在這里構(gòu)造treeviewitem。

  click:單擊treeviewitem項(xiàng)時(shí),執(zhí)行查詢程序。

  double click: 雙擊treeviewitem項(xiàng)時(shí),執(zhí)行查詢程序。

  itempopulate 事件: 該事件在某treeviewitem項(xiàng)首次展開時(shí)觸發(fā), 觸發(fā)的同時(shí)系統(tǒng)會(huì)將 該treeviewitem項(xiàng)的句柄通過參數(shù)handle 傳遞過來。它主要用來生成對(duì)應(yīng)項(xiàng)的下層信息項(xiàng)。主要用于第一種方法。

  三、 事件代碼

  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
//聲明二個(gè)樹視圖的實(shí)例變量
treeviewitem itvi_level_one,itvi_level_two
//long ii_h_l_one
//long ii_h_l_two
dw_3.settransobject(sqlca)//dw_3
為隱含的數(shù)據(jù)窗口,存有生成樹的數(shù)據(jù)
li_rowcount=dw_3.retrieve()//行數(shù)
dw_3.setsort("lb,pm")
dw_3.sort()
//生成樹視圖的各級(jí)樹視圖項(xiàng)
for li_row=1 to li_rowcount
li_current_dn=dw_3.object.lb[li_row]
//dw_3對(duì)象中"lb類別"
li_current_ei=dw_3.object.pm[li_row]
//dw_3對(duì)象中"pm品名"
if isnull (li_current_ei) then
li_current_ei=""
end if

if li_current_dn< >li_last_dn then
//if lb不與一級(jí)視圖項(xiàng)重復(fù)
//設(shè)置一級(jí)樹視圖項(xiàng)
itvi_level_one.label=dw_3.object.lb[li_row]
//視圖項(xiàng)的顯示信息
itvi_level_one.level=1 //級(jí)別
itvi_level_one.data=li_current_dn
//視圖項(xiàng)的內(nèi)部信息
itvi_level_one.pictureindex=1
//沒選中時(shí)所用的圖標(biāo)序號(hào)
itvi_level_one.selectedpictureindex=3
//選中時(shí)使用的圖標(biāo)序號(hào)
itvi_level_one.children=(li_current_ei< >' ')
//樹視圖是否有下一級(jí)
ii_h_l_one=this.insertitemlast(0,itvi_level_one)
//將項(xiàng)加入到一級(jí)樹的最后一項(xiàng)
end if
//設(shè)置二級(jí)樹視圖項(xiàng)
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)
//將項(xiàng)加入到二級(jí)樹的最后一項(xiàng)
end if
end if
li_last_dn=li_current_dn//設(shè)比較項(xiàng)
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

 
  • 本文來源于網(wǎng)頁設(shè)計(jì)愛好者web開發(fā)社區(qū)http://www.html.org.cn收集整理,歡迎訪問。
  • 發(fā)表評(píng)論 共有條評(píng)論
    用戶名: 密碼:
    驗(yàn)證碼: 匿名發(fā)表
    主站蜘蛛池模板: 华安县| 酒泉市| 上杭县| 徐汇区| 太保市| 阳新县| 壶关县| 三明市| 巢湖市| 宁化县| 芒康县| 蒙自县| 河池市| 南康市| 民乐县| 陆河县| 工布江达县| 沭阳县| 永善县| SHOW| 淮南市| 长顺县| 沁水县| 灌南县| 兰考县| 山阴县| 伊金霍洛旗| 西丰县| 信丰县| 九江市| 根河市| 涿鹿县| 军事| 社旗县| 突泉县| 平邑县| 京山县| 德兴市| 安阳市| 平邑县| 永清县|