第八章 VB中ActiveX控件的使用
8.1 概述
這里的ActiveX控件是指VB標(biāo)準(zhǔn)工具箱里沒有的控件,用時需從“工程”菜單里選擇“部件…”(或右鍵單擊工具箱,從快捷菜單中選擇“部件…”),從部件窗口里勾上需要的控件。
常用ActiveX控件
ActiveX控件 | ActiveX部件 | 文件名 |
TabStrip 頁框 | Windows通用控件 Microsoft Windows Common Controls 6.0 | 路徑: Windows\system\ Mscomctl.ocx |
Toolbar 工具欄 | ||
StatusBar 狀態(tài)欄 | ||
ProgressBar 進程條 | ||
TreeView 分層顯示 | ||
ListView 排列顯示 | ||
ImageList 圖象列表 | ||
Slider 滑塊 | ||
ImageCombo 圖象組合框 | ||
CommonDialog 通用對話框 | Microsoft Common Dialog Control 6.0 | Comdlg32.ocx |
| Microsoft Multimedia Control 6.0 | Mci32.ocx |
MediaPlayer 媒體播放器 | Microsoft Media Player | Msdxm.ocx |
8.1 多選項卡對話框——頁框(TabStrip)
1. 設(shè)置頁框的外觀樣式
(1) 先在窗體上畫出一個TabStrip對象;
(2) 右擊該對象,從快捷菜單中選擇“屬性”;
(3) 在TabStrip屬性窗口里選擇通用(General)標(biāo)簽,在樣式(Style)列表框里選擇樣式;
(4) 在TabStrip屬性窗口里選擇選項卡(Tabs)標(biāo)簽,在標(biāo)題(Caption)框里輸入標(biāo)題和關(guān)鍵字;
(5) 如果需要的話,在工具提示文本(ToolTipText)框里輸入提示信息;
(6) 在TabStrip屬性窗口里選擇字體(Font)標(biāo)簽,設(shè)置標(biāo)題的字體(可以直接采用默認(rèn)值)。
2.增減標(biāo)簽總數(shù)
在TabStrip屬性窗口里選擇選項卡標(biāo)簽,單擊插入選項卡按鈕增加標(biāo)簽,單擊刪除選項卡按鈕刪除標(biāo)簽。
3.在TabStrip上顯示圖形
1) 在窗體里拖入一個圖象列表(ImageList)控件;
2) 在此對象上右擊,選擇屬性,打開屬性頁窗口;
3) 選擇圖象標(biāo)簽, 單擊插入圖片按鈕,在選定圖片對話框里選擇想使用的位圖或圖標(biāo),然后單擊打開按鈕;為每個想添加圖形的選項卡重復(fù)此步;
4) 單擊確定按鈕, ImageList里就存儲了需要的圖片。
5) 選擇TabStrip, 進入TabStrip屬性窗口并選擇通用標(biāo)簽,在圖象列表框里選擇ImageList1;
6) 選擇選項卡標(biāo)簽,單擊緊挨索引框的向左或向右箭頭以選擇一個Tab序號。在圖象框里輸入一個數(shù),輸入為1,則顯示剛才ImageList控件里的第一個圖形,輸入為2,則顯示剛才ImageList控件里的第二個圖形,單擊確定按鈕完成。
4.在TabStrip上放置其它控件
在窗體上象添加普通控件一樣,把每一頁需要的控件添上,控件不止一個時,應(yīng)該用Frame來分組,注意:除了默認(rèn)的第一頁上的Frame控件外,其他所有Frame的Visible屬性都應(yīng)該設(shè)為假。
5.設(shè)計代碼
在用戶選擇了標(biāo)簽后,TabStrip要求編寫代碼來顯示或隱藏控件??捎妙愃葡旅娴拇a來識別用戶在哪一個項目上單擊。
Private Sub TabStrip1_Click()
Select Case TabStrip1.SelectedItem.key
Case 1
<選第一項時需要執(zhí)行的代碼>
Case 2
<選第一項時需要執(zhí)行的代碼>
……
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 個 Panel 對象,每一個 Panel對象能包含文本和/或圖片??刂苽€別窗格的外觀屬性包括Width、Alignment(文本和圖片的)和 Bevel(斜面)。此外,能使用 Style 屬性七個值中的一個自動地顯示公共數(shù)據(jù),諸如日期、時間和鍵盤狀態(tài)等。
2. 創(chuàng)建狀態(tài)欄
先在窗體上畫出一個StatusBar對象,再右擊該對象,從快捷菜單中選擇“屬性”,進入屬性頁設(shè)置窗口,進行下面的設(shè)置:
(1)選擇窗格形狀
在屬性窗口里選擇通用標(biāo)簽,在樣式列表框里選擇多窗格(缺省形式)或單窗格簡單文本形式。
(2)添加或刪除狀態(tài)欄窗格
在屬性窗口里選擇窗格標(biāo)簽,單擊插入窗格按鈕添加一個窗格,或單擊刪除窗格按鈕刪除一個窗格。
(3)在單窗格里顯示文本
在屬性窗口里選擇通用標(biāo)簽,在簡單文本框里輸入想顯示在狀態(tài)欄窗格里的文本。用代碼顯示的方式是:
StatusBar1.SimpleText= "要顯示的內(nèi)容"
(4)在多窗格里顯示文本或圖形
1). 在屬性窗口里選擇窗格標(biāo)簽,用索引旁的按鈕選擇窗格序號。
2). 在文本框里輸入想顯示在狀態(tài)欄窗格里的文本。用代碼顯示的方式是:StatusBar1.Panels(x).Text= "要顯示的內(nèi)容"
3). 如果想加入圖形,單擊瀏覽按鈕打開一個圖形選擇對話框,選擇想加入的圖形,然后單擊打開按鈕。
(5) 編寫代碼
如果是一個單窗格狀態(tài)欄,當(dāng)用戶單擊狀態(tài)欄時,只需用下面的事件過程來響應(yīng):
Private Sub StatusBar1_Click()
<要執(zhí)行的代碼>
End Sub
如果是一個多窗格狀態(tài)欄,就需要鑒別用戶單擊的是哪一個窗格,可用下面的事件過程來識別用戶所單擊的窗格:
Private Sub StatusBar1_PanelClick(ByValPanel As Panel)
Select Case Panel.Index
Case 1
<要執(zhí)行的代碼>
Case2
<要執(zhí)行的代碼>
……
EndSelect
End Sub
3.創(chuàng)建工具欄
(1).建立工具欄
1)在工具箱里單擊工具欄圖標(biāo),拖到窗體的任何位置,VisualBasic自動將ToolBar移到頂部。再右擊該對象,從快捷菜單中選擇“屬性”,進入屬性頁設(shè)置窗口;
2)選擇按鈕標(biāo)簽,單擊插入按鈕,Visual Basic就會在工具欄上顯示一個空按鈕,重復(fù)此步插入多個按鈕;
3)單擊確定按鈕。如果想把按鈕分組,首先插入一個分隔的按鈕,再在對話框里將這個按鈕的樣式屬性改為3-Separator。
(2)為工具欄增加圖畫
1). 在Visual Basic工具箱里單擊ImageList圖標(biāo),并將它拖到窗體的任何位置(位置不重要,因為它總是不可見的),再右擊該對象,從快捷菜單中選擇“屬性”,進入屬性頁設(shè)置窗口;
2). 選擇圖象標(biāo)簽,單擊插入圖片,在選定圖形對話框里選擇想使用的位圖或圖標(biāo),然后單擊打開按鈕。為每個想添加圖形的工具欄按鈕重復(fù)此步。
3). 單擊確定按鈕。
4). 進入ToolBar屬性對話框,選擇通用標(biāo)簽,在圖象列表框里選擇剛才添加的ImageList控件。
5). 選擇按鈕標(biāo)簽,單擊緊挨Index框的向左或向右箭頭以選擇一個按鈕序號。出現(xiàn)在工具欄最左邊的按鈕序號為1。
6). 在Image框里輸入一個數(shù),輸入為1,則顯示剛才ImageList控件里的第一個圖形,輸入為2,則顯示剛才ImageList控件里的第二個圖形。
7). 為每個按鈕重復(fù)第6步, 單擊確定按鈕,現(xiàn)在Visual Basic就會在工具欄上顯示精美的圖形了。
(3)為工具欄添加文本信息
在ToolBar屬性對話框中選擇按鈕標(biāo)簽,在標(biāo)題框里輸入想顯示在按鈕上的文本。
(4)添加ToolTips
ToolTips是一種當(dāng)點到工具按鈕時彈出的小標(biāo)簽。ToolTips很方便,可以告訴那些新手每個按鈕是干什么用的。在ToolBar屬性對話框中選擇按鈕標(biāo)簽,在工具提示文本框里輸入想作為ToolTip的文本。
(5)編寫代碼
雙擊工具欄,以下面的格式輸入代碼就可以了:
Private Sub Toolbar1_ButtonClick(ByVal Button As Button)
Select Case Button.Index
Case 1
<要執(zhí)行的代碼>
Case2
<要執(zhí)行的代碼>
……
EndSelect
End Sub
8.3 進程條(ProgressBar)和滑塊(Slider)
1.進程條
作用:進程條控件用于監(jiān)視操作完成的進度。
創(chuàng)建:在窗體上畫出進程條控件,右擊,選擇屬性,然后進行所需的外觀設(shè)置。
主要屬性:ProgressBar 控件有一個行程和一個當(dāng)前位置。行程代表該操作的整個持續(xù)時間。當(dāng)前位置則代表應(yīng)用程序在完成該操作過程時的進度。Max 和 Min 屬性設(shè)置了行程的界限。Value屬性則指明了在行程范圍內(nèi)的當(dāng)前位置。
(1) Min屬性代表進程條全空時的值,缺省時為0。
(2) Max屬性代表進程條全空時的值,缺省時為100。
(3) Value屬性代表進程條當(dāng)前的值(但不出現(xiàn)在屬性窗口中),它大于Min屬性,小于Max屬性。改變Value屬性的值將改變進程條的進度顯示。
示例:
Private Sub Command1_Click()
If ProgressBar1.Value < ProgressBar1.Max Then
ProgressBar1.Value = ProgressBar1.Value + 5
Else
ProgressBar1.Visible = False ‘當(dāng)進程條滿了的時候讓進程條消失
End If
End Sub
2.滑塊
Slider控件是包含滑塊和可選擇性刻度標(biāo)記的窗口,在窗體上畫出滑塊控件,右擊,選擇屬性,然后進行下列設(shè)置:
(1)選擇滑塊的外觀
1)方向屬性決定滑塊的方位,可以是垂直的或水平的滑塊。
2)滑塊樣式屬性決定滑塊標(biāo)記的樣子。
3)滑塊頻率屬性規(guī)定了沿著滑塊的標(biāo)記的間隔大小,缺省的狀態(tài)是1,表明每個可能值都出現(xiàn)標(biāo)記,如果把值設(shè)置為3,則每三個可能值出現(xiàn)一個標(biāo)記。
(2)滑塊的主要屬性及事件
1)Min,Max屬性
Min屬性決定滑塊最左端或最頂端所代表的值。Max屬性決定滑塊最右端或最下端所代表的值。
2)LargeChange,SmallChange屬性
SmallChange決定在滑塊兩端的箭頭鈕上單擊時改變的值。LargeChange決定在滑塊上方或下方區(qū)域單擊時改變的值。
3)Value屬性
Value屬性代表當(dāng)前滑塊所處位置的值,這個值由滑塊的相對位置決定。
4)Change事件
當(dāng)滑塊位置發(fā)生變化時就引發(fā)了Change事件。
8.4 排列顯示(ListView)控件和分層顯示(TreeView)控件
1.ListView 控件
象“資源管理器”的右側(cè)一樣,可使用四種不同視圖顯示項目。通過此控件,可將項目組成帶有或不帶有列標(biāo)頭的列,并顯示伴隨的圖標(biāo)和文本。
可使用 ListView 控件將稱作ListItem 對象的列表條目組織成下列四種不同的視圖之一:
大(標(biāo)準(zhǔn))圖標(biāo) 小圖標(biāo) 列表 報表
View 屬性決定在列表中控件使用何種視圖顯示項目。還可用LabelWrap 屬性控制列表中與項目關(guān)聯(lián)的標(biāo)簽是否可換行顯示。另外,還可管理列表中項目的排序方法和選定項目的外觀。
ListView 控件包括 ListItem和 ColumnHeader對象。ListItem 對象定義 ListView控件中項目的各種特性,如: 項目的簡要描述、由 ImageList 控件提供的與項目一起出現(xiàn)的圖標(biāo)、附加的文本片段,稱作子項目,它們與顯示在報表視圖中的 ListItem 對象關(guān)聯(lián)。
可以使用 HideColumnHeaders屬性決定是否在 ListView控件中顯示列標(biāo)頭。列標(biāo)頭可以在設(shè)計時添加,也可以在運行時添加。設(shè)計時,使用 ListView“控件屬性”對話框的“列首”選項卡添加列標(biāo)頭。運行時,使用 Add 方法添加 ColumnHeader 對象到 ColumnHeaders 集合中。
2.TreeView 控件
該控件象“資源管理器”的左側(cè)一樣,用于顯示結(jié)點(Node) 對象的分層列表,每個 Node 對象均由一個標(biāo)簽和一個可選的位圖組成。TreeView 一般用于顯示文檔標(biāo)題、索引入口、磁盤上的文件和目錄、或能被有效地分層顯示的其它種類信息。
創(chuàng)建了 TreeView控件之后,可以通過設(shè)置屬性與調(diào)用方法對各Node 對象進行操作,這些操作包括添加、刪除、對齊和其它操作??梢跃幊陶归_與折回Node 對象來顯示或隱藏所有子節(jié)點。
TreeView 控件使用由 ImageList屬性指定的 ImageList控件,來存儲顯示于 Node對象的位圖和圖標(biāo)。任何時刻,TreeView控件只能使用一個 ImageList。這意味著,當(dāng) TreeView控件的 Style 屬性被設(shè)置成顯示圖像的樣式時,TreeView控件中每一項的旁邊都有一個同樣大小的圖像。
8.5 多媒體控件
1. 多媒體控件
在允許用戶從 Multimedia MCI 控件選取按鈕之前,應(yīng)用程序必須先將 MCI 設(shè)備打開,并在 Multimedia MCI 控件上啟用適當(dāng)?shù)陌粹o。在 Visual Basic中,應(yīng)將 MCI Open 命令放到 Form_Load 事件中。
2.媒體播放器控件
可以播放各種多媒體文件,主要屬性有:
(1) filename(待播放的文件名),可以在屬性窗口中設(shè)置,也可以用代碼實現(xiàn)。
(2) AutoStart(是否自動播放),默認(rèn)是True。
(3) AutoRewind(是否自動循環(huán)),默認(rèn)是False。
(4) PlayCount(文件播放遍數(shù)),默認(rèn)是1。
![]() |
![]() |
![]() |
![]() |
8.6 圖象列表(ImageList)和圖象組合框(ImageCombo)
1.圖象列表
ImageList 控件是包含 ListImage對象的集合,該集合中的每個對象都可以通過其索引或關(guān)鍵字被引用。ImageList控件不能獨立使用,只是作為一個便于向其它控件提供圖象的資料中心。
ImageList 控件的作用象圖像的儲藏室,同時,它需要第二個控件顯示所儲存的圖像。第二個控件可以是任何能顯示圖像 Picture 對象的控件,也可以是特別設(shè)計的、用于綁定 ImageList 控件的 Windows 通用控件之一。這些控件包括ListView、ToolBar、TabStrip、Header、ImageCombo、和 TreeView 控件。為了與這些控件一同使用ImageList,必須通過一個適當(dāng)?shù)膶傩詫⑻囟ǖ?/span>ImageList控件綁定到第二個控件。對于ListView 控件,必須設(shè)置其 Icons和 SmallIcons屬性為 ImageList控件。對于 TreeView、TabStrip、ImageCombo、和 Toolbar 控件,必須設(shè)置 ImageList屬性為 ImageList控件。
一旦 ImageList與某個 Windows 通用控件相關(guān)聯(lián),就可以在過程中用Index 屬性或 Key 屬性的值來引用 ListImage對象。
當(dāng)與 Windows 通用控件一起使用 ImageList控件時,在將它綁定到第二個控件之前,按照希望的順序?qū)⑷啃枰膱D像插入到ImageList。一旦 ImageList 被綁定到第二個控件 ,就不能再刪除圖像了,并且也不能將圖像插入到 ListImages 集合中間。但是可以在集合的末尾添加圖像。
2.圖象組合框
ImageCombo 控件是標(biāo)準(zhǔn) Windows組合框的允許繪圖版本??丶斜聿糠种械拿恳豁椂伎梢杂幸环付ǖ膱D片。它可以顯示一個包含圖片的項目列表,每一項可以有自己的圖片,也可以對多個列表項使用相同的圖片。
除了支持圖片之外, ImageCombo還提供了一個對象和基于集合的列表控件。控件列表部分的每一項是一個不同的ComboItem 對象,而且列表中的所有項組合起來構(gòu)成 ComboItems 集合。這就使它容易一項一項地指定諸如標(biāo)記文本、ToolTip文本、關(guān)鍵字值以及縮進等級等屬性。
8.7 通用對話框控件
Windows應(yīng)用程序里的Open對話框,Save As對話框在各個應(yīng)用程序里看起來都是一樣的,通用對話框控件就可以提供這些對話框的標(biāo)準(zhǔn)功能。
1.Open對話框及Save As對話框
打開Open對話框使用ShowOpen方法,打開Save As對話框使用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 '顯示打開對話框
Call OpenFile(CommonDialog1.FileName)
ErrorHandler:
Exit Sub
End Sub
其中第三行決定了在文件格式類型欄里出現(xiàn)的文件類型。第五行需要一個自己的打開文件的過程,這個過程需要的參數(shù)就是通用對話框返回的文件名。通用對話框的CancelError屬性設(shè)為True的話,用戶單擊Cancel按鈕將產(chǎn)生一個錯誤信息程序,憑借這個信息程序可以檢測到用戶的放棄操作。
2.Color對話框
下面的過程可用用戶選擇的顏色作為窗體的底色。
Private Sub mnuColor_Click ()
On Error GoTo CancelButton
CommonDialog1.CancelError = True
CommonDialog1.ShowColor
Form1.BackColor = CommonDialog1.Color
CancelButton:
Exit Sub
EndSub
3.Fonts對話框
下面的過程可用字體對話框改變文本框的字體:
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
代碼的第三行出現(xiàn)了通用對話框的Flags屬性決定了通用對話框的一些可選項,不過即使不賦值給Flags,代碼也一樣會按缺省的情況去執(zhí)行的。