Visual Basic 程式設計 圖形化使用者介面 ListBox & ComboBox Menu ( 功能表 ) and PopupMenu CommonDialog StatusBar ( 狀態列 )
ComboBox 屬性 List ListCount ListIndex Sorted Style Text 所有元素形成的陣列元素的數目被選擇的元素的位置 -1 表示未選擇是否排序風格被選擇的元素的內容 2
Private Sub Command1_Click() Combo1.AddItem (Text1.Text) End Sub Private Sub Form_Click() MsgBox Combo1.ListCount MsgBox Combo1.ListIndex MsgBox Combo1.List(Combo1.ListIndex) End Sub 3
ComboBox (cont.) 方法 AddItem( 字串 [, 位置 ]) 新增元素 Clear RemoveItem( 數字 ) 清除所有的元素 清除某一個元素 Style vbcombodropdown vbcombosimple vbcombodropdownlist 可自行輸入 不可自行輸入 4
ListBox 屬性 Columns List ListCount ListIndex MultiSelect Sorted Style Text 欄位的數目所有元素形成的陣列元素的數目被選擇的元素的位置 -1 表示未選擇是否可以一次選擇多個元素是否排序風格被選擇的元素的內容 5
ListBox (cont.) 屬性 Selected( 數字 ) 方法 AddItem( 字串 [, 位置 ]) Clear RemoveItem( 數字 ) 檢查某個元素是否有被選新增元素清除所有的元素清除某一個元素 Style vblistboxstandard vblistboxcheckbox 不可使用 MultiSelec 6
ListBox (cont.) MultiSelect 0 不可同時選擇多個元素 1 可以 2 予許用拖曳的方式選擇 MultiSelect=0 MultiSelect=2 7
Private Sub Command1_Click() If (List1.ListIndex <> -1) Then Text1.Text = Text1.Text + vbnewline + _ List1.List(List1.ListIndex) End If End Sub Private Sub Command2_Click() Dim i As Integer For i = 0 To List2.ListCount - 1 If (List2.Selected(i) = True) Then Text1.Text = Text1.Text + vbnewline + _ List2.List(i) End If Next i End Sub 8
Try it! 請撰寫一個表單程式, 如下圖所示 9
Visual Basic 程式設計 圖形化使用者介面 ListBox & ComboBox Menu ( 功能表 ) and PopupMenu CommonDialog StatusBar ( 狀態列 )
Menu ( 功能表 ) 功能表之前所設計的程式都是單一畫面或單一功能的程式, 如果想要設計更複雜更完整的程式, 則需要設計 功能表 一個簡單的功能表如右圖 : 名詞 : 1. 標題 : 功能表列或 ( 次 ) 功能表選項的文字 2. 有效指令 / 失效指令 : 有效指令用實體字顯示, 失效指令用虛體字顯示 3. 快速鍵 : 可直接按組合鍵執行選項 4. 核取記號 : 該選項的開 / 關狀態 選取此選項時, 核取記號由出現變為消失或由消失變為出現 5. 箭頭符號 : 該選項之下尚有次功能表 11
Menu ( 功能表 ) (cont.) 按右鍵 註 : 也可以在工具 ->Menu Editor 中選取 12
Menu 實作範例 實作下圖的功能表, 詳細規格如下 : 13
Menu 實作範例 (cont.) 先選取表單, 然後執行 工具 / 功能表編輯器 指令 將出現如下的功能表編輯器對話方塊 14
1. 設定 格式 功能表與 關於 功能表 1: 輸入 3: 輸入 5: 輸入 2: 出現了格式 4: 按下 7: 輸入 6: 出現了關於 15
2. 設定 轉換為大寫 指令 4: 輸入 (&U) 將來會變成 (U) 6: 輸入 7: 選取 ( 設定快捷鍵 ) 1: 選取關於 2: 按下 3: 關於被移往下一個 5: 出現轉換為大寫 (&U) 8: 按下 9: 被移往下一層 16
3. 設定 轉換為小寫 指令 2: 取消啟用 ( 這樣就變成失效指令 ) 1: 仿照 Step5 設定相關欄位 17
4. 設定 分隔線 設定 分隔線 ; 如下畫面 ( 把分隔線當作指令來設定 ) 1: 於欄位中輸入 -, 將來就會變成分隔線 18
5. 設定 字型 第二條分隔線 結束 參照前面步驟設定 字型 第二條分隔線 結束 設定 19
6. 插入 底線 指令 在 第二條分隔線 前插入 底線 指令, 並如下設定 1: 輸入 2: 輸入 3: 勾選 ( 將來指令前就會出現核選記號 ) 20
7. 設定 粗體 指令 4: 輸入 6: 輸入 1: 選取底線 2: 按下 3: 底線被移往下一個 5: 出現了粗體 7: 按下 8: 被移往下一層 21
8. 設定 斜體 指令 仿照 Step7, 設定 斜體 指令, 結果如圖, 最後按下 確定 鈕即可完成功能表的製作 2: 按下 1: 設定 22
9. 完成功能表 執行程式, 結果正如我們所要的功能表 23
Menu 實作範例 (cont.) 功能表的程式設計設計一個透過功能表內所提中的指令進行字型設定的程式 24
Menu 實作範例 (cont.) 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 Private Sub Form_Load() If mnuunderline.checked Then lblresult.fontunderline = True Else lblresult.fontunderline = False End If End Sub Private Sub mnuabout_click() Cls Print " 版權所有!!" End Sub Private Sub mnubold_click() lblresult.fontbold = True End Sub Private Sub mnuend_click() End End Sub Private Sub mnuitalic_click() lblresult.fontitalic = True End Sub 25
Menu 實作範例 (cont.) 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 Private Sub mnulowercase_click() lblresult.caption = "this is a book." mnulowercase.enabled = Fasle mnuuppercase.enabled = True End Sub Private Sub mnuunderline_click() If mnuunderline.checked Then mnuunderline.checked = False lblresult.fontunderline = False Else mnuunderline.checked = True lblresult.fontunderline = True End If End Sub Private Sub mnuuppercase_click() lblresult.caption = "THIS IS A BOOK." mnuuppercase.enabled = Fasle mnulowercase.enabled = True End Sub 26
Menu 實作範例 (cont.) 執行 格式 / 轉換為大寫 格式 / 底線 格式 / 字型 / 粗體 格式 / 字型 / 斜體 指令後 27
Try it! 請強化上面的程式, 透過功能表的選項讓 Label 元件能夠修改其背景顏色 格式 顏色 紅色 (R) Ctrl+R 綠色 (G) Ctrl+G 藍色 (B) Ctrl+B 關於 核選式 28
Private Sub Blue_Click() Red.Checked = False Green.Checked = False Blue.Checked = True Line (10, 10)-(50, 50), vbblue, BF End Sub Private Sub Exit_Click() End End Sub Private Sub Green_Click() Red.Checked = False Green.Checked = True Blue.Checked = False Line (10, 10)-(50, 50), vbgreen, BF End Sub 程式還沒完喔 29
PopupMenu 利用 Menu Editor 製做選單 Visible 選 False 利用 PopupMenu 打開 popup 選單 &File &Exit &pop &Left &Right &Center Visible=False 30
PopupMenu (cont.) 31
PopupMenu (cont.) Private Sub Center_Click() Text1.Text = Center End Sub Private Sub form_click() Call PopupMenu(pop) End Sub Private Sub Left_Click() Text1.Text = Left End Sub Private Sub Right_Click() Text1.Text = Right End Sub 32
Visual Basic 程式設計 圖形化使用者介面 ListBox & ComboBox Menu ( 功能表 ) and PopupMenu CommonDialog StatusBar ( 狀態列 )
CommonDialog 新增 ( 參考 ActiveX 的方式 ) Microsoft Common Dialog Control 方法 ShowColor ShowFont ShowHelp ShowOpen ShowPrinter ShowSave 34
選擇顏色 -ShowColor 35
選擇顏色 -ShowColor (cont.) Private Sub form_click() Dim color As Long CommonDialog1.Flags = cdlccrgbinit CommonDialog1.ShowColor color = CommonDialog1.color Line (0, 0)-(100, 100), color, BF End Sub 利用 color 屬性取得顏色 注意形別, 只能是 Long 要設定 Flag 36
選擇字型 -ShowFont 37
選擇字型 -ShowFont (cont.) 執行 ShowFont 前, 設定 Flags 為 cdlcfboth, cdlcfprinterfonts, cdlcfscreenfonts 三選一讀取選取字型屬性 FontSize FontBold FontItalic FontUnderLine FontName 38
選擇字型 -ShowFont (cont.) Form 的屬性Private Sub form_click() CommonDialog1.Flags = cdlcfboth CommonDialog1.ShowFont FontSize = CommonDialog1.FontSize FontBold = CommonDialog1.FontBold FontItalic = CommonDialog1.FontItalic FontUnderline = CommonDialog1.FontUnderline FontName = CommonDialog1.FontName Print " 你好嗎 " End Sub 39
開啟說明檔 -ShowHelp 設定 Help 檔檔名 HelpFile= 檔名 設定開啟模式 HelpCommand=cdlHelpKey HelpCommand=cdlHelpContents 40
開啟說明檔 -ShowHelp (cont.) 41
開啟說明檔 -ShowHelp (cont.) Private Sub form_click() CommonDialog1.HelpFile = _ "c:\winnt\help\dao35.hlp" CommonDialog1.HelpCommand = _ cdlhelpkey CommonDialog1.ShowHelp End Sub 請自行指定說明檔的路徑 42
開啟檔案 -ShowOpen 出現開啟檔案對話盒傳回使用者輸入的檔案名稱開啟的動作自己做 ShowSave 與 ShowOpen 相似 43
開啟檔案 -ShowOpen (cont.) 設定 Filter Filter= 描述一 filter1 描述二 filter2 Filter= 文字檔 *.txt 圖形檔 *.gif;*.jpg 取得檔名 FileTitle 取得完整檔名 FileName 44
開啟檔案 -ShowOpen (cont.) 45
Try it! 請使用 ShowOpen 撰寫一個只能開啟圖片檔的檔案對話盒, 並且將開啟的圖片顯示在表單中的 PictureBox 上 46
Visual Basic 程式設計 圖形化使用者介面 ListBox & ComboBox Menu ( 功能表 ) and PopMenu CommonDialog StatusBar ( 狀態列 )
StatusBar 新增 MicroSoft Windows Common Controls 按右鍵 屬性 增加 Panel 48
StatusBar (cont.) 指定順序 49
StatusBar (cont.) Alignment sbrleft 置左 sbrright 置右 sbrcenter 置中 Bevel sbrnobevel sbrinset SbrRaised 50
StatusBar (cont.) Style sbrtext sbrdate sbrtime sbrcaps sbrnum sbrins sbrscrl 51
StatusBar (cont.) AutoRaise sbrnoautosize sbrspring 彈簧 sbrcontents 依內容調整大小 52
StatusBar (cont.) Private Sub form_click() StatusBar1.Panels(1).Text = " 你好嗎 " End Sub Panel 的陣列, 從 1 開始 53