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

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

為PB的TreeView完成同步選擇

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

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

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

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

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)檢測節點的選擇狀態, 如果發生了變化則調用ue_synchronizechildren同步后代節點,并根據需要通過ue_synchronizeparent同步祖先節點。代碼如下:

treeviewitem tvitem

getitem(handle, tvitem)

if tvitem.statepictureindex=prevstate then

  return

else

  this.Event ue_synchronizechildren(handle, tvitem.statepictureindex)

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

           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)

       為了簡單起見,上面的代碼并沒有考慮當選上一個結點時,它的所有兄弟已被選擇,因此父結點也應該被選擇的情況,如有需要,請讀者自己完成。


主站蜘蛛池模板: 亚洲欧美国产精品 | 五月婷婷精品 | 欧美一级特黄aaaaaa在线看片 | 日本在线日本中文字幕日本在线视频播放 | 手机在线毛片免费播放 | 亚洲精品在线观看91 | 日本免费网站在线观看 | 亚洲天天 | 在线不卡一区二区三区日韩 | 日韩 欧美 国产 亚洲 中文 | 四虎成人4hutv影院 | 色天使在线播放 | 色偷偷亚洲女性天堂 | 午夜免费啪视频观看网站 | 欧美一区二区三区免费观看视频 | 日日淫 | 偷自视频区视频真实在线 | 一级做a爰片性色毛片小说 一级做a爰片性色毛片思念网 | 全部免费特黄特色大片视频 | 日日摸夜夜摸狠狠摸日日碰夜夜做 | 色噜噜狠狠狠狠色综合久不 | 日本网站在线播放 | 在线97 | 天天干天天操天天拍 | 日本大片a | 日本深夜福利视频 | 在线视频一区二区三区 | 我要操影院 | 欧美又粗又大又长 | 伊伊人成亚洲综合人网香 | 婷婷综合亚洲 | 欧洲性生活视频 | 四虎影院免费在线 | 欧美专区欧美吧 | 亚洲精品色婷婷在线影院麻豆 | 日韩毛片免费线上观看 | 日本大片在线 | 青青草久久 | 日本欧美特黄特色大片 | 在线观看视频污 | 四虎影视在永久在线观看 2019 |