UseMaskColor屬性該屬性決定是否能在ImageList控件中使用MaskColor屬性。Add方法要給ImageList控件添加圖像,在設(shè)計時,可以用“ImageList控件屬性”對話框圖1;在運(yùn)行時,可以用Add方法。Add方法的語法如下:Add(index,key,picture)Index是可選的參數(shù)。它是一個整數(shù),指定了要插入的ListImage對象的位置。如果沒有指定index,ListImage對象將被添加到ListImages集合的末尾。Key也是可選的參數(shù)。它是用來標(biāo)識ListImage對象的唯一字符串。ImageList控件用該值來檢索某個特定的ListImage對象。Picture是必需的參數(shù)。它指定了欲添加到集合中的圖片。Add方法的具體用法如下例:Dim imgX As ListImageSet imgX=ImageList1.ListImages.Add_(,,LoadPicture("filename"))Set imgX=ImageList1.ListImages.Add(,,Picture1.Picture)Overlay方法除了存儲Picture對象外,ImageList控件還可以在把圖像賦值給其它控件前,對它們執(zhí)行圖形操作。例如,Overlay方法可以從兩個不同的圖像出發(fā)創(chuàng)建一個復(fù)合圖像。該方法從一個ListImages集合繪制一幅圖像,疊加在另一幅上面,并返回結(jié)果。它的語法如下:Overlay(index1,index2)index1參數(shù)是必需的。它是一個整數(shù)(Index屬性)或唯一的字符串(Key屬性),指定了將被疊加的圖像。index2參數(shù)也是必需的。它指定了將被繪制在由index1指定的對象上的圖像。該圖像中與MaskColor屬性相匹配的顏色被設(shè)置成透明的。如果沒有任何顏色與之匹配,該圖像將不透明地繪制在其它圖像上。下面,我們介紹一個具體的例子。先在窗體上放置一個ImageList控件和一個Image框,然后添加如下代碼:Private Sub Form_Load()Dim imgX As ListImage'加載位圖SetimgX=ImageList1.ListImages.Add(,"No",_LoadPicture("graphics\bitmaps\assorted\Intl_No.bmp"))SetimgX=ImageList1.ListImages.Add(,,_LoadPicture("graphics\bitmaps\assorted\smokes.bmp"))SetimgX=ImageList1.ListImages.Add(,,_LoadPicture("graphics\bitmaps\assorted\beany.bmp"))ScaleMode=vbPixels'設(shè)置MaskColor屬性ImageList1.MaskColor=vbGreen'設(shè)置窗體的BackColor為白色Form1.BackColor=vbWhiteEnd SubPrivate Sub Form_Click()'靜態(tài)變量,用于圖像計數(shù)。Static int Count As Integer'如果變量超過ListImages.Count的值則重置變量為2If intCount>ImageList1.ListImages.CountOr intCount<1 ThenintCount=2End If'把ListImage(1)疊加在ListImages2-3之上Image1.Picture=ImageList1.Overlay(intCount,1)intCount=intCount+1'創(chuàng)建變量來保存ImageList.ImageWidth的值Dim intWintW=ImageList1.ImageWidth'為了引用方便把圖像繪制到窗體上,'用ImageWidth值來間隔圖像ImageList1.ListImages(1).DrawForm1.hDC,0,0,imlNormalImageList1.ListImages(2).DrawForm1.hDC,0,intW,imlNormalImageList1.ListImages(3).DrawForm1.hDC,0,intW*2,imlNormalEnd Sub在本例中,圖片Intl_No.bmp的背景色原來是綠色,由于MaskColor也設(shè)置為綠色,所以圖片的背景色變?yōu)榱送该鳌?div style="height:15px;">
為了節(jié)約系統(tǒng)資源,可以把一個或多個ImageList控件與其它的Windows95公共控件關(guān)聯(lián)。這些公共控件包括ListView、ToolBar、TabStrip和TreeView控件。為了關(guān)聯(lián)在一起,對于ListView控件來說,必須將Icons和SmallIcons屬性設(shè)置為ImageList控件;對于TreeView、TabStrip和Toolbar控件來說,必須將ImageList屬性設(shè)置為ImageList控件。一旦ImageList與某個控件相關(guān)聯(lián),就可以在過程中用Index屬性或Key屬性的值來引用ListImage對象了。二、多彩工具條----Toolbar在大多數(shù)應(yīng)用程序中都有工具欄。工具欄包含有一些按鈕,這些按鈕與應(yīng)用程序菜單中各項的按鈕對應(yīng),為用戶訪問應(yīng)用程序的最常用功能和命令提供了圖形界面。在VB5.0中,可以用Toolbar控件來實(shí)現(xiàn)這一功能。Toolbar控件包含一個按鈕(Button對象)集合,可以通過將Button對象添加到Buttons集合中的方法來創(chuàng)建工具欄。在設(shè)計時可用Toolbar控件的屬性頁中的“按鈕”選項卡上的“插入按鈕”和“刪除按鈕”來插入和刪除按鈕,并設(shè)置按鈕的索引、標(biāo)題、關(guān)鍵字、樣式、標(biāo)記、工具提示文本和圖像屬性;當(dāng)然,也可以在運(yùn)行時用語句指定這些屬性。樣式(Style)屬性該屬性決定Toolbar控件中每個按鈕的外觀和狀態(tài)。使用時請注意必須將具有ButtonGroup樣式的按鈕分組。為區(qū)分組,應(yīng)該將所有具有相同樣式(ButtonGroup)的Button對象放置在兩個有分隔符樣式的Button對象之間。Button對象為占位符樣式時,可以將其它的控件放置在工具欄上。例如,為了在設(shè)計時將下拉組合框放在工具欄上,可添加一個具有占位符樣式的Button對象,并把它調(diào)整到ComboBox控件的大小。然后將ComboBox放置在占位符處。每個Button對象都可有文本或圖像,或者兼而有之。圖像是由相關(guān)聯(lián)的ImageList控件提供的,可以用Image屬性為每個Button對象添加一幅圖像;文本則是通過設(shè)置每個按鈕的Caption屬性來顯示的。ImageList屬性該屬性返回或設(shè)置與控件相關(guān)的ImageList控件??丶褂迷搶傩裕仨毾葘mageList控件放在窗體上,然后在設(shè)計時可在相關(guān)控件的“屬性頁”對話框中設(shè)置ImageList屬性。在運(yùn)行時可以用以下語句來設(shè)置:Set ToolBar1.ImageList=ImageList1ShowTips屬性該屬性決定是否允許顯示每個按鈕的幫助提示。Wrappable屬性該屬性決定當(dāng)重新設(shè)置窗口的大小時,Toolbar控件按鈕是否自動換行。Customize方法該方法調(diào)用“自定義工具欄”對話框,該對話框允許用戶在Toolbar控件上重新安排或隱藏Button對象。當(dāng)Toolbar控件的AllowCustomize屬性為True時,雙擊工具欄后就會調(diào)用Customize方法顯示出對話框。我們可以限制用戶自定義工具欄的權(quán)限。例如,下列代碼僅在用戶給出密碼字時才允許自定義工具欄:Private Sub Command1_Click()If InputBox("Password:")="WYT" ThenToolbar1.Customize'調(diào)用Customize方法。End IfEnd SubSaveToolbar方法和RestoreToolbar方法這兩個方法的作用分別是把用Toolbar控件創(chuàng)建的工具欄的狀態(tài)保存在注冊表中和將工具欄恢復(fù)到原先保存的狀態(tài)。它們的語法為:Toolbar1.SaveToolbar(keyAsString,subkeyAsString,valueAsString)Toolbar1.RestoreToolbar(keyAsString,subkeyAsString,valueAsString)這三個參數(shù)都是必選參數(shù)。其中key是一個字符串表達(dá)式,指定了保存的信息在注冊表中的關(guān)鍵字;subkey也是一個字符串表達(dá)式,指定了在注冊表中key參數(shù)下的一個子鍵;value同樣是一個字符串表達(dá)式,指定了保存在subkey中的Toolbar信息。下列代碼將Toolbar1的狀態(tài)信息保存在HKEY_USERS\.DEFAULT關(guān)鍵字下的WYT子關(guān)鍵字中:Toolbar1.SaveToolbar"","WYT","Toolbar1"如果指定的子關(guān)鍵字不存在,該語句將在注冊表中創(chuàng)建新的子關(guān)鍵字。因為在自定義工具欄之后要發(fā)生Toolbar控件的Change事件,所以在大多數(shù)情況下,可將上述代碼放置在工具欄的Change事件中。下列代碼為當(dāng)前用戶恢復(fù)Toolbar控件的設(shè)置值,不過要確定先前已經(jīng)用SaveToolbar方法將它們保存起來了。Toolbar1.RestoreToolbar"","WYT","Toolbar1"注意當(dāng)使用RestoreToolbar方法時,任何不包含ImageListListImage對象的工具欄按鈕都將消失。用戶可再次使用自定義工具欄對話框上的復(fù)位按鈕使它們可見。為了在運(yùn)行時添加和刪除按鈕,可以用Add方法,Clear方法和Remove方法。Add方法該方法將Button對象添加到Buttons集合中,并返回對新創(chuàng)建對象的引用。下面給出一個簡單的程序代碼,具體介紹一下如何在運(yùn)行中添加按鈕和圖像以及對Click事件作出反應(yīng)。Private SubForm1_Load()'為ImageList創(chuàng)建對象變量Dim imgX As ListImage'將圖片加載到ImageList控件中Set imgX=ImageList1.ListImages.Add(,"open",_LoadPicture("Graphics\bitmaps\tlbr_w95\open.bmp"))Set imgX=ImageList1.ListImages.Add(,"save",_LoadPicture("Graphics\bitmaps\tlbr_w95\save.bmp"))Toolbar1.ImageList=ImageList1'為Button創(chuàng)建對象變量Dim btnX As Button'以下代碼是用Add方法將按鈕對象添加到Buttons集合中。創(chuàng)建每個按鈕后,設(shè)置Description和ToolTipText屬性。Toolbar1.Buttons.Add,,,tbrSeparatorSet btnX=Toolbar1.Buttons.Add_(,"open",,tbrDefault,"open")btnX.ToolTipText="OpenFile"btnX.Description=btnX.ToolTipTextSet btnX=Toolbar1.Buttons.Add_(,"save",,tbrDefault,"save")btnX.ToolTipText="SaveFile"btnX.Description=btnX.ToolTipTextSet btnX=Toolbar1.Buttons.Add(,,,tbrSeparator)End SubPrivate Sub toolbar1_ButtonClick(ByValButton As Button)'用Key屬性和SelectCase語句來指定一個動作。Select Case Button.KeyCase Is="open"'打開文件。MsgBox"Addcodetoopenfilehere!"Case Is="save"'保存文件。MsgBox"Addcodetosavefilehere!"End SelectEnd Sub三、精美卡片盒---TabsteripTabStrip控件象筆記本的書簽或者一組文件夾的標(biāo)簽,通過使用TabStrip控件,可以在應(yīng)用程序中為某個窗口或者對話框的相同區(qū)域定義多個頁面,如圖。其具體使用方法與Toolbar控件相似,限于篇幅,在這里就不再多說了。四、實(shí)時狀態(tài)條----StatusBarStatusBar控件代表性地顯示有關(guān)在窗體上查看的對象、對象組件的信息或關(guān)系到對象操作的上下文的信息。StatusBar控件與其它控件如Toolbar控件一起,提供建立界面的工具,該界面既經(jīng)濟(jì)又含有豐富的信息。StatusBar控件提供了一個窗體,通過這一窗體,應(yīng)用程序能顯示各種狀態(tài)數(shù)據(jù)。每個窗體由窗格(Panel對象)組成,每一個Panel對象能包含文本或圖片。StatusBar最多能被分成16個Panel對象,這些對象組成Panels集合。在設(shè)計時,可以通過StatusBar控件的屬性頁的“窗格”選項卡來添加和刪除窗格并設(shè)置每個窗格的各種屬性。在這里,我們對其中比較重要的屬性作一些介紹。斜面(Belvel)屬性該屬性返回或設(shè)置窗格的斜面樣式。自動調(diào)整大?。ˋutoSize)屬性該屬性在調(diào)整了StatusBar控件的大小以后,返回或設(shè)置窗格對象寬度的值。含有目錄樣式的窗格優(yōu)先于含有彈回樣式的窗格。這就意味著如果含有目錄樣式的窗格需要空間,則將縮短彈回樣式的窗格。寬度(Width)屬性和最小寬度(MinWidth)屬性寬度屬性返回或設(shè)置窗格的當(dāng)前寬度,最小寬度屬性則返回或設(shè)置窗格的最小寬度。當(dāng)AutoSize屬性被設(shè)置為目錄或彈回時,使用MinWidth屬性可以防止面板因自動調(diào)整大小被調(diào)整到太小的寬度。當(dāng)AutoSize屬性被設(shè)置為None時,MinWidth屬性總是被設(shè)定為與Width屬性相同的值。下例用StatusBar控件的缺省面板顯示當(dāng)前時間。設(shè)置MinWidth屬性以便在單擊面板時清除時間但保留面板的大小不變。Private Sub Form_Load()StatusBar1.Panels(1).AutoSize=sbrContentsStatusBar1.Panels(1).Text="NowTimeis:"&Str(Time)StatusBar1.Panels(1).MinWidth=StatusBar1.Panels(1).Width'將最小寬度設(shè)置為面板的當(dāng)前大小。End SubPrivate Sub StatusBar1_PanelClick(ByValPanel As ComctlLib.Panel)'清除時間但保持大小在最小寬度。Panel.Text="NowTimeis:"End SubStatusBar控件的重要屬性有Style屬性和SimpleText屬性。Style屬性該屬性返回或設(shè)置StatusBar控件的樣式。當(dāng)它為sbrNormal時,StatusBar控件顯示所有的Panel對象;當(dāng)它為sbrSimple時,控件僅顯示一個大面板。當(dāng)設(shè)置Style屬性為sbrSimple時,用SimpleText屬性設(shè)置要顯示的字符串的文本。注意當(dāng)設(shè)置Style屬性為Simple時,StatusBar控件顯示大面板(控件的寬度),該面板不能通過面板集合來控制。SimpleText屬性該屬性是當(dāng)StatusBar控件的Style屬性為Simple時,返回或設(shè)置顯示文本。為了在運(yùn)行中添加和刪除窗格,可以用Add方法,Clear方法和Remove方法。其中Clear方法和Remove方法與前面講的控件一樣,這里不再贅述。(圖5)Add方法該方法將Panel對象添加到Panels集合中并返回對新建立的Panel對象的引用。它的語法如下:StatusBar1.Add(index,key,text,style,picture)下面的代碼將兩個Panel對象添加到具有Normal樣式的StatusBar控件中,然后添加字符串(用SimpleText屬性),該字符串在設(shè)置Style屬性為Simple時才出現(xiàn)。該控件在Simple和Normal樣式之間切換。Private Sub Form_Load()Dim I As IntegerFor I=1 to 2StatusBar1.Panels.Add'添加兩個Panel對象。Next IWith StatusBar1.Panels.Item(1).Style=sbrNum'Number鎖定.Item(2).Style=sbrCaps'Caps鎖定.Item(3).Style=sbrScrl'Scroll鎖定End WithEnd SubPrivate Sub StatusBar1_Click()'在簡單和正常樣式之間切換。With StatusBar1If .Style=0 Then'當(dāng)StatusBar是用Simple樣式時,顯示該文本。.SimpleText="DateandTime:"&Now.Style=sbrSimple'Simple樣式。Else.Style=sbrNormal'Normal樣式。End IfEnd WithEnd Sub五、資源管理樹---TreeViewTreeView控件顯示Node對象的分層列表,每個Node對象均由一個標(biāo)簽和一個可選的位圖組成。TreeView一般用于顯示文檔標(biāo)題、索引入口、磁盤上的文件和目錄或能被有效地分層顯示的其它各種信息。類似于Win95的資源管理器的界面就可以用該控件來實(shí)現(xiàn)。在設(shè)計時可以通過TreeView控件的屬性頁來指定控件的部分屬性。在TreeView控件的屬性中,比較重要的有如下屬性:樣式(Style)屬性該屬性返回或設(shè)置Node對象的圖形類型(圖像、文本、+/-號、直線)以及出現(xiàn)在TreeView控件中每一Node對象上的文本類型。行樣式(LineStyle)屬性這個屬性返回或設(shè)置在Node對象之間顯示的線的樣式。注意:若Style屬性設(shè)置為包含直線的值,則LineStyle屬性就確定了直線的外觀。如果Style屬性設(shè)置為不含直線的值,則LineStyle屬性將被忽略。Sort屬性該屬性返回或設(shè)置一布爾值,此值確定Node對象的子節(jié)點(diǎn)和TreeView控件的根層節(jié)點(diǎn)是否按字母順序排序。Sorted屬性有兩種用法:第一,在TreeView控件的根(頂)層排列Node對象;第二,對任何單個Node對象的立即子節(jié)點(diǎn)(即第一層子接點(diǎn))排序。例如,下面的代碼是對TreeView控件的根節(jié)點(diǎn)排序:TreeView1.Sorted=True。而代碼Node1.Sorted=True則是對當(dāng)前選中的Node對象的立即子節(jié)點(diǎn)排序。注意:當(dāng)設(shè)置Sorted屬性為True時,僅對當(dāng)前Nodes集合排序;在TreeView控件中添加新的Node對象時,必須再次設(shè)置Sorted屬性為True,以便對添加的Node對象排序。FullPath屬性這個屬性返回在TreeView控件中引用的Node對象的完整限定路徑。通常完整限定路徑是引用的Node對象的Text屬性中的文本與它的所有前輩的Text屬性值的連接。Root、Parent、Child、FirstSibling、LastSibling、Previous和Next屬性這些屬性分別返回對Node對象的根節(jié)點(diǎn),父節(jié)點(diǎn),子節(jié)點(diǎn),同層的第一個節(jié)點(diǎn)和最后一個節(jié)點(diǎn),同層的前一個相鄰節(jié)點(diǎn)和后一個相鄰節(jié)點(diǎn)的引用。同前面所講的控件一樣,TreeView控件也使用由ImageList屬性指定的ImageList控件,來存儲顯示于Node對象的位圖和圖標(biāo)。任何時刻,TreeView控件只能使用一個ImageList。這意味著,當(dāng)TreeView控件的Style屬性被設(shè)置成顯示圖像的樣式時,TreeView控件中每一項的旁邊都有一個同樣大小的圖像。為了使被選中的Node對象顯示不同的圖像,需要使用SelectedImage屬性。SelectedImage屬性該屬性返回或設(shè)置當(dāng)Node對象被選中時顯示的圖像。如果它為Null,則使用由ImageList屬性指定的圖像的屏蔽圖像。TreeView控件與前幾個控件一樣,用Add方法,Clear方法和Remove方法來添加Node對象,但它不能在設(shè)計時利用屬性頁來進(jìn)行添加和刪除。TreeView控件的Clear方法和Remove方法與前面所講的控件基本一致,這里主要講Add方法。Add方法該方法在TreeView控件的Nodes集合中添加一個Node對象,語法如下:TreeView1.Add(relative,relationship,key,text,image,selectedimage)在這些參數(shù)中,只有text參數(shù)是必需的,其它的參數(shù)都是可選的。relative參數(shù)是已存在的Node對象的索引號或鍵值。Relationship指定了Node對象的相對位置,如后表所述。Key是唯一的字符串,可用于檢索Node對象。Text是在Node中出現(xiàn)的字符串。Image是在關(guān)聯(lián)的ImageList控件中的圖像的索引。Selectedimage是在關(guān)聯(lián)的ImageList控件中的圖像的索引,在Node被選中時顯示。CreateDragImage方法這個方法使用Node對象的關(guān)聯(lián)圖像的抖動形式來創(chuàng)建拖動圖像。這種圖像一般用于拖放操作。該方法一般用于在拖放操作開始時給DragIcon屬性賦值一個圖像(圖6)。EnsureVisible方法這個方法確保指定的ListItem或Node對象是可視的。如果需要,這個方法可展開Node對象并滾動TreeView控件下列代碼創(chuàng)建一棵樹,并可以演示拖動操作(由于篇幅所限,這段代碼并未真正實(shí)現(xiàn)拖動)。Dim indrag As Boolean'指示拖放操作的標(biāo)志。Dim nodX As Object'被拖動的項。Private Sub Form_Load()'在Imagelist控件中加載一個位圖。Dim imgX As ListImageDim BitmapPath As StringBitmapPath="graphics\icons\mail\mail01a.ico"Set imgX=ImageList1.ListImages.Add_(,,LoadPicture(BitmapPath))'初始化TreeView控件并創(chuàng)建幾個節(jié)點(diǎn)。TreeView1.ImageList=ImageList1Dim nodX As Node'創(chuàng)建一棵樹。Set nodX=TreeView1.Nodes.Add(,,,"Parent1",1)Set nodX=TreeView1.Nodes.Add(,,,"Parent2",1)Set nodX=TreeView1.Nodes.Add(1,tvwChild,,"Child1",1)Set nodX=TreeView1.Nodes.Add(1,tvwChild,,"Child2",1)Set nodX=TreeView1.Nodes.Add(2,tvwChild,,"Child3",1)Set nodX=TreeView1.Nodes.Add(2,tvwChild,,"Child4",1)Set nodX=TreeView1.Nodes.Add(3,tvwChild,,"Child5",1)nodX.EnsureVisible'展開樹顯示全部節(jié)點(diǎn)。End SubPrivate Sub TreeView1_MouseDown_(Button As Integer,Shift As Integer,x As Single,y As Single)Set nodX=TreeView1.SelectedItem'設(shè)置要拖動的項。End SubPrivate Sub TreeView1_MouseMove(Button As Integer,Shift As Integer,x As Single,y As Single)If Button=vbLeftButton Then'指示拖動操作。indrag=True'設(shè)置標(biāo)志為true。'用CreateDragImage方法設(shè)置拖動圖標(biāo)。TreeView1.DragIcon=TreeView1.SelectedItem.CreateDragImageTreeView1.DragvbBeginDrag'拖動操作。End IfEnd Sub六、圖片式文件夾---ListViewListView控件比前面幾種控件要復(fù)雜一些,通過此控件,可將項目組成帶有或不帶有列標(biāo)頭的列,并顯示伴隨的圖標(biāo)和文本。ListView控件是由ColumnHeader和ListItem對象所組成的,其中ColumnHeader對象的個數(shù)決定了控件的列數(shù),而ListItem對象的個數(shù)則決定了控件的行數(shù)。(圖7)ColumnHeader對象是ListView控件中包含標(biāo)頭文字的項目。利用ColumnHeader對象,用戶可以:▲單擊對象觸發(fā)ColumnClick事件并根據(jù)數(shù)據(jù)項目將項目排序。▲拖動對象的右邊框來調(diào)整列寬度。▲在報表視圖中隱藏ColumnHeader對象。ColumnHeader對象的數(shù)目決定每個ListItem對象可包含的子項目數(shù)目。刪除ColumnHeader對象后所有與列關(guān)聯(lián)的子項目也將被刪除,并且每個ListItem對象的子項目數(shù)組將平移以更新ColumnHeader的索引,而這將導(dǎo)致剩余的列標(biāo)頭SubItemIndex屬性的改變。ColumnHeader對象的SubItemIndex屬性該屬性返回與ListView控件中ColumnHeader對象關(guān)聯(lián)的子項目的索引。子項目是字符串?dāng)?shù)組,代表顯示在報表視圖中的ListItem對象的數(shù)據(jù)。第一列的列標(biāo)頭SubItemIndex屬性設(shè)置為0,這是因為小圖標(biāo)和ListItem對象的文字總出現(xiàn)在第一列中,而且它們被當(dāng)作ListItem對象而不是子項目。列標(biāo)頭數(shù)目取決于子項目數(shù)目。列標(biāo)頭數(shù)目總是比子項目數(shù)目多1。在設(shè)計時可以利用屬性頁的“列首”選項卡將ColumnHeader對象添加到ListView控件中,在運(yùn)行時則用Add方法添加。ColumnHeader對象的Add方法該方法的使用與前面那些控件基本相似,就不再介紹了。ListView1.ColumnHeader.Add(index,key,text,width,alignment)ListItem對象是指控件中的一行(不包含標(biāo)頭行)的所有內(nèi)容。它也可包含文本和圖片,但是要使用圖片則必須通過Icons和SmallIcons屬性引用ImageList控件。ListItem對象的SubItems屬性返回或設(shè)置一個字符串(子項目)數(shù)組,它代表ListView控件中ListItem對象的數(shù)據(jù)。ListItem對象可包含任意多個的關(guān)聯(lián)項目數(shù)據(jù)字符串(子項目),但每個ListItem對象子項目數(shù)目必須相同。每個子項目都對應(yīng)于相關(guān)的列標(biāo)頭,無法直接向子項目數(shù)組添加元素,只有通過ColumnHeaders的Add方法添加列標(biāo)頭的方法來添加子項目。ListItem對象的Add方法該方法添加ListItem對象到ListView控件的ListItems集合中并返回對新創(chuàng)建對象的引用。它的語法如下:ListItem1.Add(index,key,text,icon,smallIcon)ListView控件的View屬性ListView控件可使用四種不同視圖顯示項目,這可以用View屬性來確定。該屬性返回或設(shè)置ListView控件中ListItem對象的外觀。ListView控件的SortOrder,SortKey和Sorted屬性控件中的ListItem對象可以按要求進(jìn)行排序,與排序有關(guān)的屬性是SortOrder,Sorted和SortKey屬性。SortOrder屬性返回或設(shè)置一個值,此值決定ListView控件中的ListItem對象以升序或降序排序。SortKey屬性返回或設(shè)置一個值,此值決定ListView控件中的ListItem對象如何排序。Sorted屬性返回或設(shè)置確定ListView控件中的ListItem對象是否排序的值。下面的代碼說明了如何創(chuàng)建ColumnHeaders和ListItem對象,SubItemIndex和SubItem屬性的使用方法以及如何排序。Private Sub Form_load()'確保ListView控件的view屬性為報表視圖。ListView1.View=lvwReport'添加三列。ListView1.ColumnHeaders.Add,"Name","姓名"ListView1.ColumnHeaders.Add,"Sex","性別"ListView1.ColumnHeaders.Add,"Age","年齡"'向控件添加ListItem對象。Dim itmX As ListItem'添加column1的名稱。Set itmX=ListView1.ListItems.Add(1,"ZL","張力")'使用SubItemIndex將SubItem與正確的ColumnHeader關(guān)聯(lián)。使用關(guān)鍵字("Sex")指定正確的ColumnHeader。itmX.SubItems(ListView1.ColumnHeaders("Sex").SubItemIndex)="男"'使用ColumnHeader關(guān)鍵字將SubItems字符串與'正確的ColumnHeader關(guān)聯(lián)。itmX.SubItems(ListView1.ColumnHeaders("Age").SubItemIndex)="19"Set itmX=ListView1.ListItems.Add(1,"LF","李芳")itmX.SubItems(ListView1.ColumnHeaders("Sex").SubItemIndex)="男"itmX.SubItems(ListView1.ColumnHeaders("Age").SubItemIndex)="22"Set itmX=ListView1.ListItems.Add(1,"WW","王偉")itmX.SubItems(ListView1.ColumnHeaders("Sex").SubItemIndex)="男"itmX.SubItems(ListView1.ColumnHeaders("Age").SubItemIndex)="24"End SubPrivate Sub ListView1_ColumnClick(ByVal ColumnHeader As ComctlLib.ColumnHeader)Select Case ColumnHeader.KeyCase "Sex":ListView1.SortKey=1ListView1.SortOrder=lvwAscendingListView1.Sorted=TrueCase "Age":ListView1.SortKey=2ListView1.SortOrder=lvwAscendingListView1.Sorted=TrueEnd SelectEnd Sub七、帶刻度滑塊---SliderSlider控件是一個包含滑塊和可選擇性刻度標(biāo)記的窗口,可以通過拖動滑塊,用鼠標(biāo)單擊滑塊的任意一側(cè)或者使用鍵盤移動滑塊來選擇一個值。在選擇離散數(shù)值或某個范圍內(nèi)的一組連續(xù)數(shù)值時,Slider控件十分有用。例如,無需鍵入數(shù)字,通過將滑塊移動到刻度標(biāo)記處,可以用Slider控件來輸入數(shù)值。Silder控件的大多數(shù)基本屬性比較簡單,我們這里重點(diǎn)介紹一些較有用而又常易忽略的屬性。TickStyle屬性該屬性返回或設(shè)置Slider控件上顯示的刻度標(biāo)記的樣式。SelectRange,SelStart和SelLength屬性Slider控件可以選擇某個范圍內(nèi)的數(shù)值,這就要用到SelectRange,SelStart和SelLength屬性。SelectRange屬性決定Slider控件是否可以選擇一個范圍。如果SelectRange屬性為True,SelStart為選定范圍的起始值,SelLength為選定范圍的長度。如果SelectRange屬性為False,則SelStart屬性的設(shè)置值與Value屬性的設(shè)置值相同,SelLength屬性無效。下列代碼允許在按住SHIFT鍵時,用鼠標(biāo)拖動或單擊Slider控件以選擇一個范圍。Private Sub Form_Load()'設(shè)置slider控件的設(shè)置值Slider1.Max=20End SubPrivate Sub Slider1_MouseDown(Button As Integer,Shift As Integer,x As Single,y As Single)If Shift=1 Then '如果按住Shift鍵,則Slider1.SelectRange=True '打開SelectRange。Slider1.SelStart=Slider1.Value'設(shè)置SelStart數(shù)值Slider1.SelLength=0'設(shè)置先前的SelLength(如存在)為0。End IfEnd SubPrivate Sub Slider1_MouseUp(Button As Integer,Shift As Integer,x As Single,y As Single)if Shift=1 Then'如果在一點(diǎn)決定返回上一步,將發(fā)生錯誤。On Error Resume Next'否則使用SelStart和當(dāng)前數(shù)值設(shè)置SelLength。Slider1.SelLength=Slider1.Value-Slider1.SelStartElseSlider1.SelectRange=False'如果松開SHIFT鍵。End IfEnd Sub在程序中,常用Slider控件來代替鍵盤輸入數(shù)字,如下面的例子。該例通過Slider控件來顯示不同的長度。Private Sub Form_Load()Slider1.Min=0Slider1.Max=50Slider1.SmallChange=1Slider1.LargeChange=10Slider1.TickFrequency=5End SubPrivate Sub Slider1_Change()Label1.Caption="長度是"&Format(Slider1.Value/5,"#.00")&"厘米"End Sub八、ProgressBar控件最后,我們來看一下ProgressBar。在應(yīng)用程序中,當(dāng)進(jìn)行一個較長的操作比如安裝或載入程序 時,通常會用一個進(jìn)度指示器來表示進(jìn)度。在VB中,這個工作可以由ProgressBar控件來完成。ProgressBar控件通過從左到右用一些方塊填充矩形來表示一個較長操作的進(jìn)度。在運(yùn)行時,ProgressBar控件監(jiān)視著操作完成的進(jìn)度。控件有一個行程和一個當(dāng)前位置。行程代表該操作的整個持續(xù)時間。當(dāng)前位置則代表應(yīng)用程序在完成該操作過程時的進(jìn)度。其使用方法與Slider控件相似。好了,到這里我們把Common家族都介紹完了,各位VB同道,若您把他們兄弟幾個調(diào)教好了,保管您的應(yīng)用程序界面具有專業(yè)水準(zhǔn)。如果您在工具箱里找不到他們的話,可以用右鍵單擊工具箱,選擇“部件”,然后選中MicrosoftWindowsCommonControls5.0,最后單擊“確定”就行了。□汪永濤