1 / 35

第 12 章 建立多表單與模組的應用程式

第 12 章 建立多表單與模組的應用程式. 12-1 Visual Basic 的方案與專案 12-2 模組化 Visual Basic 應用程式 12-3 建立多表單的應用程式 12-4 建立多文件介面的應用程式 12-5 執行外部應用程式. 12-1 Visual Basic的方案與專案. 12-1-1 Visual Basic 的專案 12-1-2 Visual Basic 的方案. 12-1-1 Visual Basic 的專案 - 說明.

suzuki
Download Presentation

第 12 章 建立多表單與模組的應用程式

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第12章 建立多表單與模組的應用程式 • 12-1 Visual Basic的方案與專案 • 12-2 模組化Visual Basic應用程式 • 12-3 建立多表單的應用程式 • 12-4 建立多文件介面的應用程式 • 12-5 執行外部應用程式

  2. 12-1 Visual Basic的方案與專案 • 12-1-1 Visual Basic的專案 • 12-1-2 Visual Basic的方案

  3. 12-1-1 Visual Basic的專案-說明 • 在本書前建立的主控台或Windows應用程式,都是隸屬於同名方案的Visual Basic專案。如果準備建立大型應用程式,在一個方案下可能需要建立多個專案。 • Visual Basic專案是方案中的容器,每一個專案可以建立執行檔(.exe)、動態連結程式庫(.dll)或模組(Modules)等。

  4. 12-1-1 Visual Basic的專案-專案的基礎 • Visual Basic專案的資訊是儲存在副檔名為.vbproj的檔案,在專案檔案記錄建立應用程式所需的檔案、資料夾和編譯等相關資訊。 • 請開啟或自行建立「範例程式\Ch12\Ch12-1-1」資料夾的Visual Basic專案,就可以在右上角看到「方案總管」視窗,如下圖所示:

  5. 12-1-1 Visual Basic的專案-專案的屬性頁(圖例) • 在「方案總管」視窗的【Ch12-1-1】專案上執行右鍵快顯功能表的【屬性】指令,可以看到專案的屬性頁。

  6. 12-1-1 Visual Basic的專案-專案的屬性頁(屬性說明) • 【應用程式】標籤的常用屬性,如下表所示:

  7. 12-1-1 Visual Basic的專案-專案的種類 • 在VBE新增專案時提供多種專案範本,可以幫助我們快速建立所需的應用程式,如下表所示:

  8. 12-1-2 Visual Basic的方案-說明 • 如果使用VBE建立大型應用程式,除了建立Visual Basic的Windows應用程式外,我們可能需要同時建立多個類別庫,此時就需要在同一個方案建立多個專案來開發應用程式。

  9. 12-1-2 Visual Basic的方案-方案的基礎 • 方案簡單的說是專案的容器,內含一到多個專案,使用.sln和.suo儲存方案的定義。請開啟「範例程式\Ch12\Ch12-1-2」資料夾的Visual Basic專案,可以看到「方案總管」視窗,如右圖所示:

  10. 12-1-2 Visual Basic的方案-建立多專案的方案 • VBE在預設情況下,同一個方案只建立一個專案,如果需要在方案新增其他專案,如下圖所示:

  11. 12-2 模組化Visual Basic應用程式 • 12-2-1 新增表單 • 12-2-2 新增模組 • 12-2-3 模組等級的範圍 • 12-2-4 指定啟動表單或模組

  12. 12-2-1 新增表單-說明 • Visual Basic應用程式如果使用模組化程式設計,在應用程式中的表單、模組和類別等都可以視為是一個個模組。 • 到目前為止的範例程式都只有單一表單,對於複雜的應用程式,我們可以建立多個表單和新增共用程序與函數的模組。 • 事實上,大部分的應用程式都不是單一表單的應用程式,如果程式需要多個表單使用介面,大部分是指對話方塊。我們可以在Visual Basic專案加入所需表單,預設是以Form2~n.vb依序來命名。

  13. 12-2-1 新增表單-在專案加入新表單 • 在Visual Basic的專案加入新表單的方法有2種,如下所示: • 在「方案總管」視窗的專案上,執行右鍵快顯功能表的「加入/加入Windows Form」指令,就可以新增表單。 • 在開啟專案後,執行「專案/加入Windows Form」指令來新增表單,本節的範例程式是使用此方式。

  14. 12-2-1 新增表單-開啟與關閉新表單 • 如果Visual Basic專案擁有多個表單,除非將它設為啟動表單,否則Form1表單需要使用程式碼來開啟其他表單,如下所示: Dim f2 As Form2 f2 = New Form2() f2.Show() • 程式碼在宣告Form2表單物件變數f2後,使用Show()方法開啟Form2表單。關閉表單是使用Close()方法,如下所示: f2.Close()

  15. 12-2-2 新增模組-說明 • Visual Basic模組(Modules)是一種參考資料型態,在Visual Basic專案加入模組檔案,預設使用Module1~n.vb命名,通常專案中的模組是用來建立表單共享的程序與函數。 • 表單Form1.vb是類別(Class)檔案,在表單建立的程序與函數需要使用物件方法來呼叫,但是位在模組宣告的公用(Public)變數或程序與函數,就能夠使用如同Visual Basic內建函數的方式來進行呼叫。

  16. 12-2-2 新增模組-範例 01: Module Module1 02: 03: Public Function SearchText(ByVal strSource _ As String, ByVal strTarget As String, _ ByVal start As Integer) As Integer 04: Return InStr(start, strSource, strTarget) 05: End Function 06: 07: Public Function ReplaceText(ByVal strSource _ As String, ByVal strReplace As String, ByVal _ start As Integer, ByVal len As Integer) As String 08: Dim strLeft, strRight As String 09: strLeft = Mid(strSource, 1, start) 10: strRight = Mid(strSource, start + len + 1) 11: Return strLeft & strReplace & strRight 12: End Function 13: 14: End Module

  17. 12-2-3 模組等級的範圍 • 模組等級範圍可以套用在模組、類別與結構,如果在模組、類別與結構宣告變數、程序與函數,就屬於此等級的範圍。其宣告使用的存取關鍵字,如下所示: • Private:宣告成Private的變數、程序與函數,只能在該模組中的程序與函數來存取與呼叫。 • Public:如果宣告成Public的變數、程序與函數,可以在整個Visual Basic應用程式中各模組的程序與函數來存取與呼叫。

  18. 12-2-4 指定啟動表單或模組 • Visual Basic專案預設的啟動表單是Form1表單,我們可以將它指定成其他表單或擁有程序Main()主程式的模組。如下圖所示:

  19. 12-3 建立多表單的應用程式-說明 • 在Visual Basic建立多表單的Windows應用程式,其目的通常是為了建立不同的資料輸入介面。例如:建立Windows應用程式的「尋找和取代」功能,在執行後可以顯示表單或對話方塊,用來輸入搜尋和取代字串。 • 換句話說,除了第10章的預設對話方塊外,我們也可以自行建立表單作為對話方塊用途。表單或對話方塊依照資料輸入方式分為:非強制回應和強制回應表單。

  20. 12-3 建立多表單的應用程式-非強制回應表單(Modeless) • 非強制回應表單開啟的表單是一個獨立表單,使用者可以在各表單間移動焦點,其地位是相等的。通常在應用程式的工具視窗,就屬於這種表單,使用者可以自行決定執行哪一個表單的功能。 • 當在Visual Basic專案加入表單後,表單是使用Show()方法來開啟,如下所示: f2 = New Form2() f2.Show() • 上述程式碼在建立表單Form2物件後,使用Show()方法開啟非強制回應表單Form2。

  21. 12-3 建立多表單的應用程式-強制回應表單(Modal) • 強制回應表單就是對話方塊,在開啟表單或對話方塊後,使用者需要輸入資料和關閉視窗後,才能繼續執行應用程式。例如:MsgBox()函數的Windows訊息視窗,就屬於這種表單。 • 在Visual Basic專案加入表單後,表單是使用ShowDialog()方法開啟表單,如下所示: f3 = New Form3() f3.ShowDialog() ' 開啟對話方塊 If f3.DialogResult = DialogResult.OK Then …… End If

  22. 12-3 建立多表單的應用程式-圖例

  23. 12-4 建立多文件介面的應用程式-說明 • 「多文件介面」(Multiple-document Interface)不同於上一節的多表單應用程式,它是在父MDI表單,可以同時開啟多個子MDI表單,如下圖所示:

  24. 12-4 建立多文件介面的應用程式-建立父MDI表單 • 父MDI表單是子MDI表單的容器表單,只需將表單Form1的【IsMDIContainer】屬性設為【True】,就可以將表單Form1建立成父MDI表單。

  25. 12-4 建立多文件介面的應用程式-建立與開啟子MDI表單 • 子MDI表單是在父MDI表單中顯示的表單,在父表單需要使用程式碼來開啟子MDI表單,使用的是Show()方法,如下所示: Dim fc As Form2 = New Form2() fc.MdiParent = Me fc.Show()

  26. 12-4 建立多文件介面的應用程式-取得擁有焦點的子MDI表單物件 • 在同時開啟的多個子MDI表單中,只能有一個表單是作用中的表單,即取得焦點。 • 在父MDI表單物件可以使用ActiveMdiChild屬性來取得是哪一個表單物件,如下所示: Dim active As Form2 = Me.ActiveMdiChild If (Not active Is Nothing) Then ……….. End If

  27. 12-4 建立多文件介面的應用程式-子MDI表單取得父MDI表單物件 • 反過來看,對於作用中的子MDI表單,如果需要呼叫父MDI表單的方法,我們可以使用子MDI表單的MdiParent屬性取得父MDI表單,如下所示: Dim parent As Form1 = Me.MdiParent parent.Search(txtSearch.Text) • 上述程式碼取得父MDI表單Form1後,呼叫Search()方法。

  28. 12-4 建立多文件介面的應用程式-排列子MDI表單 • 在父MDI表單可能開啟多個子MDI表單,此時在父MDI表單的功能表可以新增選項,以便切換不同子表單的排列方式,如下所示: Me.LayoutMdi(MdiLayout.Cascade) • 上述程式碼使用LayoutMdi()方法排列子表單,其參數是排列方式的MdiLayout列舉常數。

  29. 12-4 建立多文件介面的應用程式-MdiLayout列舉常數 • MdiLayout列舉常數,如下表所示:

  30. 12-4 建立多文件介面的應用程式-貼上剪貼簿 • 剪貼簿功能可以將子MDI表單的文字方塊內容剪下,然後貼到其他子MDI表單上。Visual Basic剪貼簿處理是Clipboard類別,可以使用SetDataObject()方法存入剪貼簿,如下所示: Clipboard.SetDataObject( _ active.txtInput.SelectedText) • 上述程式碼將文字方塊選取的文字內容貼上剪貼簿。

  31. 12-4 建立多文件介面的應用程式-貼上剪貼簿 • 至於取出剪貼簿內容物件是使用GetDataObject()方法,如下所示: Dim ido As IDataObject = Clipboard.GetDataObject() • 程式碼取出剪貼簿內容的IDataObject物件後,我們可以使用If條件檢查物件內容的資料格式,如下所示: If ido.GetDataPresent(DataFormats.Text) Then active.txtInput.SelectedText = _ ido.GetData(DataFormats.Text).ToString() End If

  32. 12-4 建立多文件介面的應用程式-圖例

  33. 12-5 執行外部應用程式-說明 • Windows作業系統是一種多工的作業系統,可以同時執行多個應用程式,例如:同時執行瀏覽程式Internet Explorer瀏覽網頁或Outlook Express收發電子郵件。 • 同樣的,使用Visual Basic建立的應用程式,如果需要,可以在Visual Basic應用程式呼叫其他應用程式,以便同時執行相關工具程式,例如:記事本或小畫家。

  34. 12-5 執行外部應用程式-Shell()函數 • 在Visual Basic程式執行外部應用程式的函數是Shell()函數,如下所示: progID = Shell( _ "C:\Windows\System32\notepad.exe", _ AppWinStyle.NormalFocus) • 上述Shell()函數的第1個參數是應用程式的完整路徑字串,可以省略執行檔的附檔名.exe,第2個參數是開啟應用程式視窗的樣式,這是AppWinStyle列舉常數。

  35. 12-5 執行外部應用程式- AppWinStyle列舉常數 • AppWinStyle列舉常數,如下表所示:

More Related