亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

C++ Builder 初學問與答(六)

2019-11-17 05:05:57
字體:
來源:轉載
供稿:網友
  6.圖形列表組件TreeView
  45)問:有時侯,我希望實現類似資源治理器對文件夾治理的顯示方式,和對文件的治理顯示方式,在C++Builder中應該怎么辦?  答:在C++Builder中可以直接使用圖形列表組件來實現,它包括TreeView、ListView以及Outline組件。其中Outline組件實際上是基于Windows 3.1環境的組件,而且無論從功能還是使用的角度來看,它都無法與TreeView相比,因此完全可以用TreeView組件代替Outline。所以我將主要介紹前面兩種組件。這兩個組件都在頁Win32中。


C++ Builder 初學問與答(六)
  46)問:TreeView組件是一個怎樣的組件?  答:TreeView組件比較復雜,所以我們首先簡單地介紹一下這個組件的基本使用情況,然后再深入討論?! reeView組件采用了樹形結構,最典型的例子就是Windows 95的資源治理器,它用樹形結構顯示磁盤上的文件夾和文件。因此TreeView組件能夠清楚地顯示層次關系?! ?7)問:請給我演示一下怎樣在設計狀態編輯TreeView好嗎?  答:首先在窗體上放置一個TreeView組件,然后在對象編輯器中單擊屬性Items中的省略號按鈕,就會打開一個項目編輯器。C++ Builder 初學問與答(六)  TreeView組件的項目編輯器是一個在設計時專門增加、刪除節點和為節點賦予圖標的工具。從屏幕上可以看到,項目編輯器由項目組框和項目屬性組框組成。項目組框由一個項目列表框、按鈕New Item、按鈕New SubItem、按鈕Delete和按鈕Load組成。當你剛打開項目編輯器時,項目列表框是空的,New SubItem和Delete按鈕處于失效狀態?! №椖繉傩越M框由編輯框Text、編輯框Image Index、編輯框Selected Index和編輯框State Index組成?! №椖拷M框可以創建和刪除節點、子節點。假如要載入一個已經存在的TreeView節點,可以單擊按鈕Load。要創建一個新項目,單擊New Item,然后在文本編輯框中輸入新節點的標題。這時,New SubItem按鈕由失效變為有效,答應你在節點下再嵌套子節點。假如項目列表框中顯示了節點,那么Delete按鈕也會變的有效。你只要在項目列表框中選中這個節點然后單擊Delete按鈕,就可以刪除這個節點了?! ∫⒅氐氖牵杭偃鐒h除的節點還包括子節點,那么子節點也會被同時刪除?! №椖繉傩越M框主要是為當前選中的節點(或子節點)設置屬性的。其中編輯框Text可以修改節點的標題。假如要在不是當前被選中的節點的左邊顯示圖像,那么應該在編輯框Image Index中輸入圖像的索引號。要禁止顯示圖像可以把這個節點Image Index設置為缺省值-1?! 〖偃缫诒贿x中的節點的左邊顯示圖像,應該在編輯框Selected Index中指定圖像的索引號,索引號是從0開始的。要禁止顯示圖像可以把它設置為缺省值-1。   更多文章 更多內容請看C/C++技術專題專題,或   假如要在節點的左邊多顯示一個圖像,可以在編輯框State Index中輸入圖像的索引號。這個索引號代表Tree View組件中的StateImages屬性所表示的圖像列表的索引。要禁止顯示圖像可以把這個項目設置為缺省值-1。
  注重:Image Index與 Selected Index 使用的是Images指定的ImageList;而State Index使用的是StateImages 指定的ImageList?! ?8)問:TreeView的屬性太多了,我想問我一定要清楚哪些主要屬性?  答: Items : 該屬性包含TreeView組件中的所有節點,它是TtreeNodes的對象,在設計時,你可以使用項目編輯器來增加、刪除和修改節點。在運行期間,可以通過Items屬性訪問每一個節點,并且也能夠增加、刪除和修改節點。而每一個節點又都是一個TtreeNode對象。  AutoEWXPand:布爾類型。為true時,則當前被選擇的節點將自動擴展,沒有被選擇節點將自動折疊。缺省為false,這時擴展和折疊要用戶自己指定?! ragMode:其聲明為:_PRoperty TdragMode DragMode;這個屬性用來設置樹狀視圖的拖放模式。缺省為dmManual,用戶要拖放節點需要調用BeginDrag才能拖放。若設置為 dmAutomatic,則樹狀視圖將支持自動拖放,用戶可以把一個節點拖到另一個位置。  Images:用來設定TreeView中的不同節點的圖標?! tateImages:用不同的的圖像來表示節點的不同狀態?! ≡赥reeView組件中,每個節點除了可以有一個文字標題外,還可以附加圖標,這樣可以使用戶界面更加直觀。這兩個屬性就包含著節點所使用的圖標。  這兩個屬性都是TImageList的對象,所以假如要在TreeView組件中給節點添加圖標,就必須使用圖標列表組件給這兩個屬性賦值。假如在窗體中放置了圖標列表組件,那么單擊屬性Images中的下拉按鈕,就可以選取這個組件了。  ShowButtons屬性值為True時表示凡是有子節點的節點將自動具有擴展按鈕(即+號按鈕)和折疊按鈕(即減號按鈕),單擊它們就可以擴展和折疊節點。屬性值為False時,不顯示這兩個按鈕,缺省值為True?! howLines屬性用來確定是否顯示在節點和子節點之間的連線。缺省值為True。  ShowRoot屬性用來確定與頂層節點連線是否顯示。缺省值為True?! ideSelection屬性用來確定當輸入焦點從TreeView移動到其它控件上時,被選中的節點是否處于被選中狀態。當屬性值為True時,不再處于選中狀態。缺省值為True?! ndent屬性用來設置子節點與父節點之間縮進顯示的距離?! eadOnly用來確定用戶是否可以直接修改節點的標題。當屬性值為False時,表示可以修改。修改方法是,選中要修改的節點并單擊進入編輯狀態。缺省值為False。  SortType用來設置節點進行排序的方式。它有以下幾種取值:  stNone:不排序(缺省值);  stData:當節點所關聯的對象發生改變時重新排序;  stText:當節點的標簽發生變化時重新排序;  stBoth:當節點所關聯的對象或者節點的標簽發生改變時重新排序。  以上排序原則為在同一層的節點以標簽的字母順序排序?! ?更多文章 更多內容請看C/C++技術專題專題,或   此外,還有一些運行時態屬性?! opItem:這個屬性用來設置一個節點,這個節點將顯示在樹狀視圖的最上面。  RowSelcet:缺省為false。若設置為true,則表示當前選擇的節點所在的整行都將加亮顯示。當ShowLines設置為true時,這個屬性無效。
  Selected:用來返回當前選擇的節點?! ?9)問:屬性Images和StateImages有什么區別呢?  答:每一個節點可以有兩個附帶的圖標。一般情況下只需要顯示一個圖標,這時我們經常使用Images來指定圖標,也就是說給屬性Images賦予一個ImageList對象。假如某個節點要顯示兩個圖標,那么還需要給屬性StateImages賦予一個ImageList對象。然后給節點的屬性StateIndex指定圖標的索引號。具體的方法是在項目編輯器中,修改編輯框State Index的值。  其實在顯示一個圖標時,也可以使用屬性StateImages。但是使用Images屬性有一個優點,就是它可以為處于不同狀態的節點指定不同的圖標。例如在Windows 95的資源治理器中,被選中的節點顯示一個打開的文件夾,而沒有選中的節點顯示一個關閉的文件夾。要實現這一點很簡單,因為項目編輯器中的編輯框Image Index指定的圖標在節點未選中時顯示,而編輯框Seleted Index指定的圖像在節點選中時顯示?! ?0)問:請在前面設計的TreeView組件的基礎上,給TreeView組件中的節點增加圖標。好嗎?  答:好的,首先在窗體上放置兩個ImageList組件,這兩個組件將具有缺省的名字ImageList1和ImageList2?! ∑浯?、編輯ImageList組件:ImageList組件實際上是一個圖標列表,它可以包含大量的圖標,這些圖標的大小由屬性Width和Height確定,缺省值都是16?! mageList剛建立時不包含任何圖標,你需要把已創建好的圖標引入到ImageList中。這個工作可以通過ImageList編輯器完成?! ∮檬髽擞益I單擊ImageList組件,在快捷菜單中選擇ImageList Editor或雙擊一下該組件,就會出現下面這個編輯器。C++ Builder 初學問與答(六)  單擊Add按鈕,在彈出的Add Images對話框中選擇要引入的圖像文件,圖標就會出現在Images框內。從圖中可以看出,引入的圖標被自動賦予索引號?! 榱耸褂蒙系姆奖?,每一個圖標都有一個編號,這個編號就是這個圖標的索引號。假如要引用某個圖標,只需要使用它的索引號就可以了。  要注重的是:這個編輯器會自動把引入的圖像分解成16×16的圖標,之所以尺寸為16×16是因為ImageList的屬性Width和Height被設置成了16。假如圖標的尺寸不一樣,那么可以修改這兩個屬性,使其滿足圖標的要求?! ?更多文章 更多內容請看C/C++技術專題專題,或   然后、繼續用項目編輯器給節點增加圖標:我們已經在圖標列表組件中加入了兩個圖標,其索引號分別為0和1,接著可以使用項目編輯器給節點增加圖標。  再次打開項目編輯器,輸入所有節點。
  修改節點的ImageIndex, SelectedIndex屬性,      要注重的是,編輯框Image Index中的索引號是0,編輯框Selected Index中的索引號是1。也就是說,在選中或未選中狀態下,該節點顯示的圖標不同?! ⌒薷乃泄濣c的圖標索引號,使包含子節點的節點有兩種不同的圖標,而不含子節點的節點只有一種圖標,也就是編輯框Image Index和Selected Index的索引號相同?! ∽詈?,修改TreeView1組件的Images屬性,從下拉列表中選擇ImageList1組件?! 钠聊簧峡梢钥吹剑瑘D標已經出現在控件里面了。  51)問:那怎樣給節點增加第二個圖標呢?  答:要給節點增加第二個圖標,首先必須再創建一個圖標列表組件,然后把這個圖標列表賦值給TreeView組件的屬性StateImages。當然還要給這個圖標列表引入圖標?! ⊥瓿蛇@些工作后,我們就可以進入項目編輯器,選中要增加第二個圖標的節點,修改編輯框State Index中的索引號即可?! ?2)問:TreeView有哪些重要的函數呢?  答:AlphaSort:其聲明為:bool _fastcall AlphaSort(void);這個函數用來對所有的節點按標簽的字母順序排序。若排序成功,則返回true。  FullCollapse:其聲明為void _fastcall FullCollapse(void);這個函數的作用是折疊所有的節點,直到最頂層為止?! ullExpand:其聲明為 void _fastcall FullExpand(void);這個函數的作用是展開所有的節點,直到最底層為止。若ShowButtons屬性為true,則所有的“+”都會變成“-”?! etHitTestInfoAt:其聲明為THitTests _fastcall GetHitTestInfoAt(int X,int Y);這個函數返回指定點與樹狀視圖之間的位置關系。這個點的位置由參數X、Y確定。THitTests是個集合,它可能包含下面的元素:  HtAbove:在樹狀視圖的客戶區上方;  HtBelow:在樹狀視圖的客戶區下方;  HtNowhere:在樹狀視圖的客戶區內但在最后一個節點下面;  HtOnItem:在某個節點的標簽或者圖標上;  HtOnButton:在某個節點的左邊的圖標上;  HtOnIcon:在某個節點的圖標上;  HtOnIndent:在某個節點的縮進線上;  HtOnLabel:在某個節點的標簽上;  htOnRight:在某個節點的右邊;  htOnStateIcon:在某個節點的狀態圖標上;  htToLeft:在客戶區的右邊;  htToRight:在客戶區的的左邊?! etNodeAt:其聲明為TTreeNode*_fastcall GetNodeAt(int X,int Y);這個函數用來返回指定點所在的節點。參數X、Y為這個點的坐標。假如這個點沒有節點,則返回NULL。

更多文章 更多內容請看C/C++技術專題專題,或

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产一区二区三区高清在线观看| 国产欧美日韩专区发布| 亚洲精品一区中文| 久久伊人精品天天| 91禁外国网站| 日韩美女激情视频| 日韩av电影中文字幕| 日韩精品欧美国产精品忘忧草| 日本一区二区三区在线播放| 精品久久久精品| 96pao国产成视频永久免费| 国产国语videosex另类| 一区二区亚洲欧洲国产日韩| 久久中文字幕视频| 亚洲成人性视频| 91牛牛免费视频| 日韩av一区在线| 国产精品高潮视频| 欧美视频一二三| 日韩av在线免费| 色中色综合影院手机版在线观看| 日韩欧美精品免费在线| 欧美日韩亚洲91| 国产精品视频精品| 91久久精品久久国产性色也91| 国产免费一区二区三区香蕉精| 亚洲成人av在线| 成人免费高清完整版在线观看| 欧美精品久久久久久久| 国产精品av在线播放| 成人午夜黄色影院| 九九九热精品免费视频观看网站| 国产精品久久久久影院日本| 国产精品xxx视频| 日韩激情av在线播放| 福利二区91精品bt7086| 欧美视频不卡中文| 热久久免费国产视频| 日韩在线视频二区| 欧美另类69精品久久久久9999| 欧美另类99xxxxx| 国产69久久精品成人看| 综合久久五月天| 日韩有码在线视频| 青草青草久热精品视频在线网站| 久久综合亚洲社区| 亚洲精品福利免费在线观看| 中文字幕无线精品亚洲乱码一区| 欧美与黑人午夜性猛交久久久| 亚洲第一视频网| 中文字幕日韩在线播放| 久久亚洲国产成人| 九九热精品视频国产| 欧美视频在线看| 亚洲视频999| 亚洲综合精品一区二区| 国产亚洲欧美日韩一区二区| 国产手机视频精品| 日韩av色综合| 狠狠色香婷婷久久亚洲精品| 久久久免费精品视频| 欧美大人香蕉在线| 亚洲天堂成人在线| 欧美性猛交xxxx乱大交| 国产精品高潮呻吟久久av黑人| 亚洲精品成人网| 国产激情久久久久| 欧美三级xxx| 亚洲国产精品久久久久| 富二代精品短视频| 精品人伦一区二区三区蜜桃网站| 日本精品中文字幕| 亚洲男人天天操| 一区国产精品视频| 欧美成人免费全部观看天天性色| 欧美一级大片在线免费观看| 亚洲精选在线观看| 一区二区欧美日韩视频| 亚洲一区二区三区毛片| 日韩在线观看免费全| 日韩精品丝袜在线| 91超碰caoporn97人人| 97欧美精品一区二区三区| 亚洲最大成人网色| 成人福利免费观看| 91精品在线一区| 91久久嫩草影院一区二区| 55夜色66夜色国产精品视频| 久久99国产综合精品女同| 久久琪琪电影院| www.99久久热国产日韩欧美.com| 久久影视电视剧免费网站| 日本a级片电影一区二区| 国产成人精品视频在线| 九九精品在线视频| 91久久精品国产91久久| 亚洲风情亚aⅴ在线发布| 国产精品福利在线观看网址| 久久夜色精品国产| 亚洲成人国产精品| 亚洲人午夜色婷婷| 久久久久久久久久久网站| 日韩欧美中文字幕在线播放| 成人黄色免费网站在线观看| 亚洲男女性事视频| 日韩第一页在线| 久久人人爽人人爽人人片av高请| 亚洲精品久久在线| 91天堂在线视频| 日韩av中文字幕在线播放| 97精品伊人久久久大香线蕉| 亚洲欧美在线一区| 精品久久在线播放| 福利一区福利二区微拍刺激| 国产最新精品视频| 欧美日韩成人在线观看| 性色av香蕉一区二区| 精品久久中文字幕| 亚洲精品福利资源站| 亚洲精品自产拍| 97精品免费视频| 久久夜色精品国产| 国产成人精品av| 狠狠干狠狠久久| 欧美成人免费小视频| 亚洲欧洲偷拍精品| 日韩有码在线观看| 黑人巨大精品欧美一区二区三区| 欧美极品在线视频| 亚洲人午夜色婷婷| 青青久久aⅴ北条麻妃| 这里只有精品视频在线| 中文字幕亚洲综合久久筱田步美| 久久91精品国产| 欧美精品一区二区免费| 九九精品在线播放| 成人免费看吃奶视频网站| 亚洲精品免费一区二区三区| 97精品久久久中文字幕免费| 爱福利视频一区| 日韩av网站导航| 97在线视频国产| 国产精品爱久久久久久久| 视频一区视频二区国产精品| 久久精品视频在线播放| 国产精品视频区| 欧美做受高潮电影o| 国产xxx69麻豆国语对白| 日韩在线免费av| 亚洲区中文字幕| 欧美一级淫片aaaaaaa视频| 日韩在线高清视频| 欧美wwwwww| 日韩高清中文字幕| 久久91超碰青草是什么| 国产精品旅馆在线| 国产午夜精品视频免费不卡69堂| 亚洲第一av在线| 欧美精品激情blacked18| 国产剧情久久久久久| 91av视频导航| 日韩美女av在线| 成人伊人精品色xxxx视频| 国产欧美久久一区二区|