第八章 VB中ActiveX控件的使用
8.1 概述
這里的ActiveX控件是指VB標準工具箱里沒(méi)有的控件,用時(shí)需從“工程”菜單里選擇“部件…”(或右鍵單擊工具箱,從快捷菜單中選擇“部件…”),從部件窗口里勾上需要的控件。
常用ActiveX控件
| ActiveX控件 | ActiveX部件 | 文件名 |
| TabStrip 頁(yè)框 | Windows通用控件 Microsoft Windows Common Controls 6.0 | 路徑: Windows\system\ Mscomctl.ocx |
| Toolbar 工具欄 | ||
| StatusBar 狀態(tài)欄 | ||
| ProgressBar 進(jìn)程條 | ||
| TreeView 分層顯示 | ||
| ListView 排列顯示 | ||
| ImageList 圖象列表 | ||
| Slider 滑塊 | ||
| ImageCombo 圖象組合框 | ||
| CommonDialog 通用對話(huà)框 | Microsoft Common Dialog Control 6.0 | Comdlg32.ocx |
| | Microsoft Multimedia Control 6.0 | Mci32.ocx |
| MediaPlayer 媒體播放器 | Microsoft Media Player | Msdxm.ocx |
8.1 多選項卡對話(huà)框——頁(yè)框(TabStrip)
1. 設置頁(yè)框的外觀(guān)樣式
(1) 先在窗體上畫(huà)出一個(gè)TabStrip對象;
(2) 右擊該對象,從快捷菜單中選擇“屬性”;
(3) 在TabStrip屬性窗口里選擇通用(General)標簽,在樣式(Style)列表框里選擇樣式;
(4) 在TabStrip屬性窗口里選擇選項卡(Tabs)標簽,在標題(Caption)框里輸入標題和關(guān)鍵字;
(5) 如果需要的話(huà),在工具提示文本(ToolTipText)框里輸入提示信息;
(6) 在TabStrip屬性窗口里選擇字體(Font)標簽,設置標題的字體(可以直接采用默認值)。
2.增減標簽總數
在TabStrip屬性窗口里選擇選項卡標簽,單擊插入選項卡按鈕增加標簽,單擊刪除選項卡按鈕刪除標簽。
3.在TabStrip上顯示圖形
1) 在窗體里拖入一個(gè)圖象列表(ImageList)控件;
2) 在此對象上右擊,選擇屬性,打開(kāi)屬性頁(yè)窗口;
3) 選擇圖象標簽, 單擊插入圖片按鈕,在選定圖片對話(huà)框里選擇想使用的位圖或圖標,然后單擊打開(kāi)按鈕;為每個(gè)想添加圖形的選項卡重復此步;
4) 單擊確定按鈕, ImageList里就存儲了需要的圖片。
5) 選擇TabStrip, 進(jìn)入TabStrip屬性窗口并選擇通用標簽,在圖象列表框里選擇ImageList1;
6) 選擇選項卡標簽,單擊緊挨索引框的向左或向右箭頭以選擇一個(gè)Tab序號。在圖象框里輸入一個(gè)數,輸入為1,則顯示剛才ImageList控件里的第一個(gè)圖形,輸入為2,則顯示剛才ImageList控件里的第二個(gè)圖形,單擊確定按鈕完成。
4.在TabStrip上放置其它控件
在窗體上象添加普通控件一樣,把每一頁(yè)需要的控件添上,控件不止一個(gè)時(shí),應該用Frame來(lái)分組,注意:除了默認的第一頁(yè)上的Frame控件外,其他所有Frame的Visible屬性都應該設為假。
5.設計代碼
在用戶(hù)選擇了標簽后,TabStrip要求編寫(xiě)代碼來(lái)顯示或隱藏控件??捎妙?lèi)似下面的代碼來(lái)識別用戶(hù)在哪一個(gè)項目上單擊。
Private Sub TabStrip1_Click()
Select Case TabStrip1.SelectedItem.key
Case 1
<選第一項時(shí)需要執行的代碼>
Case 2
<選第一項時(shí)需要執行的代碼>
……
End Select
End Sub
例: Private Sub TabStrip1_Click()
Select Case TabStrip1.SelectedItem.Key
Case "statubar"
Frame2.Visible = False
Frame1.Visible = True
Case "toolbar"
Frame1.Visible = False
Frame2.Visible = True
End Select
End Sub
8.2 狀態(tài)欄(StatusBar)和工具欄(ToolBar)
1. 狀態(tài)欄的作用與組成
StatusBar 控件由 Panel(窗格) 對象組成,最多能被分成 16 個(gè) Panel 對象,每一個(gè) Panel對象能包含文本和/或圖片??刂苽€(gè)別窗格的外觀(guān)屬性包括Width、Alignment(文本和圖片的)和 Bevel(斜面)。此外,能使用 Style 屬性七個(gè)值中的一個(gè)自動(dòng)地顯示公共數據,諸如日期、時(shí)間和鍵盤(pán)狀態(tài)等。
2. 創(chuàng )建狀態(tài)欄
先在窗體上畫(huà)出一個(gè)StatusBar對象,再右擊該對象,從快捷菜單中選擇“屬性”,進(jìn)入屬性頁(yè)設置窗口,進(jìn)行下面的設置:
(1)選擇窗格形狀
在屬性窗口里選擇通用標簽,在樣式列表框里選擇多窗格(缺省形式)或單窗格簡(jiǎn)單文本形式。
(2)添加或刪除狀態(tài)欄窗格
在屬性窗口里選擇窗格標簽,單擊插入窗格按鈕添加一個(gè)窗格,或單擊刪除窗格按鈕刪除一個(gè)窗格。
(3)在單窗格里顯示文本
在屬性窗口里選擇通用標簽,在簡(jiǎn)單文本框里輸入想顯示在狀態(tài)欄窗格里的文本。用代碼顯示的方式是:
StatusBar1.SimpleText= "要顯示的內容"
(4)在多窗格里顯示文本或圖形
1). 在屬性窗口里選擇窗格標簽,用索引旁的按鈕選擇窗格序號。
2). 在文本框里輸入想顯示在狀態(tài)欄窗格里的文本。用代碼顯示的方式是:StatusBar1.Panels(x).Text= "要顯示的內容"
3). 如果想加入圖形,單擊瀏覽按鈕打開(kāi)一個(gè)圖形選擇對話(huà)框,選擇想加入的圖形,然后單擊打開(kāi)按鈕。
(5) 編寫(xiě)代碼
如果是一個(gè)單窗格狀態(tài)欄,當用戶(hù)單擊狀態(tài)欄時(shí),只需用下面的事件過(guò)程來(lái)響應:
Private Sub StatusBar1_Click()
<要執行的代碼>
End Sub
如果是一個(gè)多窗格狀態(tài)欄,就需要鑒別用戶(hù)單擊的是哪一個(gè)窗格,可用下面的事件過(guò)程來(lái)識別用戶(hù)所單擊的窗格:
Private Sub StatusBar1_PanelClick(ByValPanel As Panel)
Select Case Panel.Index
Case 1
<要執行的代碼>
Case2
<要執行的代碼>
……
EndSelect
End Sub
3.創(chuàng )建工具欄
(1).建立工具欄
1)在工具箱里單擊工具欄圖標,拖到窗體的任何位置,VisualBasic自動(dòng)將ToolBar移到頂部。再右擊該對象,從快捷菜單中選擇“屬性”,進(jìn)入屬性頁(yè)設置窗口;
2)選擇按鈕標簽,單擊插入按鈕,Visual Basic就會(huì )在工具欄上顯示一個(gè)空按鈕,重復此步插入多個(gè)按鈕;
3)單擊確定按鈕。如果想把按鈕分組,首先插入一個(gè)分隔的按鈕,再在對話(huà)框里將這個(gè)按鈕的樣式屬性改為3-Separator。
(2)為工具欄增加圖畫(huà)
1). 在Visual Basic工具箱里單擊ImageList圖標,并將它拖到窗體的任何位置(位置不重要,因為它總是不可見(jiàn)的),再右擊該對象,從快捷菜單中選擇“屬性”,進(jìn)入屬性頁(yè)設置窗口;
2). 選擇圖象標簽,單擊插入圖片,在選定圖形對話(huà)框里選擇想使用的位圖或圖標,然后單擊打開(kāi)按鈕。為每個(gè)想添加圖形的工具欄按鈕重復此步。
3). 單擊確定按鈕。
4). 進(jìn)入ToolBar屬性對話(huà)框,選擇通用標簽,在圖象列表框里選擇剛才添加的ImageList控件。
5). 選擇按鈕標簽,單擊緊挨Index框的向左或向右箭頭以選擇一個(gè)按鈕序號。出現在工具欄最左邊的按鈕序號為1。
6). 在Image框里輸入一個(gè)數,輸入為1,則顯示剛才ImageList控件里的第一個(gè)圖形,輸入為2,則顯示剛才ImageList控件里的第二個(gè)圖形。
7). 為每個(gè)按鈕重復第6步, 單擊確定按鈕,現在Visual Basic就會(huì )在工具欄上顯示精美的圖形了。
(3)為工具欄添加文本信息
在ToolBar屬性對話(huà)框中選擇按鈕標簽,在標題框里輸入想顯示在按鈕上的文本。
(4)添加ToolTips
ToolTips是一種當點(diǎn)到工具按鈕時(shí)彈出的小標簽。ToolTips很方便,可以告訴那些新手每個(gè)按鈕是干什么用的。在ToolBar屬性對話(huà)框中選擇按鈕標簽,在工具提示文本框里輸入想作為ToolTip的文本。
(5)編寫(xiě)代碼
雙擊工具欄,以下面的格式輸入代碼就可以了:
Private Sub Toolbar1_ButtonClick(ByVal Button As Button)
Select Case Button.Index
Case 1
<要執行的代碼>
Case2
<要執行的代碼>
……
EndSelect
End Sub
8.3 進(jìn)程條(ProgressBar)和滑塊(Slider)
1.進(jìn)程條
作用:進(jìn)程條控件用于監視操作完成的進(jìn)度。
創(chuàng )建:在窗體上畫(huà)出進(jìn)程條控件,右擊,選擇屬性,然后進(jìn)行所需的外觀(guān)設置。
主要屬性:ProgressBar 控件有一個(gè)行程和一個(gè)當前位置。行程代表該操作的整個(gè)持續時(shí)間。當前位置則代表應用程序在完成該操作過(guò)程時(shí)的進(jìn)度。Max 和 Min 屬性設置了行程的界限。Value屬性則指明了在行程范圍內的當前位置。
(1) Min屬性代表進(jìn)程條全空時(shí)的值,缺省時(shí)為0。
(2) Max屬性代表進(jìn)程條全空時(shí)的值,缺省時(shí)為100。
(3) Value屬性代表進(jìn)程條當前的值(但不出現在屬性窗口中),它大于Min屬性,小于Max屬性。改變Value屬性的值將改變進(jìn)程條的進(jìn)度顯示。
示例:
Private Sub Command1_Click()
If ProgressBar1.Value < ProgressBar1.Max Then
ProgressBar1.Value = ProgressBar1.Value + 5
Else
ProgressBar1.Visible = False ‘當進(jìn)程條滿(mǎn)了的時(shí)候讓進(jìn)程條消失
End If
End Sub
2.滑塊
Slider控件是包含滑塊和可選擇性刻度標記的窗口,在窗體上畫(huà)出滑塊控件,右擊,選擇屬性,然后進(jìn)行下列設置:
(1)選擇滑塊的外觀(guān)
1)方向屬性決定滑塊的方位,可以是垂直的或水平的滑塊。
2)滑塊樣式屬性決定滑塊標記的樣子。
3)滑塊頻率屬性規定了沿著(zhù)滑塊的標記的間隔大小,缺省的狀態(tài)是1,表明每個(gè)可能值都出現標記,如果把值設置為3,則每三個(gè)可能值出現一個(gè)標記。
(2)滑塊的主要屬性及事件
1)Min,Max屬性
Min屬性決定滑塊最左端或最頂端所代表的值。Max屬性決定滑塊最右端或最下端所代表的值。
2)LargeChange,SmallChange屬性
SmallChange決定在滑塊兩端的箭頭鈕上單擊時(shí)改變的值。LargeChange決定在滑塊上方或下方區域單擊時(shí)改變的值。
3)Value屬性
Value屬性代表當前滑塊所處位置的值,這個(gè)值由滑塊的相對位置決定。
4)Change事件
當滑塊位置發(fā)生變化時(shí)就引發(fā)了Change事件。
8.4 排列顯示(ListView)控件和分層顯示(TreeView)控件
1.ListView 控件
象“資源管理器”的右側一樣,可使用四種不同視圖顯示項目。通過(guò)此控件,可將項目組成帶有或不帶有列標頭的列,并顯示伴隨的圖標和文本。
可使用 ListView 控件將稱(chēng)作ListItem 對象的列表條目組織成下列四種不同的視圖之一:
大(標準)圖標 小圖標 列表 報表
View 屬性決定在列表中控件使用何種視圖顯示項目。還可用LabelWrap 屬性控制列表中與項目關(guān)聯(lián)的標簽是否可換行顯示。另外,還可管理列表中項目的排序方法和選定項目的外觀(guān)。
ListView 控件包括 ListItem和 ColumnHeader對象。ListItem 對象定義 ListView控件中項目的各種特性,如: 項目的簡(jiǎn)要描述、由 ImageList 控件提供的與項目一起出現的圖標、附加的文本片段,稱(chēng)作子項目,它們與顯示在報表視圖中的 ListItem 對象關(guān)聯(lián)。
可以使用 HideColumnHeaders屬性決定是否在 ListView控件中顯示列標頭。列標頭可以在設計時(shí)添加,也可以在運行時(shí)添加。設計時(shí),使用 ListView“控件屬性”對話(huà)框的“列首”選項卡添加列標頭。運行時(shí),使用 Add 方法添加 ColumnHeader 對象到 ColumnHeaders 集合中。
2.TreeView 控件
該控件象“資源管理器”的左側一樣,用于顯示結點(diǎn)(Node) 對象的分層列表,每個(gè) Node 對象均由一個(gè)標簽和一個(gè)可選的位圖組成。TreeView 一般用于顯示文檔標題、索引入口、磁盤(pán)上的文件和目錄、或能被有效地分層顯示的其它種類(lèi)信息。
創(chuàng )建了 TreeView控件之后,可以通過(guò)設置屬性與調用方法對各Node 對象進(jìn)行操作,這些操作包括添加、刪除、對齊和其它操作??梢跃幊陶归_(kāi)與折回Node 對象來(lái)顯示或隱藏所有子節點(diǎn)。
TreeView 控件使用由 ImageList屬性指定的 ImageList控件,來(lái)存儲顯示于 Node對象的位圖和圖標。任何時(shí)刻,TreeView控件只能使用一個(gè) ImageList。這意味著(zhù),當 TreeView控件的 Style 屬性被設置成顯示圖像的樣式時(shí),TreeView控件中每一項的旁邊都有一個(gè)同樣大小的圖像。
8.5 多媒體控件
1. 多媒體控件

在允許用戶(hù)從 Multimedia MCI 控件選取按鈕之前,應用程序必須先將 MCI 設備打開(kāi),并在 Multimedia MCI 控件上啟用適當的按鈕。在 Visual Basic中,應將 MCI Open 命令放到 Form_Load 事件中。
2.媒體播放器控件
可以播放各種多媒體文件,主要屬性有:
(1) filename(待播放的文件名),可以在屬性窗口中設置,也可以用代碼實(shí)現。
(2) AutoStart(是否自動(dòng)播放),默認是True。
(3) AutoRewind(是否自動(dòng)循環(huán)),默認是False。
(4) PlayCount(文件播放遍數),默認是1。
![]() |
![]() |
![]() |
![]() |
8.6 圖象列表(ImageList)和圖象組合框(ImageCombo)
1.圖象列表
ImageList 控件是包含 ListImage對象的集合,該集合中的每個(gè)對象都可以通過(guò)其索引或關(guān)鍵字被引用。ImageList控件不能獨立使用,只是作為一個(gè)便于向其它控件提供圖象的資料中心。
ImageList 控件的作用象圖像的儲藏室,同時(shí),它需要第二個(gè)控件顯示所儲存的圖像。第二個(gè)控件可以是任何能顯示圖像 Picture 對象的控件,也可以是特別設計的、用于綁定 ImageList 控件的 Windows 通用控件之一。這些控件包括ListView、ToolBar、TabStrip、Header、ImageCombo、和 TreeView 控件。為了與這些控件一同使用ImageList,必須通過(guò)一個(gè)適當的屬性將特定的ImageList控件綁定到第二個(gè)控件。對于ListView 控件,必須設置其 Icons和 SmallIcons屬性為 ImageList控件。對于 TreeView、TabStrip、ImageCombo、和 Toolbar 控件,必須設置 ImageList屬性為 ImageList控件。
一旦 ImageList與某個(gè) Windows 通用控件相關(guān)聯(lián),就可以在過(guò)程中用Index 屬性或 Key 屬性的值來(lái)引用 ListImage對象。
當與 Windows 通用控件一起使用 ImageList控件時(shí),在將它綁定到第二個(gè)控件之前,按照希望的順序將全部需要的圖像插入到ImageList。一旦 ImageList 被綁定到第二個(gè)控件 ,就不能再刪除圖像了,并且也不能將圖像插入到 ListImages 集合中間。但是可以在集合的末尾添加圖像。
2.圖象組合框
ImageCombo 控件是標準 Windows組合框的允許繪圖版本??丶斜聿糠种械拿恳豁椂伎梢杂幸环付ǖ膱D片。它可以顯示一個(gè)包含圖片的項目列表,每一項可以有自己的圖片,也可以對多個(gè)列表項使用相同的圖片。
除了支持圖片之外, ImageCombo還提供了一個(gè)對象和基于集合的列表控件??丶斜聿糠值拿恳豁検且粋€(gè)不同的ComboItem 對象,而且列表中的所有項組合起來(lái)構成 ComboItems 集合。這就使它容易一項一項地指定諸如標記文本、ToolTip文本、關(guān)鍵字值以及縮進(jìn)等級等屬性。
8.7 通用對話(huà)框控件
Windows應用程序里的Open對話(huà)框,Save As對話(huà)框在各個(gè)應用程序里看起來(lái)都是一樣的,通用對話(huà)框控件就可以提供這些對話(huà)框的標準功能。
1.Open對話(huà)框及Save As對話(huà)框
打開(kāi)Open對話(huà)框使用ShowOpen方法,打開(kāi)Save As對話(huà)框使用ShowSave方法。
Private Sub mnuOpen_Click ()
On Error GoTo ErrorHandler
CommonDialog1.CancelError = True
CommonDialog1.Filter = "Text Files (*.txt)|*.txt|BatchFiles (*.bat)|*.bat|All Files (*.*)|*.*"
CommonDialog1.ShowOpen '顯示打開(kāi)對話(huà)框
Call OpenFile(CommonDialog1.FileName)
ErrorHandler:
Exit Sub
End Sub
其中第三行決定了在文件格式類(lèi)型欄里出現的文件類(lèi)型。第五行需要一個(gè)自己的打開(kāi)文件的過(guò)程,這個(gè)過(guò)程需要的參數就是通用對話(huà)框返回的文件名。通用對話(huà)框的CancelError屬性設為True的話(huà),用戶(hù)單擊Cancel按鈕將產(chǎn)生一個(gè)錯誤信息程序,憑借這個(gè)信息程序可以檢測到用戶(hù)的放棄操作。
2.Color對話(huà)框
下面的過(guò)程可用用戶(hù)選擇的顏色作為窗體的底色。
Private Sub mnuColor_Click ()
On Error GoTo CancelButton
CommonDialog1.CancelError = True
CommonDialog1.ShowColor
Form1.BackColor = CommonDialog1.Color
CancelButton:
Exit Sub
EndSub
3.Fonts對話(huà)框
下面的過(guò)程可用字體對話(huà)框改變文本框的字體:
Private Sub mnuFonts_Click ()
On Error GoTo CancelButton
CommonDialog1.CancelError = True
CommonDialog1.Flags = cdlCFBoth ' Flags propertymust be set to cdlCFBoth
CommonDialog1.ShowFont ' Display Font commondialog box.
Text1.FontName = CommonDialog1.FontName
Text1.FontSize = CommonDialog1.FontSize
Text1.FontBold = CommonDialog1.FontBold
Text1.FontItalic = CommonDialog1.FontItalic
Text1.FontUnderline = CommonDialog1.FontUnderline
Text1.FontStrikethru = CommonDialog1.FontStrikethru
Text1.ForeColor = CommonDialog1.Color
CancelButton:
Exit Sub
EndSub
代碼的第三行出現了通用對話(huà)框的Flags屬性決定了通用對話(huà)框的一些可選項,不過(guò)即使不賦值給Flags,代碼也一樣會(huì )按缺省的情況去執行的。
聯(lián)系客服