六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

為PB的TreeView完成同步選擇

[摘要]廣州中山大學(xué)信息管理系2001級(jí) 梁冠超(510275)TreeView控件能夠清晰地表示層次關(guān)系,因而贏得了眾多程序員的喜愛。在TreeView編程中,常見的一個(gè)問題是同步選擇(即選擇一個(gè)節(jié)點(diǎn)時(shí),同時(shí)選擇該節(jié)點(diǎn)的所有子節(jié)點(diǎn);不選一個(gè)節(jié)點(diǎn),同時(shí)去除該節(jié)點(diǎn)的祖先節(jié)點(diǎn)選擇標(biāo)志)。要實(shí)現(xiàn)這種效果,本來不...
廣州中山大學(xué)信息管理系2001級(jí) 梁冠超(510275)

TreeView控件能夠清晰地表示層次關(guān)系,因而贏得了眾多程序員的喜愛。在TreeView編程中,常見的一個(gè)問題是同步選擇(即選擇一個(gè)節(jié)點(diǎn)時(shí),同時(shí)選擇該節(jié)點(diǎn)的所有子節(jié)點(diǎn);不選一個(gè)節(jié)點(diǎn),同時(shí)去除該節(jié)點(diǎn)的祖先節(jié)點(diǎn)選擇標(biāo)志)。

要實(shí)現(xiàn)這種效果,本來不難,只需要在檢測(cè)到節(jié)點(diǎn)選擇狀態(tài)變化時(shí),遍歷節(jié)點(diǎn)的祖先或者后代節(jié)點(diǎn)進(jìn)行同步即可。但是PB并沒有提供檢測(cè)節(jié)點(diǎn)選擇狀態(tài)變化的事件。怎么辦呢?

讓我們來看看PB中TreeView節(jié)點(diǎn)選擇狀態(tài)的表示。當(dāng)TreeView的CheckBoxes屬性為True時(shí),每個(gè)節(jié)點(diǎn)包含一個(gè)復(fù)選框。選中復(fù)選框時(shí),StatePictureIndex屬性為2,未選中則為1。當(dāng)選擇某個(gè)節(jié)點(diǎn)時(shí),首先觸發(fā)TreeView的Clicked事件,處理完Clicked事件后再對(duì)StatePictureIndex進(jìn)行設(shè)置。顯然,如果我們能夠?qū)licked事件前后節(jié)點(diǎn)的StatePictureIndex屬性值進(jìn)行比較,我們就可以判斷節(jié)點(diǎn)的選擇狀態(tài)是否發(fā)生了變化。按照這個(gè)思路,疏理PB的事件模型,發(fā)現(xiàn)采用Post的調(diào)用事件方法,可以實(shí)現(xiàn)將一個(gè)事件加入控件消息序列,在處理完當(dāng)前事件后再對(duì)新加入的事件進(jìn)行處理。至此,我們得到了如下的解決方案:

1.       為TreeView控件添加一個(gè)用戶事件ue_synchronizechildren(long handle, integer state),代碼如下:

long childitem

treeviewitem tvitem

getitem(handle, tvitem)

tvitem.statepictureindex=state

setitem(handle, tvitem)

childitem=this.finditem(ChildTreeItem!, handle)

do while(childitem<>-1)

    this.Event ue_synchronizechildren(childitem, state) //遞歸遍歷后代結(jié)點(diǎn)

    childitem=this.finditem(NextTreeItem!, childitem)

loop

添加一個(gè)用戶事件ue_synchronizeparent(long handle, integer state),如下:

long parentitem

treeviewitem tvitem

getitem(handle, tvitem)

tvitem.statepictureindex=state

setitem(handle, tvitem)

parentitem=this.finditem(ParentTreeItem!, handle)

if parentitem<>-1 then

this.Event ue_synchronizeparent(parentitem, state)

      end if

2.       添加一個(gè)用戶事件ue_statechanged(long handle, integer prevstate)檢測(cè)節(jié)點(diǎn)的選擇狀態(tài), 如果發(fā)生了變化則調(diào)用ue_synchronizechildren同步后代節(jié)點(diǎn),并根據(jù)需要通過ue_synchronizeparent同步祖先節(jié)點(diǎn)。代碼如下:

treeviewitem tvitem

getitem(handle, tvitem)

if tvitem.statepictureindex=prevstate then

  return

else

  this.Event ue_synchronizechildren(handle, tvitem.statepictureindex)

    if tvitem.statepictureindex=1 then //如需實(shí)現(xiàn)文末提及的功能,可在此處添加代碼。

           this.Event ue_synchronizeparent(handle, tvitem.statepictureindex)

    end if

end if





3.       在Clicked事件中,添加如下調(diào)用:

treeviewitem tvitem

getitem(handle, tvitem)

post event ue_statechanged(handle, tvitem.statepictureindex)

       為了簡(jiǎn)單起見,上面的代碼并沒有考慮當(dāng)選上一個(gè)結(jié)點(diǎn)時(shí),它的所有兄弟已被選擇,因此父結(jié)點(diǎn)也應(yīng)該被選擇的情況,如有需要,請(qǐng)讀者自己完成。


主站蜘蛛池模板: 伊人影片| 亚洲精品网站在线 | 手机看片福利在线 | 一级做a爱片性色毛片武则天五则 | 日韩毛片大全免费高清 | 日本大片成人免费网址 | 日本高清免费在线观看 | 色综合久久久久久久久久久 | 啪视频免费 | 网站在线观看 | 中文字幕日韩在线一区国内 | 婷婷激情狠狠综合五月 | 日日骑夜夜操 | 我看黄色一级片 | 天天舔天天射天天干 | 日本在线免费观看视频 | 日日摸夜夜添夜夜添影院视频 | 亚洲精品第一页中文字幕 | 日本xx高清视频免费观看 | 欧美一级黄色片免费看 | 欧美亚洲一区 | 一区在线观看 | 中文字幕在线播放第一页 | 天天射天天干天天 | 中文字幕在线免费观看 | 四虎在线观看一区二区 | 日韩三级黄色片 | 天堂w | 婷婷激情五月综合 | 四虎永久在线观看视频精品 | 欧美综合亚洲图片综合区 | 四虎在线永久免费视频网站 | 亚洲影院国产 | 日韩精品免费在线观看 | 五月综合激情 | 日本国产中文字幕 | 天堂资源在线8 | 一二三四影视在线观看免费视频 | 囗交交性网免费 | 又大又硬又爽免费视频 | 五月婷婷啪啪 |