13. 視覺界面

Visual Basic成功的關鍵在於它讓程式設計人員可以提供易於使用的視覺界面給使用者,到了現在的Visual Basic,在視覺界面上它更增加了兩項重大的改進:第一,它在許多控制項加上了ToolTipText屬性,讓我們可以更容易地產生工具提示(Tool Tips);其次,Visual Basic提供了許多Windows 95的控制項,其中包括了UpDown控制項。

本章要展示說明如何運用Visual Basic和Windows的功能來加強應用程式的視覺界面,同時也要介紹一些極具創意的程式設計技巧。

如何使用輕量控制項?
 

Visual Basic的形狀控制項(Shape)、線段控制項(Line)、標籤控制項(Label)和影像控制項(Image)都是非視窗(Windowless)控制項或稱為輕量(Lightweight)控制項,現在,以下這幾種控制項也都有了非視窗版:

  • 核取方塊(CheckBox)
     
  • 下拉式清單方塊(ComboBox)
     
  • 指令按鈕(CommandButton)
     
  • 框架(Frame)
     
  • 水平捲軸(HScrollBar)
     
  • 清單方塊(ListBox)
     
  • 選項按鈕(OptionButton)
     
  • 文字方塊(TextBox)
     
  • 垂直捲軸(VScrollBar)
     

輕量控制項和一般視窗版控制項的不同點在於前者沒有hWnd屬性。如果你的應用程式不使用需要hWnd的API函式,那麼非視窗的控制項就可以省下一些電腦資源,使得程式可以縮短載入時間。不過,非視窗版控制項不支援動態資料交換(Dynamic Data Exchange),除此之外,非視窗版的控制項與標準版控制項都具備相同的功能。

前面列出的控制項都有兩種版本:標準視窗版和新的非視窗版。除非你必須用到視窗版控制項的功能,否則最好是用非視窗版的控制項。

如何在清單方塊控制項中加入水平捲軸控制項﹖
 

有時候我們很難預測清單方塊中的本文寬度,幸好,SendMessage Windows API函式在輸出的文字過長時,會告訴清單方塊去加上一個水平捲軸。以下這段程式在介紹這個技巧。

請建立一個新專案,在空白表單上加入一個清單方塊控制項和指令按鈕,把它們命名為lstTest和cmdShinkList。把lstTest拉開到適當的寬度,在程式執行時,我們要用指令按鈕讓lstTest縮小。

請加入以下的函式宣告到你的模組中:

Private Const LB_SETHORIZONTALEXTENT = &H194

Private Declare Function SendMessage _
Lib "user32" Alias "SendMessageA" ( _
    ByVal hwnd As Long, _
    ByVal wMsg As Long, _
    ByVal wParam As Integer, _
    ByVal lParam As Long _
) As Long

SendMessage函式接受四個引數:hwnd參數存放視窗識別代碼(handle),wMsg參數存放要送給視窗物件的訊息,本例中,這個送給視窗的訊息是一個常數,表示我們要把一個水平捲軸放到清單方塊裡;wParam和lParam參數存放與上述訊息相關的資訊,在本例中,wParam代表清單方塊像素(Pixel)寬度,而lParam則未被使用。

以下是在指令按鈕中的程式碼。每當指令按鈕被按下一次,清單方塊的寬度便會縮小10%,當清單方塊縮小後,如果它的寬度不足以完整地顯示整行文字,水平捲軸便會在清單方塊下方邊緣出現。

Private Sub cmdShinkList_Clicku
    1stTest.Width = 1stTest.Width * 9 \ 10
End Sub

當表單被初次載入時,清單方塊便有了水平捲軸的功能。以下的Form_Load事件程序載入了一段相當長的文字給清單方塊,而且,也藉由呼叫SendMessage函式在清單方塊裡加入了水平捲軸的功能。

由於SendMessage函式中wParam所等待的值是以像素為單位,你必須傳入適當的像素值。你可以把表單的ScaleMode屬性設為vbPixels,使度量尺寸大小的單位改為像素。初始寬度是由TextWidth函式計算最長的字串而得來的,TextWidth函式所傳回的值是以ScaleMode所指明的單位為其計算單位。

Private Sub Form_Load()
    Dim strLongest As String, lngRtn As Long
    `Set ScaleMode to Pixels
    ScaleMode = vbPixels
    `Place text in list
    strLongest = "This is a list of months of the year"
    lstTest.AddItem strLongest
    lstTest.AddItem "January"
    lstTest.AddItem "February"
    lstTest.AddItem "March"
    lstTest.AddItem "April"
    lstTest.AddItem "May"
    lstTest.AddItem "June"
    lstTest.AddItem "July"
    lstTest.AddItem "August"
    lstTest.AddItem "September"
    lstTest.AddItem "October"
    lstTest.AddItem "November"
    lstTest.AddItem "December"
    `Set form's font properties to match list box
    Form1.Font.Size = lstTest.Font.Size
    `Set list box scrollbar threshold width
    lngRtn = SendMessage(lstTest.hwnd, LB_SETHORIZONTALEXTENT, _
        Form1.TextWidth(strLongest), ByVal 0&)
End Sub

當程式執行時,如果清單方塊的寬度比最長的字串還長,水平捲軸不會出現,這時如果你按下指令按鈕若干次,清單方塊的寬度就會變得不足以完整地顯示最長的字串,這時水平捲軸就會自動出現,圖13-1和13-2顯示未帶有以及帶有水平捲軸的清單方塊。


 

 圖13-1 未帶有水平捲軸的清單方塊


 

 圖13-2 帶有水平捲軸的清單方塊

當TextWidth方法傳回字串的像素寬度時,它會根據不同的字型而傳回不同的結果,TextWidth方法可以辨別表單上圖片方塊控制項裡或Printer物件裡的字型,但不能辨識清單方塊裡的字型。為了要解決這個問題並且讓清單方塊中的文字可以變換字型,我們把清單方塊中Font物件的Size屬性內容存放到表單中Font物件的Size屬性裡,然後使用表單的TextWidth方法來判斷並且設定清單方塊中水平捲軸的初始寬度。如果清單方塊中Font物件的其他屬性(如Bold、Itlic、Name等屬性)被改變了,應該也要複製這些屬性到表單中的Font物件的相對屬性裡。

如何建立一個工具列?
 

要在32位元的應用程式中建立一個工具列,筆者建議你使用Toolbar控制項,這個控制項在Microsoft Windows Common Control 6.0 (MSCOMCTL.OCX)裡。如果要在工具列上放置多個含有圖案的指令按鈕,除了使用Toolbar控制項之外,同時也需要在表單中加入ImageList控制項。你可以存放好幾個圖形在ImageList控制項裡,然後用索引來引用它們。

表單中有了Toolbar和ImageList控制項之後,接下來的工作就是利用「屬性頁」對話方塊加入圖形。要打開這個對話方塊,只要把滑鼠游標移到Toolbar控制項或ImageList控制項上,按下滑鼠右鍵,選取「屬性」即可。

Toolbar控制項的屬性頁可以讓你插入按鈕,引用ImageList控制項中的圖片,設定索引鍵名稱,加入工具提示以及設定其他屬性。另一方面,ImageList控制項的屬性頁讓你可以插入圖片,設定影像尺寸以及設定顏色。

Visual Basic的線上說明提供了很完整的參考資訊,教你如何使用Toolbar和ImageList控制項,這一點我們不多作討論,在這裡我們要介紹的是如何為每一個在工具列上的按鈕加入程式碼,請看以下的範例程式:

Option Explicit
Private Sub tlbTest_ButtonClick(ByVal Button As ComctlLib.Button)
    Select Case Button.Key
    Case Is = "anchor"
        MsgBox "You clicked the Anchor button."
    Case Is = "umbrella"
        MsgBox "You clicked the Umbrella button."
    Case Is = "phone"
        MsgBox "You clicked the Phone button."
    Case Is = "cherry"
        MsgBox "You clicked the Cherry button."
    Case Is = "atom"
        MsgBox "You clicked the Atom button."
    Case Is = "airplane"
        MsgBox "You clicked the Airplane button."
    End Select
End Sub

圖13-3顯示範例程式執行時,Airplane按鈕被按下後的結果。


 

 圖13-3 Airplane按鈕被按下後的情形

如果要建立功能更繁複的工具列,或是在16位元版的Visual Basic環境下建立工具列,可以將圖片方塊控制項、影像控制項或者SSPanel控制項合併使用,模擬出一個工具列來。這個方法很類似狀態列建立的方法。先加入一個圖片方塊控制項到表單中,設定其Align屬性值為" 1 - 對齊表單上方",然後加入所需的按鈕到圖片方塊裡。即使使用者在程式執行時不斷調整表單寬度,Align屬性" 1 - 對齊表單上方"的設定會使圖片方塊的寬度保持與表單寬度平齊。

你可能需要將圖片方塊的BackColor屬性內容設定為深灰色,也可以試著調整BorderStyle屬性以美化控制項的外觀。如果要加強界面的提示效果,可以用 第十七章"線上輔助功能" 介紹的工具提示來為每一個按鈕加入工具提示。


參考資料:

請參閱第十七章"線上輔助功能"介紹的" 如何在應用程式中加入狀態列?" 

請參閱第十七章"線上輔助功能"介紹的" 如何替指令按鈕加上工具提示?" 

請參閱 第三十二章"進階應用程式" 有關使用工具列的範例。


如何在動態中改變表單的外觀?
 

在這裡我們要提供一個技巧讓你能夠在動態中改變表單的外觀:你可以設定某個控制項的Top或是Left屬性,把它移動到表單的可見範圍之外,讓控制項藏起來,等程式執行到適當的時機再顯示出這個控制項。為了要確保控制項被移動得夠遠,可以把它移動到表單的長或寬兩倍的位置上。如果把控制項原來的位置座標值存放在它的Tag屬性裡,稍後你可以很容易地把它移回原來的位置。請看以下的範例程式。當你按下cmdButton按鈕時,cmdButton會被隱藏起來,而在表單上按下滑鼠左鍵時,cmdButton會被移回原來的位置。

Option Explicit
Private Sub cmdButton_Click()
    cmdButton.Tag = cmdButton.Left
    cmdButton.Left = Screen.Width * 2
End Sub

Private Sub Form_Click()
    cmdButton.Left = cmdButton.Tag
End Sub

當使用者改變表單的大小時,應該隨時調整表單裡控制項的間隔,這個技巧需要用到Move方法來移動控制項,同時通常也需要動用到表單的ScaleWidth和ScaleHeight屬性。你可以把這些移動控制項的程式碼放在Resize事件程序中。


參考資料:

請參閱第十二章中介紹的" 如何讓表單自動地在螢幕上定位?" 

請參閱第十二章中介紹的" 如何使用頁籤控制項?" 


如何在動態中改變功能表?
 

在Visual Basic裡,我們可以在屬性視窗中修改功能表物件的屬性,就如同修改一般控制項的屬性一般,這個特性很容易會被忽略掉,但是它使得功能表的修改工作更易於管理。(我們仍然需要用「功能表編輯器」來建立功能表物件。)如果要取得某個功能表的屬性,可以從「屬性」視窗中最上面的下拉式清單裡選擇該功能表,功能表的屬性就會顯示在屬性視窗裡。


注意:

另一個使用功能表的方法是運用功能表控制項陣列,這個陣列可以增減功能表的功能選項,請參閱Visual Basic的文件中相關的資料。


如果把某個功能表的Visible屬性設為False,那麼不管是在執行階段或是設計階段,這個功能表及其底下的次功能表都會被隱藏起來。了解了這一點之後,現在我們要介紹如何建立一個具有多重功能選項群組的功能表。

請建立兩個不同的「檔案」功能表,分別取名為munFile1和munFile2,這兩個功能表可以有相同的Caption屬性設定值,但它們必須要有不同的Name屬性值。兩個功能表可以各有自己功能表選項,也可以有部份相同的選項。唯一要記住的一點是:Name屬性內容決不可相同。

不管是在設計階段或是執行階段,我們都可以用Visible屬性來切換兩個功能表,讓其中一個隱藏而另一個顯示出來。利用相同的原理,你可以建立好幾個功能表,在這些功能表之間切換,每次切換只保持一個功能表被顯示出來。你不用去管功能表選項的Visible屬性,因為當功能表被隱藏時,底下的選項也會跟著被隱藏起來。

延伸這個觀念,你可以建立多個編輯功能表,讓功能表選項隨著程式執行的情形而跟著改變,甚至可以換掉整個功能表列,用另一個功能表列來取代。

圖13-4和13-5顯示在同一張表單上兩個不同的功能表列,圖13-4是在「 Toggle Menus 」按鈕被按下前,圖13-5則是在按鈕被按下之後。


 

 圖13-4 一張具有不同功能表列的表單


 

 圖13-5 同一張表單顯示其第二個功能表列

如何移除表單的標題欄?
 

移除表單上標題欄有兩種方法:第一設定ControlBox的屬性值為False,刪除Caption屬性的內容,然後設定BorderStyle屬性的內容" 1 - 單線固定";第二,只要設定BoderStyle屬性為" 0- 沒有框線"即可。

第一種方法會產生一個具有單線框邊的但沒有標題欄的表單,第二種方法會產生一個既沒有框線也沒有標題欄的表單──即使ControlBox、MaxButton及MinButton屬性都被設為True,或者Caption屬性仍有文字都不會起作何作用。因此,如果要讓第二種表單有框線,必須自己動手畫出表單的框線。要注意的是,不管是用第一種或是第二種方法,都要記得先移除所有的功能表選項。

如何建立一個進度指示器?
 

利用ProgressBar控制項可以建立一個進度指示器,ProgressBar控制項被包含在Microsoft Windows Common Control 6.0s (MSCOMCTL.OCX)裡。在這裡,我們用一個實例來說明如何利用ProgressBar控制項來建立一個進度指示器。

以下的程式利用ProgressBar建立一個煮蛋用的3分鐘計時器。首先,在一張空白表單上加入下列的控制項:一個標籤控制項lblDone,一個指令按鈕控制項cmdStart,一個計時器控制項tmrTest,以及一個ProgressBar控制項prgEgg。其次,把lblDone的Caption屬性內容設為" Ready to start ",接下來,設定tmrTest的Enabled屬性為False,並且把Interval屬性值設為1000微秒。至於prgEgg的屬性就讓它們保留系統給的預設值。

最後,加入以下的程式到表單中:

Option Explicit

Private msngStartTime As Single
Private Const intSeconds As Integer = 180

Private Sub cmdStart_Click()
    prgEgg.Value = 0
    msngStartTime = 0
    tmrTest.Enabled = True
End Sub

Private Sub tmrTest_Timer()
    Dim sngPercent As Single
    If msngStartTime = 0! Then
        msngStartTime = Timer
    End If
    sngPercent = 100 * (Timer - msngStartTime) / intSeconds
    If sngPercent < 100 Then
        prgEgg.Value = sngPercent
        lblState.Caption = "CookingDear John, How Do I... "
    Else
        prgEgg.Value = 100
        lblState.Caption = "Done!"
        Beep
        tmrTest.Enabled = False
        prgEgg.Value = 0!
    End If
End Sub

圖13-6顯示程式執行的情形。


 

 圖13-6 使用ProgressBar控制項建立的進度指示器

在以上的程式中,除數180代表計時三分鐘,如果把這個除數調小,例如10,計時長度就會變為10秒。

ProgressBar還有許多的特性,例如,如果改變ProgressBar的Height屬性值,那麼顯示進度的藍色方塊就會跟著改變其高度。這只是其中一例,你可以利用這個程式作為基礎,自己去嘗試改變其它的屬性,看看會產生什麼效果。

自己設計的進度指示器
 

ProgressBar只適用於32位元的環境,如果你的工作環境是16位元的Visual Basic,可以用圖片方塊取代ProgessBar,設計自己的進度指示器。

我們用前面的例子來說明如何用圖片方塊取代ProgressBar,首先,以一個名為picProgress的圖片方塊控制項取代原來的prgEgg,在picProgress的範圍內畫出另一個PictureBox控制項,取名picFill。其次,設定picFill的BackColor為深藍色,而picProgress的BackColor為白色(你可以挑選喜愛的顏色)。接下來,把picProgress的ScaleWidth屬性值設為100,ScaleHeight屬性值設為1。程式部份不用做大幅的改變,這個計時器便完成了。

以下就是新計時器的程式部份:

Option Explicit

Private msngStartTime As Single
Private Const intSeconds As Integer = 180

Private Sub cmdStart_Click()
    msngStartTime = 0
    tmrTest.Enabled = True
End Sub

Private Sub Form_Load()
    picFill.Move 0, 0, 0, 0
End Sub

Private Sub tmrTest_Timer()
    Dim sngPercent As Single
    If msngStartTime = 0! Then
        msngStartTime = Timer
    End If
    sngPercent = 100 * (Timer - msngStartTime) / intSeconds
    If sngPercent < 100 Then
        picFill.Move 0, 0, sngPercent, 1
        lblState.Caption = "CookingDear John, How Do I... "
    Else
        lblState.Caption = "Done!"
        Beep
        tmrTest.Enabled = False
        picFill.Move 0, 0, 0, 0
    End If
End Sub

這兩個計時器唯一的差別只在外觀上有所不同,它們的計時功能完全一樣。圖13-7顯示的是第二種計時器的執行情形。


 

 圖13-7 自己設計的計時器

如何使用滑鈕控制項?
 

滑鈕控制項(Slider Control,包含在MSCOMCTL.OCX中)和捲軸控制項(VScrollBar和HScrollBar)十分類似,但Slider控制項可以讓使用者在一定的數值範圍內選擇一個確切的值,而捲軸控制項則無法做到這一點。

捲軸控制項可以說是"質"的控制項,它提供視覺界面,讓使用者可以知道一個約略值,如音量的大小;另一方面,Slider控制項則像"量"的控制器,它允許使用者從一定的數值範圍內選定一個確切的值或者在這個範圍中指定一個較小的數值範圍。

當Slider控制項的SelStart屬性被設為True時,SelStart的屬性和SelLength屬性內含的是使用者所選取的數值範圍的兩端界限值。Microsoft建議,當使用者按住鍵,同時移動Slider的控制鈕時,設計者應該用程式來設定這兩個屬性值。Visual Basic的「線上手冊」對於使用SelectRange的技巧有相當精彩的範例解說。

圖13-8顯示的是一個假想的資料庫應用程式,這個程式讓使用者選定一個高度範圍,然後列出在這高度範圍內的主要城市名稱。程式中的Slider控制項不僅可以列出在這高度範圍內的所有城市,也允許使用者只選定一個特定高度,然後列出在這個高度上的所有城市。


 

 圖13-8 使用Slider控制項設定一個數值範圍

如何使用上下控制項?
 

上下控制項(UpDown Control)是Windows 95和Windows NT的標準控制項,它包含在Microsoft Windows Common Control-2 6.0 (MSCOMCT2.OCX)中。把某個控制項設為UpDown控制項的協同控制項之後,可以用UpDown控制項很容易地增減協同控制項的值。圖13-9顯示的是一個UpDown控制項和協同的文字方塊控制項。


 

 圖13-9 使用UpDown控制項來增減文字方塊中的數值

作為一個數值增減的控制項,UpDown控制項可以取代ScrollBar控制項。在以前,如果用ScrollBar控制項來增減文字方塊控制項中的數值,必須自己動手寫程式,而現在如果用UpDown控制項,只要在UpDown控制項的「屬性頁」對話方塊中(圖13-9),設定這個文字方塊為其協同項即可。

設定UpDown控制項的協同控制項有以下幾個步驟:

  1. 加入UpDown控制項到工具箱中,然後在表單上畫出一個UpDown控制項及其他相關控制項。
  2. 在表單上選取UpDown控制項,然後在屬性視窗中的(自訂)欄連續按兩下滑鼠左鍵。
  3. 在「屬性頁」對話方塊中選取「協同」頁籤。
  4. 在「協同控制項」一欄中,鍵入相關控制項名稱。你也可以點選「自動設定」核取方塊,UpDown控制項會自動地以前一個駐點順序(Tab Order)上的控制項為協同控制項。
  5. 在「協同屬性」下拉式清單中,選取想要增減的屬性值,通常都會選(預設值)或是Value屬性。在選取了「協同屬性」後,「與協同控制項同步」核取方塊會被自動地核取,這表示UpDown控制項與協同控制項中的某個屬性已經完成同步化。
  6. .按下「確定」。


 

 圖13-10 設定UpDown控制項的Buddy屬性以改變另一個控制項的值

當程式執行時,如果按下UpDown控制項的按鈕,協同控制項的值就會隨之遞增或遞減。在某些情況下,你需要將協同控制項設定初值。在上述範例中,文字方塊控制項的預設值為" Text1",因此,程式剛執行時," Text1"會被顯示出來,如果按下UpDown控制項的按鈕,"Text1"才會被數字取代,如果不要讓"Text1"出現,就要為文字控制項的Text屬性設定初值。

在「屬性頁」對話方塊的「捲動」頁籤中,如圖13-11,你可以設定捲動範圍及捲動速率;如果點選了「循環」核取方塊,那麼協同控制項的值會在捲動範圍內循環,不會在遇到最大值或最小值時停下來。


 

 圖13-11 設定UpDown控制項的捲動範圍和捲動速率

參考資料:

請參閱第六章"ActiveX控制項"中的 Blinker控制項範例 ,這個範例對於使用UpDown控制項有更進一步的介紹。


如何使用FlatScrollBar控制項?
 

FlatScrollBar控制項是HScrollBar和VScrollBar控制項的加強版,其主要目的在於使Visual Basic應用程式的外觀與Internet Explorer的外觀一致化。FlatScrollBar控制項的Orientation屬性可以讓你選擇它的水平或垂直方向,因此不需要有兩種不同的FlatScrollBar。

FlatScrollBar提供了許多屬性讓我們能更多樣化地調整其外觀,舉其中一例,Appearance屬性提供三種外觀選項:二維平面式的外觀(像Internet Explorer的界面),三維捲軸的外觀,以及另一種特殊的二維外觀(當滑鼠指標移到箭號上時,箭號按鈕會變成三維外觀)。另外,Arrows屬性讓你可以選擇地關閉其中一個箭號按鈕。

現在讓我們來實際練習一下如何使用FlatScrollBar控制項。

首先建立一張空白表單,然後加入一個FlatScrollBar控制項 ( 如果工具箱中沒有FlatScrollBar控制項,請從「專案」功能表中選擇「設定使用元件」,然後選取Windows Common Controls-2 6.0)。

加入三個指令按鈕:cmdOrientation、cmdAppearance和cmdArrows,並且按照圖13-12所示設定它們的Caption屬性。再加入一個標籤控制項lblState用以顯示CoolBar、Appearance和Orientation屬性的設定值。最後,加入以下這段程式碼到表單中。


 

 圖13-12 設計中的FlatScrollBar示範表單
Option Explicit

Private Sub cmdAppearance_Click()
    fsbDemo.Appearance = (fsbDemo.Appearance + 1) Mod 3
    Display
End Sub

Private Sub cmdArrows_Click()
    fsbDemo.Arrows = (fsbDemo.Arrows + 1) Mod 3
    Display
End Sub

Private Sub cmdOrientation_Click()
    fsbDemo.Orientation = (fsbDemo.Orientation + 1) Mod 2
    Display
End Sub

Private Sub Display()
    lblState.Caption = _
    "Orientation:" & fsbDemo.Orientation & vbCrLf & _
    "Appearance:" & fsbDemo.Appearance & vbCrLf & _
    "Arrows:" & fsbDemo.Arrows
End Sub

Private Sub Form_Load()
    Display
End Sub

執行這個應用程式並且試著按一按三個按鈕,就可以看到這些屬性所有可能的設定值。例如,圖13-13是當表單初次顯示時,三個屬性的設定值,而圖13-14是當Orientation按鈕被按下後屬性的設定值。

當你執行這個程式時,可能看不出Appearance屬性值是1和屬性值是2的差別,因為這兩種情況下,FlatScrollBar的外觀都是二維平面的。這兩者唯一的差別只有在滑鼠游標經過控制項的箭號按鈕時才看得出來。如果Appearance屬性值為1,滑鼠游標不會對箭號按鈕產生任何作用,而如果是2,那麼當滑鼠游標經過箭號按鈕時,它們會立刻突出成為三維的按鈕。


 

 圖13-13 表單初次顯示時FlatScrollBar的外觀


 

 圖13-14 Orientation按鈕被按下後FlatScrollBar的外觀

如何使用CoolBar控制項?
 

CoolBar控制項(在Microsoft Windows Common Controls-3 6.0裡)設計的目的是用來模仿Internet Explorer的工具列,它是一個Band物件集合的收納器,而每一個Band物件則是一個完整的小工具列,在它的左緣都有一個移動把手讓使用者可以在CoolBar中移動Band物件。請立刻試著移動Internet Explorer的Band物件,這樣你會比較清楚CoolBar控制項的運作方式。在圖13-15或圖13-16中,你可以看到功能表和工具列(Band物件集合)在Internet Explorer中移動的結果。


 

 圖13-15 移位前的Internet Explorer功能表和工具列Band物件


 

 圖13-16 移位後的功能表和工具列Band物件

CoolBar提供了許多屬性讓我們可以完全自訂CoolBar的表現方式。例如,我們可以在CoolBar控制項中加入任意個Band物件,而CoolBar的Orientation屬性可以讓我們選擇是要以水平對齊方式還是垂直對齊方式來排列所有Band物件。

每一個Band物件都有一個Index屬性以作為辨識的依據,而且都有一個Position屬性用來記錄該Band物件在CoolBar控制項中的位置。另外,每一個Band物件都有一個Caption屬性,其設定值會顯示在移動把手的右邊。如果想在CoolBar或Band物件上放入背景圖案,它們也都提供相關的屬性可以達到這種效果。

要熟悉CoolBar控制項的最好方法就是用一張空白表單放上一個CoolBar控制項,實際練習一下改變CoolBar的各種屬性。請記住,使用CoolBar控制項的(自訂)屬性叫出「屬性頁」對話方塊才能方便地設定各種CoolBar的屬性。