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

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

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

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


C++ Builder 初學(xué)問與答(六)
  46)問:TreeView組件是一個怎樣的組件?  答:TreeView組件比較復(fù)雜,所以我們首先簡單地介紹一下這個組件的基本使用情況,然后再深入討論。  TreeView組件采用了樹形結(jié)構(gòu),最典型的例子就是Windows 95的資源治理器,它用樹形結(jié)構(gòu)顯示磁盤上的文件夾和文件。因此TreeView組件能夠清楚地顯示層次關(guān)系。  47)問:請給我演示一下怎樣在設(shè)計狀態(tài)編輯TreeView好嗎?  答:首先在窗體上放置一個TreeView組件,然后在對象編輯器中單擊屬性Items中的省略號按鈕,就會打開一個項目編輯器。C++ Builder 初學(xué)問與答(六)  TreeView組件的項目編輯器是一個在設(shè)計時專門增加、刪除節(jié)點和為節(jié)點賦予圖標(biāo)的工具。從屏幕上可以看到,項目編輯器由項目組框和項目屬性組框組成。項目組框由一個項目列表框、按鈕New Item、按鈕New SubItem、按鈕Delete和按鈕Load組成。當(dāng)你剛打開項目編輯器時,項目列表框是空的,New SubItem和Delete按鈕處于失效狀態(tài)。  項目屬性組框由編輯框Text、編輯框Image Index、編輯框Selected Index和編輯框State Index組成。  項目組框可以創(chuàng)建和刪除節(jié)點、子節(jié)點。假如要載入一個已經(jīng)存在的TreeView節(jié)點,可以單擊按鈕Load。要創(chuàng)建一個新項目,單擊New Item,然后在文本編輯框中輸入新節(jié)點的標(biāo)題。這時,New SubItem按鈕由失效變?yōu)橛行В饝?yīng)你在節(jié)點下再嵌套子節(jié)點。假如項目列表框中顯示了節(jié)點,那么Delete按鈕也會變的有效。你只要在項目列表框中選中這個節(jié)點然后單擊Delete按鈕,就可以刪除這個節(jié)點了。  要注重的是:假如刪除的節(jié)點還包括子節(jié)點,那么子節(jié)點也會被同時刪除。  項目屬性組框主要是為當(dāng)前選中的節(jié)點(或子節(jié)點)設(shè)置屬性的。其中編輯框Text可以修改節(jié)點的標(biāo)題。假如要在不是當(dāng)前被選中的節(jié)點的左邊顯示圖像,那么應(yīng)該在編輯框Image Index中輸入圖像的索引號。要禁止顯示圖像可以把這個節(jié)點Image Index設(shè)置為缺省值-1。  假如要在被選中的節(jié)點的左邊顯示圖像,應(yīng)該在編輯框Selected Index中指定圖像的索引號,索引號是從0開始的。要禁止顯示圖像可以把它設(shè)置為缺省值-1。   更多文章 更多內(nèi)容請看C/C++技術(shù)專題專題,或   假如要在節(jié)點的左邊多顯示一個圖像,可以在編輯框State Index中輸入圖像的索引號。這個索引號代表Tree View組件中的StateImages屬性所表示的圖像列表的索引。要禁止顯示圖像可以把這個項目設(shè)置為缺省值-1。
  注重:Image Index與 Selected Index 使用的是Images指定的ImageList;而State Index使用的是StateImages 指定的ImageList。  48)問:TreeView的屬性太多了,我想問我一定要清楚哪些主要屬性?  答: Items : 該屬性包含TreeView組件中的所有節(jié)點,它是TtreeNodes的對象,在設(shè)計時,你可以使用項目編輯器來增加、刪除和修改節(jié)點。在運行期間,可以通過Items屬性訪問每一個節(jié)點,并且也能夠增加、刪除和修改節(jié)點。而每一個節(jié)點又都是一個TtreeNode對象。  AutoEWXPand:布爾類型。為true時,則當(dāng)前被選擇的節(jié)點將自動擴展,沒有被選擇節(jié)點將自動折疊。缺省為false,這時擴展和折疊要用戶自己指定。  DragMode:其聲明為:_PRoperty TdragMode DragMode;這個屬性用來設(shè)置樹狀視圖的拖放模式。缺省為dmManual,用戶要拖放節(jié)點需要調(diào)用BeginDrag才能拖放。若設(shè)置為 dmAutomatic,則樹狀視圖將支持自動拖放,用戶可以把一個節(jié)點拖到另一個位置。  Images:用來設(shè)定TreeView中的不同節(jié)點的圖標(biāo)。  StateImages:用不同的的圖像來表示節(jié)點的不同狀態(tài)。  在TreeView組件中,每個節(jié)點除了可以有一個文字標(biāo)題外,還可以附加圖標(biāo),這樣可以使用戶界面更加直觀。這兩個屬性就包含著節(jié)點所使用的圖標(biāo)。  這兩個屬性都是TImageList的對象,所以假如要在TreeView組件中給節(jié)點添加圖標(biāo),就必須使用圖標(biāo)列表組件給這兩個屬性賦值。假如在窗體中放置了圖標(biāo)列表組件,那么單擊屬性Images中的下拉按鈕,就可以選取這個組件了。  ShowButtons屬性值為True時表示凡是有子節(jié)點的節(jié)點將自動具有擴展按鈕(即+號按鈕)和折疊按鈕(即減號按鈕),單擊它們就可以擴展和折疊節(jié)點。屬性值為False時,不顯示這兩個按鈕,缺省值為True。  ShowLines屬性用來確定是否顯示在節(jié)點和子節(jié)點之間的連線。缺省值為True。  ShowRoot屬性用來確定與頂層節(jié)點連線是否顯示。缺省值為True。  HideSelection屬性用來確定當(dāng)輸入焦點從TreeView移動到其它控件上時,被選中的節(jié)點是否處于被選中狀態(tài)。當(dāng)屬性值為True時,不再處于選中狀態(tài)。缺省值為True。  Indent屬性用來設(shè)置子節(jié)點與父節(jié)點之間縮進顯示的距離。  ReadOnly用來確定用戶是否可以直接修改節(jié)點的標(biāo)題。當(dāng)屬性值為False時,表示可以修改。修改方法是,選中要修改的節(jié)點并單擊進入編輯狀態(tài)。缺省值為False。  SortType用來設(shè)置節(jié)點進行排序的方式。它有以下幾種取值:  stNone:不排序(缺省值);  stData:當(dāng)節(jié)點所關(guān)聯(lián)的對象發(fā)生改變時重新排序;  stText:當(dāng)節(jié)點的標(biāo)簽發(fā)生變化時重新排序;  stBoth:當(dāng)節(jié)點所關(guān)聯(lián)的對象或者節(jié)點的標(biāo)簽發(fā)生改變時重新排序。  以上排序原則為在同一層的節(jié)點以標(biāo)簽的字母順序排序。   更多文章 更多內(nèi)容請看C/C++技術(shù)專題專題,或   此外,還有一些運行時態(tài)屬性。  TopItem:這個屬性用來設(shè)置一個節(jié)點,這個節(jié)點將顯示在樹狀視圖的最上面。  RowSelcet:缺省為false。若設(shè)置為true,則表示當(dāng)前選擇的節(jié)點所在的整行都將加亮顯示。當(dāng)ShowLines設(shè)置為true時,這個屬性無效。
  Selected:用來返回當(dāng)前選擇的節(jié)點。  49)問:屬性Images和StateImages有什么區(qū)別呢?  答:每一個節(jié)點可以有兩個附帶的圖標(biāo)。一般情況下只需要顯示一個圖標(biāo),這時我們經(jīng)常使用Images來指定圖標(biāo),也就是說給屬性Images賦予一個ImageList對象。假如某個節(jié)點要顯示兩個圖標(biāo),那么還需要給屬性StateImages賦予一個ImageList對象。然后給節(jié)點的屬性StateIndex指定圖標(biāo)的索引號。具體的方法是在項目編輯器中,修改編輯框State Index的值。  其實在顯示一個圖標(biāo)時,也可以使用屬性StateImages。但是使用Images屬性有一個優(yōu)點,就是它可以為處于不同狀態(tài)的節(jié)點指定不同的圖標(biāo)。例如在Windows 95的資源治理器中,被選中的節(jié)點顯示一個打開的文件夾,而沒有選中的節(jié)點顯示一個關(guān)閉的文件夾。要實現(xiàn)這一點很簡單,因為項目編輯器中的編輯框Image Index指定的圖標(biāo)在節(jié)點未選中時顯示,而編輯框Seleted Index指定的圖像在節(jié)點選中時顯示。  50)問:請在前面設(shè)計的TreeView組件的基礎(chǔ)上,給TreeView組件中的節(jié)點增加圖標(biāo)。好嗎?  答:好的,首先在窗體上放置兩個ImageList組件,這兩個組件將具有缺省的名字ImageList1和ImageList2。  其次、編輯ImageList組件:ImageList組件實際上是一個圖標(biāo)列表,它可以包含大量的圖標(biāo),這些圖標(biāo)的大小由屬性Width和Height確定,缺省值都是16。  ImageList剛建立時不包含任何圖標(biāo),你需要把已創(chuàng)建好的圖標(biāo)引入到ImageList中。這個工作可以通過ImageList編輯器完成。  用鼠標(biāo)右鍵單擊ImageList組件,在快捷菜單中選擇ImageList Editor或雙擊一下該組件,就會出現(xiàn)下面這個編輯器。C++ Builder 初學(xué)問與答(六)  單擊Add按鈕,在彈出的Add Images對話框中選擇要引入的圖像文件,圖標(biāo)就會出現(xiàn)在Images框內(nèi)。從圖中可以看出,引入的圖標(biāo)被自動賦予索引號。  為了使用上的方便,每一個圖標(biāo)都有一個編號,這個編號就是這個圖標(biāo)的索引號。假如要引用某個圖標(biāo),只需要使用它的索引號就可以了。  要注重的是:這個編輯器會自動把引入的圖像分解成16×16的圖標(biāo),之所以尺寸為16×16是因為ImageList的屬性Width和Height被設(shè)置成了16。假如圖標(biāo)的尺寸不一樣,那么可以修改這兩個屬性,使其滿足圖標(biāo)的要求。   更多文章 更多內(nèi)容請看C/C++技術(shù)專題專題,或   然后、繼續(xù)用項目編輯器給節(jié)點增加圖標(biāo):我們已經(jīng)在圖標(biāo)列表組件中加入了兩個圖標(biāo),其索引號分別為0和1,接著可以使用項目編輯器給節(jié)點增加圖標(biāo)。  再次打開項目編輯器,輸入所有節(jié)點。
  修改節(jié)點的ImageIndex, SelectedIndex屬性,      要注重的是,編輯框Image Index中的索引號是0,編輯框Selected Index中的索引號是1。也就是說,在選中或未選中狀態(tài)下,該節(jié)點顯示的圖標(biāo)不同。  修改所有節(jié)點的圖標(biāo)索引號,使包含子節(jié)點的節(jié)點有兩種不同的圖標(biāo),而不含子節(jié)點的節(jié)點只有一種圖標(biāo),也就是編輯框Image Index和Selected Index的索引號相同。  最后,修改TreeView1組件的Images屬性,從下拉列表中選擇ImageList1組件。  從屏幕上可以看到,圖標(biāo)已經(jīng)出現(xiàn)在控件里面了。  51)問:那怎樣給節(jié)點增加第二個圖標(biāo)呢?  答:要給節(jié)點增加第二個圖標(biāo),首先必須再創(chuàng)建一個圖標(biāo)列表組件,然后把這個圖標(biāo)列表賦值給TreeView組件的屬性StateImages。當(dāng)然還要給這個圖標(biāo)列表引入圖標(biāo)。  完成這些工作后,我們就可以進入項目編輯器,選中要增加第二個圖標(biāo)的節(jié)點,修改編輯框State Index中的索引號即可。  52)問:TreeView有哪些重要的函數(shù)呢?  答:AlphaSort:其聲明為:bool _fastcall AlphaSort(void);這個函數(shù)用來對所有的節(jié)點按標(biāo)簽的字母順序排序。若排序成功,則返回true。  FullCollapse:其聲明為void _fastcall FullCollapse(void);這個函數(shù)的作用是折疊所有的節(jié)點,直到最頂層為止。  FullExpand:其聲明為 void _fastcall FullExpand(void);這個函數(shù)的作用是展開所有的節(jié)點,直到最底層為止。若ShowButtons屬性為true,則所有的“+”都會變成“-”。  GetHitTestInfoAt:其聲明為THitTests _fastcall GetHitTestInfoAt(int X,int Y);這個函數(shù)返回指定點與樹狀視圖之間的位置關(guān)系。這個點的位置由參數(shù)X、Y確定。THitTests是個集合,它可能包含下面的元素:  HtAbove:在樹狀視圖的客戶區(qū)上方;  HtBelow:在樹狀視圖的客戶區(qū)下方;  HtNowhere:在樹狀視圖的客戶區(qū)內(nèi)但在最后一個節(jié)點下面;  HtOnItem:在某個節(jié)點的標(biāo)簽或者圖標(biāo)上;  HtOnButton:在某個節(jié)點的左邊的圖標(biāo)上;  HtOnIcon:在某個節(jié)點的圖標(biāo)上;  HtOnIndent:在某個節(jié)點的縮進線上;  HtOnLabel:在某個節(jié)點的標(biāo)簽上;  htOnRight:在某個節(jié)點的右邊;  htOnStateIcon:在某個節(jié)點的狀態(tài)圖標(biāo)上;  htToLeft:在客戶區(qū)的右邊;  htToRight:在客戶區(qū)的的左邊。  GetNodeAt:其聲明為TTreeNode*_fastcall GetNodeAt(int X,int Y);這個函數(shù)用來返回指定點所在的節(jié)點。參數(shù)X、Y為這個點的坐標(biāo)。假如這個點沒有節(jié)點,則返回NULL。

更多文章 更多內(nèi)容請看C/C++技術(shù)專題專題,或

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 汤原县| 和田市| 沈阳市| 横山县| 吴川市| 克山县| 林芝县| 台东市| 开封市| 尉氏县| 进贤县| 鹿邑县| 华亭县| 博罗县| 永靖县| 庆阳市| 江西省| 江阴市| 华阴市| 西华县| 昭通市| 木兰县| 涪陵区| 高台县| 安西县| 开远市| 朔州市| 扬中市| 锡林浩特市| 张家川| 东海县| 龙陵县| 瑞安市| 鲁甸县| 邯郸市| 年辖:市辖区| 罗定市| 隆回县| 云南省| 西乡县| 盐源县|