EasydoMySQL 第五章 VB 專案設計 第五章 VB 專案設計 5.1 Visual Basic簡介 3 5.2 安裝Visual Basic程式開發工具 3 5.3 啟動Visual Basic 2008 Express 3 5.4 設計專案 4 5.4.1 新增專案 4 5.4.2 儲存專案 5 5.5 資料處理介面設計 5 5.6 功能表 9 5.7 常用控制項 10 5.7.1 Label:標籤 10 5.7.2 TextBox:文字方塊 10 5.7.3 ComboBox:下拉方塊 10 5.7.4 ListBox:清單方塊 11 5.7.5 CheckBox:核取方塊 12 5.7.6 RadioButton:圓鈕核取方塊 12 5.7.7 Button:指令按鈕 12 5.7.8 PictureBox:圖形方塊 13 5.7.9 Panel:控制盤 13 5.7.10 GrBoupox:群組方塊 13 5.7.11 DataGridView:表格方塊 13 5.8 常用對話方塊 13 5.8.1 FontDialog(字型對話方塊) 13 5.8.2 OpenFileDialog(開檔對話方塊) 14 5.8.3 SaveFileDialog(存檔對話方塊) 15 5.8.4 MsgBox(信息提示方塊) 15 5.9 事件處理程序 17 5.10 VB專案程式設計簡介 18 5.10.1 變數 18 5.10.2 運算式與運算子 23 5.11 流程控制 25 5.11.1 循序結構 25 5.11.2 分支結構 25 5.11.3 迴圈結構 28 5.11.4 副程式 29 5.12 不同物件之間資料傳遞方法 31 5.12.1 使用全域變數 1 31 EasydoMySQL 第五章 VB 專案設計 5.12.2 使用全域結構變數 32 5.12.3 使用表單外部變數 32 5.12.4 使用表單屬性欄 32 5.12.5 使用表單控制項 33 5.12.6 使用副程式引數 33 5.12.7 使用函數引數 33 5.12.8 表單內部副程式或函數 34 5.12.8 外部檔案或資料庫來傳遞資料 34 5.13 VB常用函數 34 5.13.1 日期/時間函數 34 5.13.2 DateDiff() -日期/時間函數 34 5.13.3 資料型態檢查函數 35 5.13.4 亂數與四捨五入函數 35 5.13.5 Math類別的數學函數 35 5.13.6 字串函數 35 5.14 繪圖 36 5.14.1 建立畫布 36 5.14.2 建立畫筆 37 5.14.3 建立毛刷 37 5.14.4 畫線 37 5.14.5 寫字 37 5.14.6 上色 37 5.14.7 長方形 37 5.14.8 多邊形 37 5.14.9 弧線 38 5.14.10 Pie圖 38 5.14.11 橢圓形 38 5.14.12 畫布存檔 38 5.14.13 顯示圖像 38 5.14.14 實務應用 39 回目錄 2 EasydoMySQL 第五章 VB 專案設計 第五章 VB 專案設計 本章介紹 VB 程式語言之發展背景、程式語法與常用物件,此外,也將說明 使用 VB 程式語言設計應用專案之技巧。 5.1 Visual Basic 簡介 VB 之發展歷史摘述如下: ¾ BASIC 是在 1964 年由 John Kemeny 和 Thomas Kurtz 在 Dartmouth 學院開 發的程式語言,這是一種非常簡單且容易學習的程式語言,其目的是讓學 生作為學習其他程式語言的踏腳石。 ¾ BASIC 是微軟公司的第一套產品,Bill Gates 和 Paul Allen 從 M.I.T.S 取得 BASIC 語言的授權,在 1970 年 BASIC 程式語言已經支援 Apple、Commodore 和 Atari 等作業系統。隨著 IBM PC 個人電腦的推廣,微軟 DOS 作業系統 內含的 BASIC 直譯程式成為最普遍的 BASIC 直譯程式。 ¾ 2002 年 2 月的 VB.NET(Visual Basic.NET)是 Visual Basic 6.0 的下一個版 本,其最大轉變就是物件導向程式語言。VB.NET 是支援.NET Framework 平台的微軟新一代程式語言,可以快速建立.NET Framework 1.0 和 1.1 版的 Windows、Web、Mobile 和 Office 等應用程式,共有 2002 和 2003 兩種版 本。 ¾ 於 2005 年底推出.NET Framework 2.0 版和 Visual Studio 2005,目前最新版 本 Visual Basic 2008。Visual Studio 2010 and .NET Framework 4 VB 序列語言,包括 Visual Basic 2005、VB.NET、VB6、VBScript 和 VBA 都是使用相似的程式語法。從 VB.NET 開始,新增物件導向功能和結構化錯誤處 理 Try/Catch/Finally 程式敘述,新版更加強相關語法、物件導向功能和泛型程式 設計。 5.2 安裝 Visual Basic 程式開發工具 請上微軟官方網站下載相關軟體,網址如下: url:http://www.microsoft.com/downloads/en/resultsForProduct.aspx?displaylang =en&ProductID=bf0ebdd7-5d74-479a-b01e-d7b141200243 Visual Studio 2008 Service Pack 1 .NET Framework 3.5 Service Pack 1 說明:Windows XP 作業系統需要 SP2 以上版本才能安裝 5.3 啟動 Visual Basic 2008 Express 3 請依序點擊【開始/所有程式/Microsoft Visual Basic 2008 Express版】指令, 若為第一次啟動,則需執行數分鐘的環境設定。請稍等一下,完成設定後就可以 看到起始頁,如圖 5.1。 ↑H EasydoMySQL 第五章 VB 專案設計 5.4 設計專案 5.4.1 新增專案 點選主功能表之【專案】、【新增專案】,可開啟如圖 5.2 之專案類型選擇 畫面。請選擇[Visual Basic],接著在下方輸入專案名稱,按下【確定】即可建立 新專案。新建專案之啟始畫面如圖 5.3 所示,系統將加入一個設名稱為Form1 之 表單。 ↑H 4 輸入專案名稱輸入專案名稱 圖 5.2 新增專案畫面 圖 5.1 起始頁 EasydoMySQL 第五章 VB 專案設計 5.4.2 儲存專案 點擊主功能表之【檔案】及【全部儲存】,可將新設專案儲存,工作畫面如 圖 5.4。初次存檔時,須選取存檔路徑。 5.5.3 專案屬性 在正式啟用專案前,必須先設定專案之屬性,專案方能正常編譯和執行。專 案屬性設步驟簡述如下: 點擊功能表之【專案】及【屬性】以開啟屬性視窗,工作畫面如下圖所示: ↑H 5 圖 5.4 初次存檔工作畫面 Form 方案總管 程式碼編輯視窗 程式碼編輯視窗 Form 方案總管 程式碼編輯視窗 程式碼編輯視窗 Form 方案總管 程式碼編輯視窗 程式碼編輯視窗 圖 5.3 專案開啟畫面 圖 5.5 專案屬性視窗 EasydoMySQL 第五章 VB 專案設計 點選【應用程式】,設定下列屬性: 設定【組件名稱】:該名稱將作為建制專案時之名稱, 設定【應用程式類別】:預設為 Windows 應用程式, 設定【啟用表單】:用來設定執行專案時第一個被開啟之表單,預設為第一 個表單,可重新設定。 點選【編譯】,開啟如下圖所示之視窗,請依序設定下列屬性: 設定【建制輸出路徑】:執行建制專案時,設定值將作為輸出結果之存檔路 徑。 設定【Option Explicit】:其中On表變數須宣告才能使用,Off則表不需要。 設定【Option Strict】:其中On表執行資料型態轉換時,系統將採取嚴格檢 查,Off則表不需要。 設定【Option Compare】:Binary表示區分大小寫,Text表示不分大小寫。 5.5 資料處理介面設計 本節介紹資料處理介面之設計過程,以及說明相關物件之屬性和使用方法。 Step 1 首先請點取 Form1 表單在設計模式,如圖 5.7 所示。 Step 2 調整表單大小,可在表單物件右下方按住滑鼠左鍵並移動滑鼠來調整大 小。 Step 3 按滑鼠右鍵以開啟屬性視窗,如圖 5.8,請依序修改下列屬性: Name:將預設名稱Form1 改成適當之名稱, ↑H 6 按住左鍵並移動以 調整表單大小 按住左鍵並移動以 調整表單大小 圖 5.7 表單設計畫面 圖 5.6 設定編譯環境 EasydoMySQL 第五章 VB 專案設計 Text:設定表單抬頭, WindowState:設定表單開啟之狀態,可設為 Maximized, Font:字型, BackColor:背景顏色, ForeColor:前景顏色。 Step 4 接著點擊【檢視】及【工具箱】以開啟【工具箱】,如下圖所示: 圖 5.9 工具箱 圖 5.8 屬性視窗 Step 5 請依序選取合適的控制項,並將它們加入在表單面版上。設計方式簡述如 下: 首先點取對應控制項,然後在表單適當位置按住滑鼠左鍵並拖拉出一個長 方形,該控制項即以拖拉出之方塊大小顯示在表單上。 請依序設定【Name】、【BackColor】、【ForeColor】、【Font】等, 控制項若為資料處理用者,可在【Text】屬性欄設定預設值。 Step 6 調整控制項位置,調整方式如下述: 粗調:點取控制項並以滑鼠左鍵拖動至適當位置。 微調:點取控制項後,使用方向鍵來調整上下左右位置。 精確位置:修改屬性視窗上之 Location 及 Size 欄位設定值,其中 Location 數值意義為 X和 Y 座標,Size 數值意義為寬度和高度。 對齊:可同時選取多個控制項,再以功能表之【格式】和【對齊】來調整 多個控制項之位置。複選方法為先按住【Shift】,再以滑鼠點取所需控制 項。 Step 7 編輯相關處理程序,可使用下列方式開啟處理程序編輯視窗: ¾ 點擊功能表【檢視】及【程式碼】。 ¾ 點擊方案總管上方之程式碼工具鈕,請參考圖 3 。 ¾ 點擊功能表下方之物件選擇鈕。 ¾ 在表單設計介面上以滑鼠快點兩下。 ↑H 7 EasydoMySQL 第五章 VB 專案設計 開啟之處理程序編輯視窗畫面如下圖所示。 類別引入區 物件選擇控制項 事件選擇控制項 表單變數宣告區 程序宣告區 類別引入區 物件選擇控制項 事件選擇控制項 表單變數宣告區 程序宣告區 圖 5.10 程式碼編輯視窗 Step 8 儲存專案。 Step 9 點擊方案執行鈕來測試方案。 在表單設計過程,可同時開啟多個表單物件,也可同時開啟屬性視窗,可視 情況在不同視窗間切換,應用範例請參考下圖。 工作表單 屬性視窗 方案總管 已開啟物件 方案執行鈕 工作表單 屬性視窗 方案總管 已開啟物件 方案執行鈕 ↑H 8 圖 5.11 切換工作視窗 EasydoMySQL 第五章 VB 專案設計 5.6 功能表 表單可加入功能表控制項來管理相關程序,功能表設計方法說明如下: Step 1 加入一個 MenuStrip 控制項。 Step 2 點取該控制項,再按滑鼠右鍵以開啟快顯功能表。 Step 3 選取【編輯項目】,接著開啟功能表編輯視窗,如下圖所示: Step 4 點擊【 加入 】,可加入新的選項按鈕,系統預設名稱為 [ToolStripMenuItem1],可在右方屬性式窗之【Name】欄將其改名,名稱 可使用mnuXXXX規則,以mnu前導,再冠上貼切的名稱,例如XXXX。 接著在【Text】欄位輸入適當之選項提示文字。 Step 5 重覆 Step 4,加入其它選項按鈕。 Step 6 若選項需加入下層之下拉式功能表,請點擊【DropDownItems】欄右方 之展開鈕,開啟下拉功能表編輯視窗,如下圖所示: Step 7 請依照Step 4 加入下拉選項按鈕,完成所需選項後,按【確定】返回上層 視窗。 Step8 完成主功能選項後,按【確定】返回表單編輯視窗。 ↑H 9 圖 5.12 功能表編輯視窗 圖 5.13 下拉式功能表編輯視窗 EasydoMySQL 第五章 VB 專案設計 5.7 常用控制項 本節介紹資料處理常用控制項資料存取程序,讀者可將相關程序加入在表單 對應控制項之資料處理程序內,這些程序將用來新增、修改、刪除及查詢資料。 5.7.1 Label:標籤 標籤用途為提示文字,可在【Text】欄加入所需文字,標籤無法以輸入方式 給值。 給值:控制項名.Text = vl 取值:vl = 控制項名.Text 5.7.2 TextBox:文字方塊 文字方塊用途為提示及輸入資料,可在【Text】欄加入所需資料。 使用時機:以手動方式輸入資料,或是提示欄位資料。 給值:控制項名.Text = vl 說明:若須使用多行文字方塊,請將該控制項之【MultiLine】屬性設為 True, 【ScrollBar】屬性設為 Both。 取值:vl = 控制項名.Text 自動取值:當控制項資料改變時,可搭配 TextChanged,Validated 或 Click 事件 同步取得資料。 5.7.3 ComboBox:下拉方塊 下拉方塊用途為提示及輸入資料,可在【Text】欄加入所需文字,在【Items】 欄輸入選項清單。 使用時機:以下拉方式選入新增紀錄(或直接輸入),也可用來提示欄位資料。 給值方法一:使用程式以陣列形式一次加入選項資料 Dim str() As String = {"A","B","AB","O"} 控制項名.Items.AddRange(str) 給值方法二:逐項加入 控制項名.Items.Add("選項內容") 給值方法三:於設計階段可在控制項之 Items 屬性欄內逐項輸入,處理過程如下 圖: 10 ↑H EasydoMySQL 第五章 VB 專案設計 取值:vl = 控制項名.Text 自動取值:當控制項資料改變時,可搭配 SelectedIndexChanged 事件來取得資料。 提示資料:控制項名.Text = vl 5.7.4 ListBox:清單方塊 清單方塊用途為及輸入資料,可在【Items】欄輸入選項清單。清單方塊與 下拉方塊之差異,在於清單方塊只能選取,下拉方塊則可輸入或選取資料。 使用時機:以下拉選入方式新增紀錄(無法直接輸入)。 說明:選項資料加入方法與 ComboBox 同。 取值: vl = ListBox1.SelectedItem 下述程序示範選取第一個 ListBox 選項, 然後判斷在第二個 ListBox 是否存 在,相關程序可加入在 SelectedIndexChanged 事件內。 For i = 0 To ListBox2.Items.Count - 1 If ListBox2.Items(i) = vl Then fnd = 1 Exit For End If Next 若須取出複選內容時 Dim item, str As String str = "" For Each item In ListBox1.SelectedItems str = str & " " & item.ToString ↑H 11 在此輸入選項 選取 Items 屬性欄 點擊 …啟動輸入方塊 在此輸入選項 選取 Items 屬性欄 點擊 …啟動輸入方塊 在此輸入選項 選取 Items 屬性欄 點擊 …啟動輸入方塊 在此輸入選項 選取 Items 屬性欄 點擊 …啟動輸入方塊 圖 5.14 選項清單輸入視窗 EasydoMySQL 第五章 VB 專案設計 Next MsgBox(str) ‘提示資料 5.7.5 CheckBox:核取方塊 核取方塊用途為勾選表單提示資料,通常用於須多重選擇之介面設計。 使用時機:以核取方式新增紀錄(無法直接輸入)。 取值: vl = CheckBox1.Checked 下述程序示範核取資料後,提示所選取之動作;在新增作業時,可在此加入 新增紀錄程序。 Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged If CheckBox1.Checked Then MsgBox("CheckBox1 is checked") Else MsgBox("CheckBox1 is not checked") End If End Sub 5.7.6 RadioButton:圓鈕核取方塊 圓鈕核取方塊用途為點選表單提示資料,通常用於單選之介面,可將數個圓 鈕核取方塊放在同一個群組方塊上。 使用時機:從多個選項中選取一個。 取值: vl = RadioButton1.CheckedChanged 下述程序示範核取資料後,提示所選取之動作;在新增作業時,可在此加入 新增紀錄程序。 Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged If RadioButton1.Checked Then MsgBox("RadioButton1 is checked") Else MsgBox("RadioButton1 is not checked") End If End Sub 12 5.7.7 Button:指令按鈕 ↑H EasydoMySQL 第五章 VB 專案設計 指令按鈕用途為點擊後須執行特定程序者。 使用時機:點擊按鈕後,由系統自動執行對應程序,通常搭配 Click 事件來處理 資料。 5.7.8 PictureBox:圖形方塊 圖形方塊用途為展示圖像。 給值:控制項名.Image = System.Drawing.Image.FromFile(檔名) 5.7.9 Panel:控制盤 控制盤可用來管理同一群組之相關控制項,置於控制盤上之控制項可以和控 制盤同步移動,控制盤設為不可見時(Visible 屬性設為 False),則在控制盤上 之所有控制項也將設為不可見。 5.7.10 GroupBox:群組方塊 群組方塊用途與控制盤類似,群組方塊可在【Text】欄設定抬頭,控制盤則 無法設定。 5.7.11 DataGridView:表格方塊 表格方塊可用於列示多筆記錄。 使用時機:以表格列示多筆紀錄 給值;DataGridView1.DataSource = daView1 說明:可將視界型資料表(DataView)連結至表格物件以顯示多筆紀錄。 取值:可使用下列方法取出對應資料 9 取得目前游標位置欄註標: ColumnIndex,表欄位註標 curCI = DataGridView1.CurrentCell.ColumnIndex 9 取得目前游標位置列註標: CurrentRow.Index,表列註標 curRI = DataGridView1.CurrentRow.Index 9 取得目前游標位置欄值: Cells(ci).Value,表欄值 VL =DataGridView1.CurrentRow.Cells(ci).Value 9 取得目前游標位置之欄名 NA = DataGridView1.Columns(ci).Name 5.8 常用對話方塊 本節介紹常用對話方塊之用途、屬性及語法。 5.8.1 FontDialog(字型對話方塊) 13 使用時機:設定控制項之字型及尺寸。 ↑H EasydoMySQL 第五章 VB 專案設計 開啟對話方塊:FontDialog1.ShowDiaLog(),開啟畫面如下圖所示。 取值: 字型名稱:fntName = FontDialog1.Font.FontName 字型尺寸:fntSize = FontDialog1.Font.FontSize 給值語法 Dim FNT As Font Fnt = New Font(fntName, fntSize) 控制項名.Font = Fnt 5.8.2 OpenFileDialog(開檔對話方塊) 使用時機:由資料處理人員自行開啟工作檔案。 開啟對話方塊:OpenFileDialog1.ShowDiaLog(),開啟畫面如下圖所示。 預設屬性: 預設路徑:OpenFileDialog1.InitialDirectory = “D:\VbdoMySQL\” 檔案型態:OpenFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"↑H 14 圖 5.14 字型對話方塊 圖 5.16 開檔對話方塊 EasydoMySQL 第五章 VB 專案設計 預設過濾註標:OpenFileDialog1.FilterIndex = 2 關閉方塊後切回原目錄:OpenFileDialog1.RestoreDirectory = True 取出檔名:fna = OpenFileDialog1.FileName 5.8.3 SaveFileDialog(存檔對話方塊) 使用時機:由資料處理人員自行將工作檔案存檔。 開啟對話方塊:SaveFileDialog1.ShowDiaLog(),開啟畫面如下圖所示。 預設屬性: 預設路徑:SaveFileDialog1.InitialDirectory = “D:\VbdoMySQL\” 過濾檔案型態:SaveFileDialog.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*" 預設過濾註標:SaveFileDialog1.FilterIndex = 2 關閉方塊後切回原目錄:SaveFileDialog1.RestoreDirectory = True 取出檔名:fna = SavFileDialog1.FileName 5.8.4 MsgBox(信息提示方塊) MsgBox 常用來提示相關信息或傳回處理人員之按鍵,應用範例如下: Dim msg As String Dim title As String Dim style As MsgBoxStyle Dim response As MsgBoxResult msg = "Do you want to continue?" ' Define message. style = MsgBoxStyle.DefaultButton2 Or _ MsgBoxStyle.Critical Or MsgBoxStyle.YesNo title = "MsgBox Demonstration" ' 定義視窗抬頭 ' Display message. response = MsgBox(msg, style, title) If response = MsgBoxResult.Yes Then ' 處理人員選項為Yes. ↑H 15 圖 5.17 存檔對話方塊 EasydoMySQL 第五章 VB 專案設計 執行對策一. Else 執行對策二 End If 其中 Msg:提示信息 Style: 對話方塊樣式,相關樣式請參考下表: 表 5.1 MsgBoxStyle 列舉值。 成員 值 描述 OKOnly 0 僅顯示 [確定] 按鈕。 OKCancel 1 顯示 [確定] 和 [取消] 按鈕。 AbortRetryIgnore 2 顯示 [中止]、[重試] 和 [忽略] 按鈕。 YesNoCancel 3 顯示 [是]、[否] 和 [取消] 按鈕。 YesNo 4 顯示 [是] 和 [否] 按鈕。 RetryCancel 5 顯示 [重試] 和 [取消] 按鈕。 Critical 16 顯示 [重大訊息] 圖示。 Question 32 顯示 [警告查詢] 圖示。 Exclamation 48 顯示 [警告訊息] 圖示。 Information 64 顯示 [資訊訊息] 圖示。 DefaultButton1 0 第一個按鈕是預設值。 DefaultButton2 256 第二個按鈕是預設值。 DefaultButton3 512 第三個按鈕是預設值。 ApplicationModal 0 應用程式是強制回應的。使用者必須在繼續 使用目前應用程式之前先回應訊息方塊。 SystemModal 4096 系統是強制回應的。所有的應用程式都會暫 止,直到使用者對訊息方塊做出回應時為 止。 MsgBoxSetForeground 65536 將訊息方塊視窗指定為前景視窗。 MsgBoxRight 524288 文字靠右對齊。 MsgBoxRtlReading 1048576 指定在希伯來文或阿拉伯文的系統上,文字 應該以從右到左的書寫方式呈現。 16 註:第一個群組 (0-5) 描述對話方塊中所顯示的按鈕數目和型別。第二個群組 (16、32、48、64) 描述圖示樣式。第三個群組 (0、256、512) 判斷哪 ↑H EasydoMySQL 第五章 VB 專案設計 個是預設值。第四個群組 (0、4096) 判斷訊息方塊的形式,而第五個群組 則指定訊息方塊視窗是否為前景視窗,以及文字的對齊和方向。當加入數字 來建立 Buttons 引數的最後值時,只能使用每個群組當中的一個數字。 Title:視窗抬頭 回傳值:回傳值請見下表。 表 5.2 MsgBox 回傳值 常數 值 OK 1 Cancel 2 Abort 3 Retry 4 Ignore 5 Yes 6 No 7 5.9 事件處理程序 視窗應用系統通常是透過表單上面之控制項所擁有的事件程序來處理資料 或執行相關程序,若要撰寫對應事件程序,可在該控制項上以滑鼠快點兩下,系 統將自動開啟程式碼編輯視窗,同時在編輯區自動加上該控制項之預設程序。各 控制項之預設程序簡述如下。 Form:FormLoad(表單開啟事件),可搭配 FormClosed 來處理關閉表單時之作 業。 TextBox:TextChanged(資料變更事件),可改用 TextUpdate、Validated、Click 來回應文字方塊之變更。 ComboBox:SelectedIndexChanged(選項變更事件),可改用 TextChanged 、 TextUpdate、Validated、Click 來回應文字方塊之變更。 ListBox:SelectedIndexChanged(選項變更事件) CheckBox:CheckedChanged(核取變更事件) RadioButton:CheckedChanged(核取變更事件 DataGridView:Click(滑鼠點擊事件) Button:Click(滑鼠點擊事件) 除了上述預設事件外,也可搭配下述事件來處理對應程序。可在事件選擇 下拉方塊便選用所需事件,選取方式請參考下圖。 DoubleClick:滑鼠雙擊事件 MouseDown:按下滑鼠事件 17 MouseUp:放開滑鼠事件 ↑H EasydoMySQL 第五章 VB 專案設計 MouseMove:移動滑鼠事件 5.10 VB 專案程式設計簡介 下拉展開事件清單 控制項選擇下拉方塊 下拉展開事件清單 控制項選擇下拉方塊 下拉展開事件清單 控制項選擇下拉方塊 VB 專案程式分成表單程式和模組程式兩種,表單程式須置於表單程序區, 只能在所屬表單內使用;模組程式則置於模組程序區,Public 型程序或函數,所 有表單均可叫用,Private 型程序或函數只能在所屬模組叫用。本節將簡述程式設 計觀念及相關指令語法。 5.10.1 變數 5.10.1.1 宣告 變數宣告為所有程式語言最基本之程序,其用途在於取得記憶體之使用權, 以及決定資料型態和記憶體大小。雖然 VB 語言允許變數不經宣告即可使用,但 是宣告變數將有助於變數管理,而且能確保資料之正確性。 假如變數不經宣告而直接使用,必須將編譯參數 Option Explicit 設為 Off。 此外,在執行資料型態轉換時,若需採取嚴格檢查,須將編譯參數 Option Strict 設為 On,預設值為 Off。比較字元資料若不要區分大小寫,須將編譯參數 Option Compare 設為 Text,預設值為 Binary。前述參數可在每個程式檔頭處個別宣告, 或是在專案屬性視窗之編譯環境欄設定,只需設定一次,即可套用在整個專案。 一般變數宣告之語法可使用 Dim 或 Public,在表單程序區只能使用 Dim, 在模組程序區兩者皆可使用,但在模組中之副程式或函數只能使用 Dim。下列範 例為變數宣告常用方法。 一列一個變數:Dim strName As String 一列數個變數:Dim strName, strNo As String 一列數個變數但型態不同:Dim strName, intPrice As Integer 宣告同時給值:Dim strName, intPrice As Integer = 100 ↑H 18 圖 5.18 事件選擇式窗 EasydoMySQL 第五章 VB 專案設計 5.10.1.2 陣列變數 若要使用陣列,可在變數名稱後面加上一對小括弧,然後在小括弧內標示陣 列大小,宣告語法如下: Dim intArr(10) 說明:宣告一個擁有 10 個位置之整數型陣列,因為陣列註標是從 0 起算,上註 標為 10,因此有 11 個位置,此點與 C 語言不同。 宣告陣列時,可以不標示位置,事後再以 Redim 重新給位置,語法如下: Dim intArr() Redim intArr(10) 若事前已給位置,事後仍然可以 Redim 重新給位置。若要保留原陣列資料, 則需加上 Preserve 修飾詞,語法如下: Redim Preserve intArr(10) 陣列可以使用 Split 函數重新宣告位置和同時給值,語法如下: Dim str As String =”A,B,C,D” Dim strArr() As String strArr =Split(str,”,”) 5.10.1.3 結構變數 若多個變數同屬一個群組,且經常需要同時處理者,可將該群組變數宣告為 結構體,宣告語法如下: Structure TableStruct Dim fldName As String Dim fldTitle As String Dim fldType As String Dim fldLength As Integer Dim fldNull As Boolean End Structure 結構體宣告後,可使用下述指令來宣告工作變數; Dim TblStru As TableStruct 給值: tblStru.fldName = ”Name” tblStru.fldLength = 20 取值:變數 = tblStru.fldName 19 5.10.1.4 舉資料型態 ↑H EasydoMySQL 第五章 VB 專案設計 VB 允許使用符號常數來取代固定數值,此種資料型態稱之為列舉常數 (Enumerations),是使用一組名稱來取代一組整數資料型態的數值。使用 Enum/End Enum 語法來進行宣告,宣告語法如下: Enum Color As Integer White = 1 Red Blue Green Black End Enum 若未指定列舉值,其預設值是從 0 起算,取用資料語法如下: Color.White,其對應值為 1, Color.Green,其對應值為 4。 5.10.1.5 命名規則 變數名稱須遵首守下列規則: ¾ 不可使用 VB 關鍵字或系統的物件名稱。 ¾ 必須是英文字母或底線"_"前導頭,如果以底線開頭,至少需要一個其他英文 字母或數字。 ¾ 長度不可超過 16383 個字元,英文字母大小寫視為相同。 ¾ 名稱中間不能有句點"."、運算子(例如:+ - * / ^等)或空白,只能是英文字 母、數字和底線。 ¾ 在宣告的有效範圍內必須唯一。 建議變數名稱前三碼使用小寫之資料型態縮寫字,然後串接有意義之名稱, 名稱第四碼使用大寫,以下示範幾種應用範例: 字串型:strName 整數型:intPrice 日期型:datBrda 布林型:blnSet 浮點數:floSize 5.10.1.6 資料型態與有效範圍 下表說明VB之變數類型及資料範圍。 ↑H 表 5.3 VB 變數類型及 20 資料型態 說明 位元組 範圍 Boolean 布林值 2 True 或 False EasydoMySQL 第五章 VB 專案設計 Byte 正整數 1 0~255 SByte 整數 1 -128~127 Char 字元 2 0~65535 Short 短整數 2 -32,768~32,767 UShort 正短整數 2 0~65,535 Integer 整數 4 -2,147,483,648~2,147,483,647 UInteger 正整數 4 0~4,294,967,295 Long 長整數 8 -9,223,372,036,854,775,808 ~9,223,372,036,854,775,807 ULong 正長整數 8 0~18,446,744,073,709,551,615 Single 單精數 4 負值-3.4028235E+38~-1.401298E-45, 正值 1.401298E-45~3.4028235E+38 Double 雙精數 8 負值 1.79769313486231570E+308 ~-5.94065645841246544E-324, 正值 5.94065645841246544E-324 ~1.79769313486231570E+308 Decimal 數值 16 沒有小數, 0~+/-79,228,162,514,264,337,593,543,950,335 帶 28 位小數 0~+/-7.9228162514264337593543950335 最小的非零值為 +/-0.0000000000000000000000000001(+/-1E-28) Date 日期 8 0001 年 1 月 1 日~9999 年 12 月 31 日 String 字串 依平台 0~2 百萬 Unicode 字元 Object 物件 4 物件變數可以儲存各種資料型態的值 型態不同但資料具有相容性者,可使用下表之函數相互轉換。 表 5.4 轉型函數 21 函式名稱 傳回資料 型別 expression 引數的範圍 CBool Boolean 任何有效的 Char 或 String 或數值運算式。 CByte Byte 0 至 255 (不帶正負號);小數部分會四捨五入。1 CChar Char 任何有效的 Char 或 String 運算式,只會轉換 String 的第一個字元,值可從 0 到 65535 (不帶正負號)。 CDate Date 日期和時間的任何有效表示 CDbl Double 負值為 -1.79769313486231570E+308 至 
 -5.94065645841246544E-324,正值為 5.94065645841246544E-324 至 EasydoMySQL 第五章 VB 專案設計 1.79769313486231570E+308。 CDec Decimal 零個小數的數字為 +/-79,228,162,514,264,337,593,543,950,335,也就是沒 有小數位數的數字。具有 28 個小數位數的數字範圍 為 +/-7.9228162514264337593543950335。最小的可能 非零值為 0.0000000000000000000000000001 (+/-1E-28)。 CInt Integer -2,147,483,648 至 2,147,483,647;小數部分會捨入。 CLng Long -9,223,372,036,854,775,808 至 9,223,372,036,854,775,807;小數部分會捨入。 CObj Object 任何有效的運算式。 CSByte SByte -128 至 127;小數部分會捨入。 CShort Short -32,768 至 32,767;小數部分會捨入。1 CSng Single 負值為 -3.402823E+38 至 -1.401298E-45;正值為 1.401298E-45 至 3.402823E+38。 CStr String CStr 的傳回值取決於 expression 引數。請參閱 CStr 函式的傳回值。 CUInt UInteger 0 至 4,294,967,295 (不帶正負號);小數部分會四捨五 入。 CULng ULong 0 至 18,446,744,073,709,551,615 (不帶正負號);小數 部分會四捨五入。 CUShort USghort 0 至 65,535 (不帶正負號);小數部分會四捨五入 5.10.1.7 資料設定 可在宣告變數後面直接設定整數值,包含 0、正整數和負整數都可以使用十 進位、八進位和十六進位來表示,其預設型態是 Integer,如果太長則是 Long 型 態。整數值以"&O"開頭且每個位數的值為 0~7 的整數時,表示是八進位;以"&H" 開頭的數值,數值為 0~9 或 A~F 則是十六進位。應用範例如下: &O377,八進制相當於十進制的 255 &HFF,十六進制相當於十進制的 255 可依浮點數值範圍來決定宣告的變數型態,如果直接使用浮點數值,預設是 Double 型態,可以使用“E”符號代表 10 為底的指數。如果浮點數值需要指定資 料型態,可在資料後面加上型態字元,型態字元"F"是 Single 資料型態,Double 資料型態請使用"R",Decimal 使用"D"。應用範例如下: F = 123.4F D =123.4R 22 G = 6E-5, E表示 10 為底的指數 ↑H EasydoMySQL 第五章 VB 專案設計 布林型態使用True表真(或非 0 整數),False表偽(或 0),例如:↑H Dim blnStart As Boolean = False 字串型態須以雙引號夾住字串資料,例如: Dim str1 As String = “VB 程式設計” 字元型態須以雙引號夾住字元資料,後面再串接 C,例如: Dim ch As Char = “V”C 日期型態須以雙#號夾住日期資料,例如: Dim datBrda As Date = #2007/4/30 12:00:00 AM# 陣列型變數可搭配 For 迴圈來給值,語法如下: For i = 0 To Ubound(陣列變數) 陣列變數(i) = 值 Next 5.10.2 運算式與運算子 5.10.2.1 運算式格式 運算式是由三部份所構成,格式如下; 變數 = 運算元 串接運算子 串接運算元 … 其中 =號 左邊必須是變數名稱,=號 右邊之運算元可以是變數或常數,下述範 例為常見格式。 R1 = A + B * C – 1 R2 = (A >= B) R3 = A & B R4 = (A < B Or A > 1) 5.10.2.2 運算子 VB 語言使用到的運算子分成算術運算子、關係運算子和邏輯運算子,算術 運算子之種類和應用範例如下表所示: 表 5.5 VB 運算子 23 運算子 說明 範例 ^ 指數 9 ^ 2 = 81 - 負號 -27 + 正號 +27 * 乘法 15 * 4= 60 / 除法 9 / 2 = 5.5 \ 整數除法 7 \ 2 = 3 EasydoMySQL 第五章 VB 專案設計 Mod 餘數 7 Mod 2 = 1 + 加法 19 + 3 = 22 - 減法 16 – 3 = 13 關係運算子之種類和應用範例如下表所示: 表 5.6 關係運算子 運算子 說明 運算式範例 結果 = 等於 19 = 13 False <> 不等於 19 <> 13 True < 小於 19 < 13 False > 大於 19 > 13 True <= 小於等於 19 <= 13 False >= 大於等於 19 >= 13 True Is 物件比較 比較 2 個變數是否指向同一個物件 IsNot 物件比較 比較 2 個變數是否指向不同的物件 邏輯運算子之種類和應用範例如下表所示: 表 5.7 邏輯運算子 運算子 說明 Not 非,傳回運算元相反的值,通常配合運算式的布林值 And 且,連接的 2 個運算元都為 True,則運算式為 True Or 或,連接的 2 個運算元中,任一個為 True,則運算式為 True, 否則為 False Xor 連接的 2 個運算元中,只有一個運算元為 True,而且 2 個運算 元不同時為 True,則運算式為 True,否則為 False AndAlso 連接的 2 個運算元都為 True 才為 True,如果第 1 個運算元已 經 False,就不用計算第 2 個運算元,傳回 False OrElse 連接的 2 個運算元中,任一個為 True,則運算式為 True,否則 為 False,如果第 1 個為 True,就不用計算第 2 個運算元,傳 回 True 若一列運算式使用多個不同的運算子,則各運算子之優先順序依下列規則: 規則一:“( )”括號內比括號外先執行 24 規則二:算術運算子 > 關係運算子 > 邏輯運算子 ↑H EasydoMySQL 第五章 VB 專案設計 規則三:關係運算子擁有相同的優先順序 規則四:算術運算子加和減優先順序相同,乘和除擁有相同的優先順序,優先順 序如下: ^指數 > (-)負號 > */乘除 > \整數除法 > Mod > +-加減 > & 規則五:邏輯運算子的優先順序如下: Not > And, AndAlso > Or, OrElse > Xor 5.11 流程控制 一般說來,隨著處理問題複雜度之增加,程式邏輯也就更加複雜。就處理方 式而言,程式結構基本上可以分成循序、分支及重覆三大類型。就解決問題之技 巧而言,可將複雜的問題以二分法將其化繁為簡,再以當時之問題狀態予以逐步 解決。以下就程式基本結構,依序介紹 VB 使用到之控制指令與語法。 5.11.1 循序結構 所有的處理程序基本上都是採循序方式處理,例如一個程式檔案必須從宣告 變數開始,然後設定相關變數之初值,接著設計演算法及求解,最後才輸出解答。 當檔案越來越大時,可以將重覆的程式碼獨立出來,並以副程序或函數形式陳 現,使得程式得以簡化,同時也可以降低除錯之困難度。此外,輸入或輸出程序 可以設計為視窗式表單介面,如此可以使得資料處理介面更為友善。循序結構並 不需要使用特殊指令,它純粹是種解決問題的技巧。循序結構如下圖所示。 5.11.2 分支結構 當一個待解決之問題會因不同的狀況而有不同的解決對策時,此時可依經驗 法則來設計一些分類規則,在求解過程,這些規則可作為選擇對策之依據。設計 程式時,這種求解技巧稱之為分支結構,而分類規則則稱之為條件式,條件式則 可搭配前面之關係運算式和邏輯運算式所組成。規則之比對則可使用下列語法來 表示: ↑H 25 程式區塊A 程式區塊B 程式區塊C 入口 出口 程式區塊A 程式區塊B 程式區塊C 入口 出口 圖 5.19 循序結構示意圖 EasydoMySQL 第五章 VB 專案設計 If (比對規則) Then 解決對策 若規則超過一條以上時,須採用化繁為簡之二分法求解技巧來建立比對順 序。以下詳述各種二分技巧。 5.11.2.1 單選 單選式規則只有一條,規則成立時,對策即被執行,否則跳過該對策區塊程 式,此類比對方式如下圖所示: 程式語法如下: If (比對規則) Then 解決對策 …後續程式碼… 5.11.2.2 二選一 此類規則也是只有一條,當規則成立時,執行第一種對策,否則執行第二種 對策,此類比對方式如下圖所示: 程式語法如下: If (比對規則) Then 解決對策 A Else 解決對策 B End If …後續程式碼… ↑H 26 解決對策 入口 比對規則 真 偽 後續程式區塊 出口 解決對策 入口 比對規則比對規則 真 偽 後續程式區塊 出口 圖 5.20 選擇結構示意圖 解決對策A 入口 比對規則 真偽 後續程式區塊 解決對策B 出口 解決對策A 入口 比對規則 真偽 後續程式區塊 解決對策B 出口 圖 5.21 二選一結構示意圖 EasydoMySQL 第五章 VB 專案設計 5.11.2.3 多選一-逐條比對 當比對規則有多條且必須逐條比對時,當比對之規則成立時,立即執行該段 之對策,執行後立即結束比對程序,否則繼續比對其它規則,此類比對方式如下 圖所示: 程式語法如下: If (比對規則 1) Then 解決對策 1 Else If (比對規則 2) Then 解決對策 2 …………….. Else 解決對策 n End If End If …後續程式碼… 說明:使用幾個 IF 敘述就須使用對稱個數之 End If。 5.11.2.4 單一規則多重選擇 當比對規則只有一條但運算結果有多種者,合乎運算結果之對策段將立即被 執行,執行後立即結束比對程序,此類比對方式如下圖所示: 程式語法如下: Select Case (比對條件) Case (條件 1) 對策 1 Case (條件 2) 對策 2 ↑H 27 解決對策1 入口 規則1真 偽 後序程式區塊 規則2解決對策2 真 其它對策n 出口 解決對策1 入口 規則1規則1真 偽 後序程式區塊 規則2規則2解決對策2 真 其它對策n 出口 圖 5.22 多選一結構示意圖 EasydoMySQL 第五章 VB 專案設計 ……………. Case Else 對策 n End Select …後續程式碼… 5.11.3 迴圈結構 當一個待解決之問題擁有多筆資料,每筆資料之處理程序都相同者,此時可 使用迴圈結構來設計處理程序,迴圈結構形式簡述如下。 5.11.3.1 計數迴圈 若重覆處理迴圈之次數為已知者,可使計數迴圈。程式語法如下述: For I =起始值 To 重覆次數 Step 增減量 說明:增減量可為+1,-1,+2 等形式。 迴圈主體程序 If (特殊狀況) Then Exit For ,說明:跳出迴圈 Next 5.11.3.2 條件為真迴圈 執行迴圈主體程序前須先比對條件,合乎條件時才進入迴圈主體。程式語法 如下述: Do While (比對條件) 迴圈主體程序 If (特殊狀況 1) Then Exit Do ,說明:跳出迴圈 ↑H 28 解決對策1 入口 比對條件 後續程式區塊 出口 設定條件 條件 1 條件2 條件3 其它 解決對策2 解決對策3 解決對策n解決對策1 入口 比對條件比對條件 後續程式區塊 出口 設定條件 條件 1 條件2 條件3 其它 解決對策2 解決對策3 解決對策n 圖 5.23 單一規則多重選擇示意圖 EasydoMySQL 第五章 VB 專案設計 If (特殊狀況 2) Then Continue Do ,說明:回至迴圈起始處 Loop 5.11.3.3 條件為偽迴圈 執行迴圈主體程序前先比對條件,如果條件不成立則重覆迴圈主體程序,否 則跳出迴圈。程式語法如下述: Do Until (比對條件) 迴圈主體程序 If (特殊狀況) Then Exit Do ,說明:跳出迴圈 Loop 5.11.3.4 後置條件為真迴圈 先處理迴圈主體程序然後才比對條件,如果條件不成立則則跳出迴圈,否則 重覆迴圈主體程序,迴圈程序至少執行一次。程式語法如下述: Do 迴圈主體程序 Loop While (比對條件) 5.11.3.5 後置條件為偽迴圈 先處理迴圈主體程序然後才比對條件,如果條件不成立則則重覆迴圈主體程 序,否則跳出迴圈,迴圈程序至少執行一次。程式語法如下述: Do 迴圈主體程序 Loop Until (比對條件) 5.11.4 副程式 若是一個程式檔案內有兩段以上之程式區塊使用相同的處理程序,可將這些 處理程序獨立出來,然後賦與一個唯一的示別名稱,此段程式稱之為副程式,原 主體程式可透過叫用方法(Call),呼叫副程式來處理所須程式邏輯。假如副程 式執行後不需要回傳結果者,此種副程式稱之為程序(Sub),需要回傳結果者 稱之為程序(Function)。有時一個程序檔案之敘述很長時,也可以將某些段落 獨立成副程式,使得程式更容易閱讀和維護。 29 假如有兩個以上之表單須使用相同的副程式時,可將這些副程式從表單程序 獨立出來,然後將它們置於模組程序內,此種副程式被稱為公用副程式。公用副 程式必須使用Public前導修飾詞,方可被其它表單程序叫用。以Private前 ↑H EasydoMySQL 第五章 VB 專案設計 導修飾詞之副程式,只能在定義該副程式之程式檔案內使用。副程式之語法請參 考下述說明。 5.11.4.1 程序 區域型副程序 Private Sub subProcedure(ByVal Par1 As String, ByRef Par2() As String) 副程式敘述 End Sub 公用型副程序 Public Sub subProcedure(ByVal Par1 As String, ByRef Par2() As String) 副程式敘述 End Sub 5.11.4.2 函數 區域型函數 Private Function subFunction(ByVal Par1 As String, ByRef Par2() As String) AS Integer 說明:Par()為陣列形變數 函數敘述 Return 結果 End Function 公用型函數 Public Function subFunction(ByVal Par1 As String, ByRef Par2() As String) AS Integer 說明:Par()為陣列形變數 函數敘述 Return 結果 End Function 5.11.4.3 引數 叫用副程式時,主程式可將相關變數之設定值傳入副程式,副程式則根據這 些設定值來處理對應程序,這些傳入副程之變術稱之為引數。引數之傳遞方式有 兩種,簡述如下: 30 傳值型(By Value):直接將設定值傳入副程式,一般變數之傳遞可使用此種方 式。 ↑H EasydoMySQL 第五章 VB 專案設計 傳傳參考型(By Reference):將設定變數或物件之記憶體位址傳入副程式,陣 列變數或物件變數須使用此種方式傳遞。 5.11.4.4 叫用 副程式之叫用可區分為下述四種型態; ¾ 傳入引數但不回傳結果 ¾ 傳入引數也回傳結果 ¾ 不傳入引數但回傳結果 ¾ 不傳入引數也不回傳結果 5.11.4.5 錯誤攔截機制 執行專案時,若不希望因程式之錯誤而造成中斷現象,可在對應之副程式或 事件程序內加入錯誤攔截機制,語法如下述: Try 程式主體區塊 Catch e As Exception ' 錯誤攔截後之處理程式碼 錯誤處理程式區塊 Finally 結束程序前強制處理程式區塊 End Try 錯誤攔截機制之語法說明如下: ¾ Try 程式區塊:在 Try 和 Catch 關鍵字間的程式區塊是程式主體。 ¾ Catch 程式區塊:如果 Try 程式區塊的程式碼發生錯誤,在 Catch 到 Finally 關 鍵字間的程式區塊將會傳入參數 e 的 Exception 例外物件,可以在此區塊顯示 錯誤資訊,或是建立錯誤處理的補救程式碼。 ¾ Finally 程式區塊:選擇性的程式區塊,不論錯誤是否產生,都會執行此區塊的 程式碼,通常是用來作為善後用途的程式碼。 5.12 不同物件之間資料傳遞方法 本節介紹在不同物件之間資料傳遞的方法。讀者若需要在不同的物件間傳遞 資料時,可參考本章介紹的方法,各種方法可相互混用。 5.12.1 使用全域變數 方法:在模組物件內宣告公用變數(在 Module Module1 宣告指令下,其它程 序定義前) 效期:整個專案 31 範例:Public strSQL As Strin ↑H EasydoMySQL 第五章 VB 專案設計 給值:strSQL = “Select * From Cuinfo;” 取值:變數 = strSQL 5.12.2 使用全域結構變數 方法:在模組物件內宣告公用結構變數與資料變數 效期:整個專案 範例: Public Structure TableStruct Dim fldName As String Dim fldTitle As String Dim fldType As String Dim fldLength As Integer Dim fldNull As Boolean End Structure 宣告結構體變數 Public TblStru As TableStruct 給值: tblStru.fldName = ”Name” tblStru.fldLength = 20 取值:變數 = tblStru.fldName 5.12.3 使用表單外部變數 方法:在表單物件內宣告變數(在 Class 表單名宣告指令下,其它程序定義 前) 效期:整個表單 範例:Dim strSQL As String 給值:strSQL = “Select * From Cuinfo;” 取值:變數 = strSQL 5.12.4 使用表單屬性欄 方法:在表單物件內宣告屬性欄位(在 Class 表單名宣告指令下) 效期:整個專案 範例: Property Title() As String Get Return rptTitle End Get 32 Set(ByVal value As String) ↑H EasydoMySQL 第五章 VB 專案設計 rptTitle = value End Set End Property 其它表單可透過下列敘述來存取表單欄位資料 給值:表單名.Title = 值 取值:變數 = 表單名.Title 5.12.5 使用表單控制項 方法:在表單物件內加入所需控制項 效期:整個專案 範例:txtName (控制項名稱) 其它表單可透過下列敘述來存取表單欄位資料 給值:表單名.txtName.Text = 值 取值:變數 = 表單名.txtName.Text 5.12.6 使用副程式引數 方法:在模組物件內定義所需副程式 效期:Public 型副程式為整個專案,Private 型副程式為所屬模組 範例:Public Sub subProcedure(ByVal Par1 As String, ByRef Par2() As String) 副程式敘述 End Sub 其它表單可透過下列敘述將資料傳入副程式 叫用副程式: Call subProcedure(P1, P2) 註: ByVal 用於傳值呼叫,ByRef 用於傳參考呼叫 5.12.7 使用函數引數 方法:在模組物件內定義所需函數 效期:Public 型函數為整個專案,Private 型函數為所屬模組 範例:Public Function subFunction(ByVal Par1 As String, ByRef Par2() As String) AS Integer 說明:Par()為陣列形變數 函數敘述 Return 結果 End Function 其它表單可透過下列敘述將資料傳入函數及取值 叫用函數: 33 回傳結果 ↑H EasydoMySQL 第五章 VB 專案設計 A = subFunction(P1, P2) 不回傳結果 subFunction(P1, P2) 5.12.8 表單內部副程式或函數 此法只能在定義表單內使用。 5.12.9 外部檔案或資料庫來傳遞資料 此法適用於傳遞大量且屬固定性質之資料。 5.13 VB 常用函數 本節介紹 VB 常用函數。 5.13.1 日期/時間函數 日期/時間函數可以處理日期/時間格式資料,以及和進行相關之運算處理。 常用日期/時間函數,如下表所示: 表 5.8 日期/時間函數 函數名稱 函數說明 Now 傳回現在的日期和時間 Today 傳回現在的日期 TimeOfDay 傳回現在的時間 Year(Date_format) 傳回日期格式的年份 Month(Date_format) 傳回日期格式的月份值 1~12 Day(Date_format) 傳回日期格式的日數 1~31 Hour(Time_format) 傳回時間格式的小時 0~23 Minute(Time_format) 傳回時間格式小時的分 0~59 Second(Time_format) 傳回時間格式分的秒數 0~59 WeekDay(Date_format) 傳回格式是星期幾,星期日到六的值為 1~7 5.13.2 DateDiff() -日期/時間函數 用途:計算時間差 語法:DateDiff(單位字串, DateTime1, DateTime2) 單位字串引數如下表: 34 表 5.9 時間差格式 ↑H EasydoMySQL 第五章 VB 專案設計 單位字串 差異的單位 D 日 H 小時 n 分鐘 m 月 s 秒 5.13.3 資料型態檢查函數 資料型態檢查函數能夠檢查 VB 變數的資料型態,如下表所示: 表 5.10 型態檢查函數 函數名稱 函數說明 IsDate(stmt) 檢查是否為 Date 型態,是則傳回 True;否則傳回 False IsNumeric(stmt) 如果 stmt 都是數字傳回 True;否則傳回 False IsArray(var) 如果參數是指向陣列的話傳回 True;否則傳回 False 5.13.4 亂數與四捨五入函數 表 5.11 亂數與四捨五入函數 函數名稱 函數說明 Rnd(stmt) 亂數函數,依 Single 資料型態產生單精數的亂數 Randomize(stmt) 初始化 Rnd()函數的亂數產生器,因為每次會給予新的 種子值,所以每次都產生不同的亂數序列,如果沒有參 數,使用的是系統計時器傳回的值 Int(stmt) 傳回整數結果,它會無條件捨去數字的小數部份,如果 數值為正,傳回整數部分;如為負數傳回比數值小的負 正數 5.13.5 Math 類別的數學函數 表 5.12 數學函數 35 方法 說明 Acos(Double) 反餘弦函數 Asin(Double) 反正弦函數 Atan(Double) 反正切函數 Atan2(Double1, 參數 Double1/Double2 的反正切函數值 EasydoMySQL 第五章 VB 專案設計 Double2) Cos(Double) 餘弦函數 Exp(Double) 自然數的指數 ex Log(Double) Log10(Double) 自然對數,Log10 是以 10 為底 Pow(Double, Double) 傳回第 1 個參數為底,第 2 個參數的次方值 Sign(Type) 傳回參數值的符號,傳回值-1 表示小於 0,0 等於 0, 1 大於 0,Type 可以是數值型態 Sin(Double) 正弦函數 Sqrt(Double) 傳回參數的平方根 Tan(Double) 正切函數 5.13.6 字串函數 表 5.12 字串函數 方法 說明 Len(String) 字串長度函數 Mid(String, Integer, Integer) 子字串函數,將傳入之第一個引數從第二個 引數位置開始,截取總長為第三個引數 Left(String, Integer) 子字串函數,將傳入之第一個引數從左邊位 置開始,截取總長為第二個引數 Right(String, Integer) 子字串函數,將傳入之第一個引數從右邊位 置開始,截取總長為第二個引數 Split(String, String) 字串分割為陣列函數,將傳入之第一個引數 依第二個引數之格式,分割為字串陣列 Ubound(陣列變數) 計算傳入陣列之上註標 Lbound(陣列變數) 計算傳入陣列之下註標 5.14 繪圖 本節介紹繪圖之基本技巧,電腦繪圖與手工繪圖一樣,事前需準備畫布、毛 刷和畫筆,然後依序描點、畫線、規則圖案或不規則圖案等。以下就這些基本功 能簡述VB之對應指令和語法。 5.14.1 建立畫布 使用下列指令來建立畫布: Dim bm As BitMap bm = New Bitmap(寬度, 高度),說明:寬度與高度以Pixel為單位 Dim gp As Graphics = Graphics.FromImage(bm) 36 也可以直接在表單上製作畫布: ↑H EasydoMySQL 第五章 VB 專案設計 Dim gp As Graphics = Mw.CreateGraphics() 5.14.2 建立畫筆 使用下列指令來建立畫筆: Dim pen As Pen = New Pen(顏色, 筆尖點數) pen.Width = 3 pen.Color = Color.Green 5.14.3 建立毛刷 使用下列指令來建立毛刷: Dim br As SolidBrush = New SolidBrush(顏色) pen = New Pen(Color.Red, 3) 5.14.4 畫線 使用下列指令畫線,其中x1和y1為起始座標,x2和y2為終止座標。 gp.DrawLine(pen, x1, y1, x2, y2) 5.14.5 寫字 使用下列指令寫字: br = New SolidBrush(Color.Black) gp.DrawString(字串, 字型, br, x1, y1) 5.14.6 上色 使用下列指令上色: rect = New Rectangle(x1, y1, x2, y2) gp.FillRectangle(br, rect),說明:填滿指定顏色 5.14.7 長方形 長方形語法:DrawRectangle(Pen, x, y, 寬, 高) 說明:使用 Pen 畫筆在(x, y)座標的長方形左上角繪出指定寬和高的長方形。改 用下述指令則可以指定顏色填滿圖形: FillRectangle(Brush, x, y, width, height) 5.14.8 多邊形 多邊形語法:DrawPolygon(Pen, Points) 37 說明:使用Pen畫筆以第 2 個參數Points,DrawPolygon()方法需要使用Point物件 陣列的座標,每一個Point物件是一個端點座標,可使用下列指令製作端點 陣列: ↑H EasydoMySQL 第五章 VB 專案設計 Dim dpPoint() As Point = { _ New Point(30, 30), _ New Point(80, 90), _ New Point(120, 120)} 改用下述指令則可以指定顏色填滿圖形: FillPolygon(Brush, Points) 5.14.9 弧線 弧線語法:DrawArc(Pen, x, y, width, height, startAngle, sweepAngle) 說明:使用 Pen 畫筆在(x, y)座標的長方形左上角,寬度 width 和高度 height 的長 方形中,畫出從 startAngle 開始共 sweepAngle 角度的弧形。startAngle 是 以度為單位,依順時針方向從 X 軸到弧形起點的角度,sweepAngle 也是 以度為單位,依順時針方向從 startAngle 參數到弧形結束點的角度,負值 則是反時針方向。 5.14.10 Pie 圖 Pie 圖語法:DrawPie(Pen, x, y, width, height, startAngle, sweepAngle) 說明:使用 Pen 畫筆在(x, y)座標的長方形左上角,寬度 width 和高度 height 的長 方形中,畫出從 startAngle 開始共 sweepAngle 角度的扇形。改用下述指 令則可以指定顏色填滿圖形: DrawPie(Brush, x, y, width, height, startAngle, sweepAngle) 5.14.11 橢圓形 橢圓形語法:DrawEllipse(Pen, x, y, width, height) 說明:使用 Pen 畫筆在(x, y)座標的長方形左上角,寬度 width 和高度 height 的長 方形中畫出橢圓形。改用下述指令則可以指定顏色填滿圖形: DrawPie(Brush, x, y, width, height, startAngle, sweepAngle) 5.14.12 畫布存檔 使用下列指令可將畫布存檔: 語法:bm.Save(檔案路徑及名稱) 說明:存成BMP檔 5.14.13 顯示圖像 38 圖像須使用PictureBox控制項來顯示,可使用下列指令來載入和顯示圖像 檔: ↑H EasydoMySQL 第五章 VB 專案設計 Dim bm As Bitmap = New Bitmap 檔案路徑及名稱) PictureBox1.Image = bm 或直接顯示在畫布上: Dim gp As Graphics = Graphics.FromImage(bm) 方法一:gp.DrawImage(buffer, 1, 25) ,說明:原尺寸 方法二:gp.DrawImage(bm, 1, 25, bm.Width, bm.Height + 20),說明:指定圖形大 小 5.14.14 實務應用 圖 5.24 乃將資料表紀錄輸出為圖示資料。 ↑H 39 圖 5.24 圖示資料範例 EasydoMySQL 40 第五章 VB 專案設計 課後習題 1. 簡述 VB 之發展歷史,各版次間主要差異為何? 2. 簡述開發一個 VB 專案之基本過程。 3. VB 專案之核心單元是什麼? 4. 任舉五個常用控制項並說明其用途。 5. 何謂事件處理程序?任舉三種常用事件。 6. 如何設計事件處理程序? 7. VB 資料型態分成那些類型? 8. 何謂結構變數? 9. VB 運算子分成那些類型? 10. VB 程式結構分成那三大類型? 11. VB 迴圈指令分成那些類型? 12. 副程式之用途為何?如何設計副程式? 13. 詳述 VB 在不同物件間之資料傳遞方法。 ↑H 回目錄
还剩39页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 5 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf

pdf贡献者

chongmw

贡献于2014-12-13

下载需要 5 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf