日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 芯聞號 > 充電吧
[導讀]TreeView控件能夠清晰地表示層次關系,因而贏得了眾多程序員的喜愛。在TreeView編程中,常見的一個問題是同步選擇(即選擇一個節(jié)點時,同時選擇該節(jié)點的所有子節(jié)點;不選一個節(jié)點,同時去除該節(jié)點的

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

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

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

1.???????為TreeView控件添加一個用戶事件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) //遞歸遍歷后代結點

????childitem=this.finditem(NextTreeItem!, childitem)

loop

添加一個用戶事件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.???????添加一個用戶事件ue_statechanged(long handle, integer prevstate)檢測節(jié)點的選擇狀態(tài), 如果發(fā)生了變化則調用ue_synchronizechildren同步后代節(jié)點,并根據需要通過ue_synchronizeparent同步祖先節(jié)點。代碼如下:

treeviewitem tvitem

getitem(handle, tvitem)

if tvitem.statepictureindex=prevstate then

??return

else

??this.Event ue_synchronizechildren(handle, tvitem.statepictureindex)

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

???????????this.Event ue_synchronizeparent(handle, tvitem.statepictureindex)

????end if

end if

3.???????在Clicked事件中,添加如下調用:

treeviewitem tvitem

getitem(handle, tvitem)

post event ue_statechanged(handle, tvitem.statepictureindex)

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關閉