敘述及物件

Similar documents
Microsoft PowerPoint - VB14.ppt

穨ac3-3.PDF

2

MVB-1001.DOC

2010年3月计算机等级考试四级网络工程师笔试

0 0 = 1 0 = 0 1 = = 1 1 = 0 0 = 1

Microsoft PowerPoint - VB5

VB程序设计教程

Excel VBA Excel Visual Basic for Application

星星排列 _for loop Protected Sub Page_Load(ByVal sender As Object, ByVal e As Dim h As Integer = 7 'h 為變數 ' Dim i, j As Integer For i = 1 To h

Microsoft PowerPoint - Chapter5

《Visual Basic程序设计》实验课

四川省普通高等学校

3 Driver do Microsoft Access (*.mdb) hisdata IFIX 1.4

輕鬆學 Dreamweaver CS5 網頁設計..\Example\Ch0\ \.html..\example\ch0\ \mouse.txt..\example\ch0\ \ _Ok.html 學習重點 JavaScript 複製程式碼 mouse.txt Ctrl+C Ctrl+C 0-4

投影片 1

1 1 Excel VBA 說明 ( ) (_) STEP4 Excel 2 STEP5 A1 1 B2 2 C3 3 STEP6 A1 STEP7 > > 1-11


Chapter 16 集合

Chapter 3 Camera Raw Step negative clarity +25 ] P / Step 4 0 ( 下一頁 ) Camera Raw Chapter 3 089

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new

Microsoft PowerPoint - OPVB1基本VB.ppt

投影片 1

840 提示 Excel - Excel -- Excel (=) Excel ch0.xlsx H5 =D5+E5+F5+G5 (=) = - Excel 00

Microsoft Word - 小心翼翼的二十一點N.doc

Photoshop CS3 影像創造力 基礎講堂 8 學習流程 學習重要性 學習難度 必學指令工具 實作應用範例 創造舞台燈光的漸層繪圖 延伸學習 雜訊與半透明漸層 8-1 Photoshop Photoshop 8 136

untitled

untitled

AutoCAD 用戶如何使用 ArchiCAD

IsPostBack 2

<4D F736F F D D342DA57CA7DEA447B14D2DA475B57BBB50BADEB27AC3FEB14DA447B8D5C344>

任務二 : 產生 20 個有炸彈的磚塊, 放在隨機的位置編輯 Block 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) Write a description of class

Visual Basic D 3D

Ch6 Visual Basic表單,功能表與模組

TPM BIOS Infineon TPM Smart TPM Infineon TPM Smart TPM TPM Smart TPM TPM Advanced Mode...8

PowerPoint 簡報

投影片 1

1

CU0594.pdf

Spyder Anaconda Spyder Python Spyder Python Spyder Spyder Spyder 開始 \ 所有程式 \ Anaconda3 (64-bit) \ Spyder Spyder IPython Python IPython Sp

VB控件教程大全

ACI pdf


(Methods) Client Server Microsoft Winsock Control VB 1 VB Microsoft Winsock Control 6.0 Microsoft Winsock Control 6.0 1(a). 2


Microsoft Word - 專題製作研究報告書.doc

27 :OPC 45 [4] (Automation Interface Standard), (Costom Interface Standard), OPC 2,,, VB Delphi OPC, OPC C++, OPC OPC OPC, [1] 1 OPC 1.1 OPC OPC(OLE f

INTRODUCTION TO COM.DOC

投影片 1

untitled

7 DataSet DataSet TableColumnDataSet DataSet NOTE DataSet DataAdapterDataSetDataAdapter DataSet DataSetDataSetDataSet NorthwindDataSet DataSet Dim Nor

jsj0.nps

PowerPoint Presentation

Microsoft Word - word2007排版

事件的處理

Microsoft Word - GUI design.doc

Microsoft PowerPoint - VB3

Microsoft Word - 2CA13內文.doc

Microsoft PowerPoint - 11_EventHandle.pptx

書面

單步除錯 (1/10) 打開 Android Studio, 點選 Start a new Android Studio project 建立專案 Application name 輸入 BMI 點下 Next 2 P a g e

TwinCAT 1. TwinCAT TwinCAT PLC PLC IEC TwinCAT TwinCAT Masc

Microsoft Word - 02.doc

Microsoft PowerPoint - 18_Event.pptx

典型自编教材

FETnet - Acer Iconia Tab  (A500 Wi-Fi 版) 平板電腦操作指南

Microsoft Word - 益智小遊戲之研究~2048.docx

v1.0.cdr

創 作 動 機 因 未 成 年 懷 孕 的 案 例 從 國 中 時 期 就 在 身 邊 屢 屢 發 生, 這 意 外 中 的 小 生 命 會 讓 一 個 人 或 說 是 一 對 父 母 的 人 生 產 生 劇 烈 衝 擊, 先 不 談 是 否 成 全 生 命 的 誕 生, 往 往 就 在 社 會 倫

3-1 Wii ( )

Chapter V.S. PC

ActiveX Control

吳元康

ebook70-19

untitled

2 WF 1 T I P WF WF WF WF WF WF WF WF 2.1 WF WF WF WF WF WF

封面-12

E-Form Word

untitled

Outline USB Application Requirements Variable Definition Communications Code for VB Code for Keil C Practice

CC213

6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM

ThreeDtunnel.doc

untitled

Python Facebook put_wall_post(message,attachment [,profile_id]) put_wall_post(message,attachment [,profile_id]) message message attachment profi

<img>

Transcription:

Chapter 7. 常用控制項 7.1 其他控制項 7.2 功能表 Menu 7.3 時間 7.4 滑鼠與鍵盤

7.1 其他控項制 在前面的章節我們介紹了許多的控制項, 有 Label TextBox CommandButton OptionButton Frame, 按下來我們要介紹其他的控制項, 請拭目以待 7.1.1 CheckBox 核取方塊 之前在第四章我們已經遇到了 Option Button 選擇按鈕和 Frame 框架, 同樣 都是 Option Button 和 Check Box 到底有什麼不同的用法冽 ~ 現在我們就來比較一 下吧! Option Button Check Box 外型性質 單選 複選 Value 按鈕被選取的狀態 False: 選項按鈕未被選取 True: 選項按鈕已被選取 0- 不核取 : 核取方塊未被核取 1- 核取 : 核取方塊已被核取 2- 灰色 : 核取方塊內 v 符號呈現灰色 大致上, 只有這些差別, 其他屬性都一樣, 框架的用法也一樣, 切記! 要剪下再 貼上 7.1.2 ListBox 清單方塊 清單方塊控制項可列出資料供使用者選取, 若項目數超過屬性 Columns 所設定的時候,VB 會自動產生垂直捲軸作為檢視之用 但是, 如果項目名稱超過清單方塊的水平長度,VB 不會產生水平捲軸, 所以有些字會看不到, 因此清單方塊的長度需要稍微調一下 屬性名稱 Columns List ListIndex MultiSelect 功能說明清單方塊水平的欄位個數清單方塊中所有的項目清單方塊所選定項目的索引值, 其值由 0 開始編號清單方塊是否可單選及複選方式 0: 不能重複選取 1: 簡單多重選取, 使用者只能以滑鼠點選各個項目的方式複選 2: 進階多重選取, 可讓使用者利用 Ctrl 鍵做不連續選取, 或利用 Shift 鍵做連續選取 1. 想要增加清單方塊中的內容 ( 叫做項目名稱 ), 除了可在表單的 List 屬性加入, 亦可於程式碼中利用 AddItem 方法寫入 :

語法 物件名稱. AddItem 項目名稱, 索引值 項目名稱如果是字串, 別忘了加雙引號, 否則你想要加入的資料可是會變成一行空白唷 ~ 索引值就是你要把新加的項目名稱放在第幾個位置 2. 想要刪除清單方塊中的某一項目名稱, 除了可在表單的 List 屬性刪除, 亦可於程式碼中利用 RemoveItem 方法刪除 : 語法 物件名稱.RemoveItem 索引值 3. 想要刪除清單方塊中的全部項目名稱, 可用 Cls 方法刪除 : 語法 物件名稱.Cls 4. 資料的讀取與設定 語法取出的資料 = 清單方塊名稱. List( 索引值 ) 5. 資料的筆數讀取 語法 筆數 = 清單方塊名稱. ListCount 7.1.3 ComboBox 下拉式清單方塊 只可單選的下拉式清單方塊的 List 和 ListIndex 屬性跟清單方塊一樣用途, 除 此之外還一些需要注意的屬性 :

屬性功能說明 Stored 下拉式清單方塊中的項目是否要依照字母大小排序, 預設值為 False Style 下拉式清單方塊的類型 : 0: 組合下拉式 ( 預設值 ) 程式執行時, 必須按 下拉扭 才會看到項目名稱 使用者可在文字方塊直接輸入選取項目, 亦可於清單方塊選取項目 1: 組合式清單方塊會在文字方塊的下方, 所有的項目一目了然 使用者可直接輸入選取項目, 亦可於清單方塊選取項目 2: 單純下拉式程式執行時, 必須按 下拉扭 才會看到項目名稱 使用者只可於清單方塊選取項目 1. 下拉式清單方塊中資料的增加 : 語法 物件名稱. AddItem 項目名稱 2. 下拉式清單方塊中資料的刪除 : 語法 物件名稱.RemoveItem 項目名稱 3. 資料的筆數讀取 : 語法 物件名稱. ListCount

範例 表單及程式碼 按下記錄之後出現的表單 程式碼 Private Sub chooseall_btn_click() ' 全選的按鈕 For i = 0 To 8 Check(i).Value = 1 Next i

'changeday 這個名稱是我自己命名的, 不是 VB 裡的唷 ~ Private Sub changeday() ' 如果改變年或月, 日也會跟著改 Dim d As Integer ' 日 ' 如果是 2 月就判斷是否為潤年 If month_combo.text = 2 Then If year_combo.text Mod 4 = 0 Then d = 29 Else d = 28 '1~7 月的偶數月為 30 奇數月為 31,8~12 則反之 Else If month_combo.text <= 7 Then If month_combo.text Mod 2 = 0 Then d = 30 Else d = 31 Else If month_combo.text Mod 2 = 1 Then d = 30 Else d = 31 ' 先清除再把 day_combo 的選項們加進去, 不然會一直加, 就會有好多個重覆的選項了, 如果看不懂我在講什麼, 那就把 day_combo.clear 這行刪除看會怎樣吧!! day_combo.clear For i = 0 To d - 1 day_combo.additem 1 + i, i Next i day_combo.text = day_combo.list(0) ' 預設 day_combo 第一個被選取 Private Sub year_combo_click() ' 按下 year_combo Call changeday

Private Sub month_combo_click() ' 按下 month_combo Call changeday Private Sub deleteall_btn_click() ' 全刪的按鈕 For i = 0 To 8 Check(i).Value = 0 Next i Private Sub Form_Activate() For i = 0 To 30 ' 年 year_combo.additem 2007 - i, i Next i For i = 0 To 11 ' 月 month_combo.additem 1 + i, i Next i For i = 0 To 30 ' 日 day_combo.additem 1 + i, i Next i Private Sub ok_cmd_click() Dim gender As String ' 性別的設定 Dim eat As String ' 吃葷還是素 Dim love_fruit As String ' 喜歡的水果 Dim message As String 'MsgBox 顯示的訊息 ' 判別男女 If male_rdo.value = True Then gender = male_rdo.caption Else gender = female_rdo.caption ' 判別吃素否 If huan_rdo.value = True Then eat = huan_rdo.caption Else eat = su_rdo.caption ' 喜歡的水果 For i = 0 To 8

If Check(i).Value = 1 Then love_fruit = love_fruit & Check(i).Caption & " " Next i ' 設定 message 的值, 其實只有一行, 因為不夠寬所以下面有很多行 message = message & " 姓名 :" & Text1.Text & vbcrlf & " 性別 :" & gender & vbcrlf & " 生日 :" & year_combo.text & " 年 " & month_combo.text & " 月 " & day_combo.text & " 日 " & vbcrlf & " 吃 " & eat & vbcrlf & " 喜歡的水果 :" & love_fruit & vbcrlf MsgBox message, vbinformation, " 您所輸入之個人資料 " ' 把 message 的值加到 showform 的 showdata_list 裡 showform.showdata_list.additem message & vbcrlf Private Sub show_click()' 呼叫 showform 這個視窗 showform.show Private Sub un_btn_click() ' 反選的按鈕 For i = 0 To 8 If Check(i).Value = 1 Then Check(i).Value = 0 ElseIf Check(i).Value = 0 Then Check(i).Value = 1 Next i

7.2 功能表 Menu 什麼是功能表? 功能表就是下圖中被紅色框框框起來的東西 在此功能表中, 功能表選項有 : 檔案 編輯 檢視 我的最愛 工具 說明 其中, 工具的次功能表選項包括 : 郵件和新聞 同步處理 Windows Update 等 而郵件和新聞的次功能表選項有 : 閱讀郵件 新郵件 等 最多有六層 相信大家都很清楚功能表的作用, 那麼我們就直接來講解做法 ~ 首先要介紹給大家認識的新朋友就是 功能編輯器, 想要產生 檔案 編輯 檢視... 等, 就得靠它 想要叫出它, 有三種方法 : 按 Ctrl+E; 按右鍵, 就可以看到了, 把它按下去 ; 或者, 按 工具 功能編輯器, 就會出現下面的東西了

選項 說明 標題 (P) 設定功能表選項控制項的名稱 EX: 在此位置填上 檔案 (&F), 在表單上會顯示 檔案 (F) 名稱 (M) 設定選項控制項在程式裡的名稱 快速鍵 (S) 設定組合鍵 EX:Ctrl+C 是複製 Ctrl+V 是貼上 核取式 (C) 若勾選, 則功能表上的此項目前面會有一個 可用 Checked 屬性 (true or false) 來決定 是否顯示 啟用 (E) 不勾選則功能表上的此項目會呈灰色字體且無法選取 亦可在程 式碼中用 Enabled 屬性的 true or false 來設定 顯示 (V) 不勾選則無法顯示於功能表上 下一個 (N) 當設定完某一選項控制項後, 按下此鈕可進行可進行設定下一個 選項控制項 選項清單方 所有設定好的選項控制項皆在此顯示 塊 插入 (I) 按下後, 會在選項清單方塊中所點選的選項控制項的上一行, 插 入一個空的選項控制項 刪除 (T) 按下後, 會刪除你所點選的選項控制項 位置調整鈕 下列四個 檔案 (&F) 按下 後會變成 檔案 (&F), 在表單上就會往上提 升一個等級 檔案 (&F) 按下 後會變成 檔案 (&F), 在表單上就會往下一 個等級放

所選取的選項控制項會跟上一行的選項控制項交換 所選取的選項控制項會跟下一行的選項控制項交換 範例 表單 程式碼 Private Sub algerian_click() ' 變字型 test.font = "Algerian" ' 這是一種字型的名稱 Private Sub blue_click() ' 表單的背景變藍色 BackColor = RGB(0, 255, 0) Private Sub bold_click() ' 字體是否改為粗體 If bold.checked Then ' 如果 bold 被按下, 字體就不是粗體, 且勾 v 不顯示 test.fontbold = False bold.checked = False Else test.fontbold = True bold.checked = True Private Sub curlzmt_click()' 變字型 test.font = "Curlz MT" Private Sub end_click() ' 結束 End Private Sub Form_Load() ' 一開始設定斜體和粗體的選項為 false italic.checked = False bold.checked = False

Private Sub green_click() ' 背景變綠色 BackColor = RGB(0, 0, 255) Private Sub italic_click() ' 字體是否改為斜體 If italic.checked Then test.fontitalic = False italic.checked = False Else test.fontitalic = True italic.checked = True Private Sub lower_click() ' 字體改為小寫 test.text = LCase(test.Text) lower.enabled = False upper.enabled = True Private Sub new_click()' 變字型 test.font = " 新細明體 " Private Sub red_click()' 背景變紅色 BackColor = RGB(255, 0, 0) Private Sub standard_click()' 變字型 test.font = " 標楷體 " Private Sub underline_click() ' 底線 If underline.checked Then underline.checked = False test.fontunderline = False Else underline.checked = True test.fontunderline = True Private Sub upper_click() ' 字體改為大寫 test.text = UCase(test.Text) lower.enabled = True

upper.enabled = False 執行結果 : 選擇 Curlz MT 字型 選擇粗體 背景選擇紅色

7.3 時間 VB 提供了許多日期 時間的函數供使用者使用, 且可以搭配運算子進行運 用, 以下就用實例來講解 Now Date Time Timer Year() Month() Day() Hour() Minute() Second() Weekday() Format( 時間, 格式 ) 傳回現在的日期和時間傳回現在的日期傳回現在的時間傳回從當天零點開始至現在的秒數傳回括號內使用者所填寫的時間的年份傳回括號內使用者所填寫的時間的月份傳回括號內使用者所填寫的時間的日份傳回括號內的時傳回括號內的分傳回括號內的秒傳回括號內的星期, 傳回值有 1~7, 星期日 ~ 星期六用來設定所需時間的格式 範例 表單及程式碼 程式碼 Private Sub Form_Activate() Timer1.Interval = 1000 'interval 屬性是用來設定時間的間隔, 單位是千分之一秒 ' 所以 1000 是 1 秒, 每 1 秒鐘, 跑一次 Timer1_Timer() time_txt.enabled = False ' 讓 time_txt 不能被更改其值 time_txt.alignment = 1 ' 設定對齊方式

Dim hr, min, sec, weekend As Integer ' 這些變數分別用來表示時 分 秒 星期 FontSize = 12 ' 設定下面輸出文字的字型 Print "Now = " & Now Print "Date = " & Date Print "Time = " & Time Print "Timer = " & Timer hr = Int(Timer / 60 / 60) min = Int((Timer - hr * 60 * 60) / 60) sec = Int(Timer - hr * 60 * 60 - min * 60) ' 小數點後 60 進位不是 100 Print " 今天時間 :" & hr Mod 12 & " 點 " & min & " 分 " & sec & " 秒 " Print "Year(Now) = " & Year(Now) Print "Month(Now) = " & Month(Now) Print "Day(Now) = " & Day(Now) Print "Hour(Now) = " & Hour(Now) Print "Minute(Now) = " & Minute(Now) Print "Second(Now) = " & Second(Now) weekend = Weekday(Now) If weekend = 1 Then Print "Weekday(Now) = " & " 星期日 " If weekend = 2 Then Print "Weekday(Now) = " & " 星期一 " If weekend = 3 Then Print "Weekday(Now) = " & " 星期二 " If weekend = 4 Then Print "Weekday(Now) = " & " 星期三 " If weekend = 5 Then Print "Weekday(Now) = " & " 星期四 " If weekend = 6 Then Print "Weekday(Now) = " & " 星期五 " If weekend = 7 Then Print "Weekday(Now) = " & " 星期六 " Print "Format(Now, ""yyyy 年 mm 月 dd 日 Am/Pmhh:mm"") = " & Format(Now, "yyyy 年 mm 月 dd 日 Am/Pmhh:mm") Print "Format(Now, ""yy 年 mm 月 dd 日 Am/Pm hh:mm:ss"") = " & Format(Now, "yy 年 mm 月 dd 日 Am/Pm hh:mm:ss") Private Sub Timer1_Timer() time_txt = Time

7.4 滑鼠與鍵盤 鍵盤與滑鼠是主要的輸入裝置 7.4.1 滑鼠 在第一章我們就有介紹到一些滑鼠的 MouseMove MouseDown MouseUp 事件, 這節我們要補充說明這些事件的參數, 並且更進一步認識到其他跟滑鼠有關的事件 Private Sub Label1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Private Sub Label1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Private Sub Label1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) 上面深藍色的字的程式碼, 括號內的 Button Shift X Y 就是事件的參數, 參數是滑鼠用來告知程式, 使用者對滑鼠做了什麼 : Button 值表示哪個滑鼠鍵被按下或放開 0 沒有滑鼠被按下 1 按下左鍵 2 按下右鍵 4 按下中間鍵 Shift 值當滑鼠被按下或放開時, Alt Ctrl Shift 同時被按下 0 Alt Ctrl Shift 三鍵都沒被按下 1 Shift 同時被按下 2 Ctrl 同時被按下 4 Alt 同時被按下 X 和 Y 參數分別代表事件發生時, 滑鼠所在的 X 和 Y 座標值 下面我們就用簡易小畫家來舉例 範例 程式碼 Dim draw As Boolean ' 繪圖狀態 Dim startx, starty As Integer ' 滑鼠游標的 X Y 座標的起點

Private Sub Form_Load() draw = False ' 不能畫的狀態 Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 2 Then ' 按右鍵就會清除畫面 Cls Else draw = True ' 滑鼠按下後才可畫 startx = X starty = Y Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) If draw = True Then If Shift = 2 Then ' 同時按下 Ctrl 鍵 DrawWidth = 2 ' 線的寬度 ForeColor = &HFF& ' 線的顏色 Line (startx, starty)-(x, Y) ' 此方法請參考第? 章 startx = X starty = Y Else DrawWidth = 1 ForeColor = &H0 Line (startx, starty)-(x, Y) Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) draw = False ' 滑鼠放開後就無法再畫

執行結果 : 不按 Ctrl 鍵 ( 線不是使用者一條一條畫的唷 ~) 按 Ctrl 鍵 ( 紅色的部份 ) 好可愛的小蝴蝶呀 ~ 7.4.2 拖曳和放置 所謂的拖曳 (Drag), 就是在一個物件上方按下滑鼠左鍵不放, 然後將它拖著 移動 ; 所謂的放置 (Drop), 就是拖曳到目的地後, 放開滑鼠左鍵 例如 : 遊樂場 的接龍移動撲克牌 移動視窗 等

以下, 我們將為您介紹 Drag 常用的屬性 事件 方法 : 屬性 種類 說明 DragDrop 事件 將 a 物件拖曳至 b 物件處, 放下 a 物件後, 會觸發 b 物件的 DragDrop 事件 DragOver 事件 拖曳 a 物件至 b 物件的上方時, 會觸發 b 物件的 DragOver 事件 DragMode 屬性 設定物件被拖曳的模式 0- 手動 : 必須用程式碼透過 Drag 方法設定物件是否被拖曳 1- 自動 : 可直接拖曳 DragIcon 屬性 設定物件被拖曳時的代表圖示 若未設定, 屬性值為 none, 會以箭頭游標與灰色方框做為拖曳圖示 如果不想要只有上面醜醜的框框, 想要有其他圖案, 就只要在此屬性載入 ico 或 cur 檔的圖 ( 可使用轉檔軟體 ), 即可 但這 2 種檔的大小都不大, 所以下面的範例我把圖改成跟被拖曳的 ico 檔同樣大小, 看起來就不會一大一小了 Drag 方法 設定物件是否可被拖曳 7.4.2.1 DragDrop 事件 將 a 物件拖曳至 b 物件處, 放下 a 物件後, 會觸發 b 物件或表單的 DragDrop 事件 但是要讓 a 放置於 b, 必須要在 b 的 DragDrop 事件中產生 放下 a 物件 的反應, 否則 a 到 b 上方後放開滑鼠,a 會回到它原來的位置, 如此一來便無法完成其作用了 Private Sub b_dragdrop(source As Control, X As Single, Y As Single) 上面深藍色的字的程式碼, 括號內的 Source 參數是指來物件的名稱, 也就是 a 物件, 其資料型態為控制項變數 ;X 和 Y 參數是觸發事件時滑鼠游標的座標值

7.4.2.2 DragOver 事件 拖曳 a 物件至 b 物件的上方時, 會觸發 b 物件的 DragOver 事件 Private Sub b_dragover(source As Control, X As Single, Y As Single, State As Integer) 上面深藍色的字的程式碼, 括號內的 State 參數是被拖曳物件的移動狀態 : 0- 進入 1- 離開 2- 越過 7.4.2.3 DragMode 屬性 DragMode 屬性為設定物件被拖曳的模式 0- 手動 : 必須用程式碼透過 Drag 方法設定物件是否被拖曳 1- 自動 : 可直接拖曳 語法物件.Drag Action Action 值說明 0 取消拖曳 若在拖曳過程中執行, 則拖曳會失效, 也就是被拖曳的物件會回到原位 1 允許物件被拖曳 使用時機在按下滑鼠鍵時, 也就是在 MouseDown 事件中執行 物件.Drag 1 2 結束拖曳, 然後觸發 DragDrop 事件 使用時機在放開滑鼠鍵時, 也就是在 MouseUp 事件中執行 物件.Drag 2 範例 1 表單

程式碼 執行結果 : 被拖曳物件進入文件夾的範圍 :

7.4.3 鍵盤 Private Sub 物件 _KeyDown(KeyCode As Integer, Shift As Integer) Private Sub 物件 _KeyPress(KeyAscii As Integer) Private Sub 物件 _KeyUp(KeyCode As Integer, Shift As Integer) 輸入一個字元時, 事件被觸發的順序為 KeyDown KeyPress KeyUp 事件物件 _KeyDown 物件 _KeyPress 物件 _KeyUp 說明在指定物件上按下某鍵不放, 會觸發此事件, 並傳回 KeyCode 與 Shift 參數 KeyCode 為被按下鍵的掃瞄碼 ( ASCII 碼 ) 在指定物件上由鍵盤按鍵所傳回的 KeyAscii 字元 放開已按下的按鍵, 會觸發此事件, 並傳回 KeyCode 與 Shift 參數 Shift: ( 比滑鼠的 Shift 值還多 ) shift 值說明 0 此 3 鍵都沒被按下 1 僅 Shift 鍵被按下 2 僅 Ctrl 鍵被按下 3 Shift 與 Ctrl 鍵同時被按下

4 僅 Alt 鍵被按下 5 Shift 與 Alt 鍵同時被按下 6 Ctrl 與 Alt 鍵同時被按下 7 Shift Ctrl Alt 3 鍵同時被按下 掃瞄碼 : 按鍵 掃瞄碼 字母鍵 A ~ Z 65~90 數字鍵 0 ~ 9 48~57 功能鍵 F1 ~ F12 112~123 九宮格 7 Home 4 1 End 8 9 PgUp 5 6 2 3 PgDn 掃瞄碼 36 38 33 37 12 39 35 40 34 AscII 碼 : 合法的按鍵 傳入的 KeyAscii 碼值 任何可印出的鍵盤字元, 例 : A b 1 等 ASCII 碼, 可參考 Ch5. Tab 鍵 9 Ctrl + A 鍵 ~ Ctrl+ A 鍵 1~26 Enter 鍵 13 Ctrl + Enter 鍵 10 Backspace 鍵 8 Ctrl + Backspace 鍵 127 下面我們來有個簡單的程式, 可以看出哪些按鍵的 AscII 碼或掃瞄碼是多少 範例 1 程式碼

執行結果 : 請注意!! 左邊和右邊的 123, 掃瞄碼不同

範例 2 可愛的蚊子表單 程式碼 Dim X, Y, H, W, i As Integer ' 分別為 X Y 座標和長 寬 Private Sub Form_KeyPress(KeyAscii As Integer) Select Case KeyAscii Case 56 ' 上鍵 Ascii 碼 Y = Y - 50 If H > 270 Then ' 蚊子的比例 1380:810 H = H - 270 W = W - 460 Case 50 ' 下鍵 Ascii 碼 Y = Y + 50 H = H + 270 W = W + 460 Case 52 ' 左鍵 Ascii 碼 img(0).visible = False img(1).visible = False img(2).visible = True img(3).visible = False X = X - 50 Case 54 ' 右鍵 Ascii 碼 img(0).visible = False img(1).visible = True img(2).visible = False

img(3).visible = False X = X + 50 End Select ' 上面有些 case 有改變 X Y H W 值, 所以要把下列屬性再設定一次 For i = 0 To 3 img(i).left = X img(i).top = Y img(i).height = H img(i).width = W Next i Private Sub Form_Load() X = 2000 ' 設定剛開始的 X Y 座標值 Y = 1500 ' 取得圖片的長 寬, 因為 4 張圖都同大小, 所以用哪個 img 都可以 H = img(0).height W = img(0).width For i = 0 To 3 '4 張圖的某些設定要一樣 img(i).left = X ' 設定 X Y 的值 img(i).top = Y img(i).visible = False ' 隱藏 img(i).stretch = True ' 可調整大小 Next i img(0).visible = True ' 最初, 先讓第 0 個 img 顯示 Private Sub Timer1_Timer() ' 此迴圈用來改蠻 img(0) 和 img(1) 或 img(2) 和 img(3) 的 visible 屬性, 讓蚊子看起來會動 For i = 0 To 3 If img(i).visible = True Then img(i).visible = False If i Mod 2 = 0 Then ' 如果 i=0 或 2, 就讓 i=1 或 3 的 visible 為 true img(i + 1).Visible = True Exit For ' 跳出 for 迴圈 Else ' 如果 i=1 或 3, 就讓 0 或 2 的 visible 為 true img(i - 1).Visible = True Exit For

Next i 執行結果 按上, 蚊子會變小 按下, 蚊子會變大