VB考試教程:多文檔界面(MDI)的程序設(shè)計

字號:

三、多文檔界面(MDI)的程序設(shè)計  
    多文檔界面MDI(Mulgiple Document Interface)是指在一個父窗口下面可以同時打開多個子窗口。MDI應(yīng)用程序允許用戶同時顯示多個文檔,每個文檔顯示在它自己的窗口中,文檔或子窗口被包含在父窗口中,父窗口為應(yīng)用程序中所有的子窗口提供工作空間。子窗口歸屬于父窗口,如果父窗口關(guān)閉,則所有子窗口全部關(guān)閉。常見的Windows應(yīng)用的界面,例如微軟Office的幾個組件程序,全部采用的都是多文檔界面。
    1、MDI應(yīng)用程序設(shè)計示例
    創(chuàng)建MDI應(yīng)用程序的方法比較簡單。首先必須插入一個MDI窗體。下面以一個示例來說明如何利用VB中的MDI進行程序設(shè)計。
    (1)設(shè)置初始窗體屬性
    首先啟動一個新的工程,在屏幕一就會出現(xiàn)一個空白的窗體,窗體的屬性。
    屬性 設(shè)置
    Name
     Form1
    Caption
     Form1
    AutoRedraw True'窗體的自動重繪處于有效的狀態(tài)
    BorderStyle
     2-Sizable'在程序的運行過程中窗體可以改變大小
    MDIChild
     True'窗體可以作為MDI窗體的子窗體
    Moveable
     True'在程序的運行過程窗體可以移動
    任何普通窗體都可以被設(shè)置為MDI應(yīng)用程序的子窗體。方法是把普通窗體的MDIChild屬性設(shè)置為True。一個應(yīng)用程序可以包含許多相似或者不同樣式的MDI子窗體。
    (2)添加MDI窗體,設(shè)置屬性
    選擇菜單“工程(Project)”/“添加MDI窗體(Add MDI Form)”,彈出對話框,單擊[打開]按鈕,添加一個MDI窗體,窗體的屬性設(shè)置。
    屬性 設(shè)置
    Name
     MDIform1
    AutoShowChildern
     FalseMDI'窗體不能夠自動的顯示子窗體
    Caption
     MDIForm1
    Moveable
     False'窗體在程序的運行過程中不能移動
    StartUpPosition
     2-CenterScreen'窗體始終位于屏幕的中央
    注意:一個應(yīng)用程序只能有一個MDI窗體。如果工程已經(jīng)有了一個MDI窗體,則該“工程”菜單上的“添加MDI窗體”命令就不可使用。
    (3)添加子窗體,設(shè)置屬性
    選擇菜單“工程Project”/“添加窗體Add Form”,就會彈出對話框。
    在AddForm對話框中選擇About Dialog(關(guān)于對話框),單擊[打開]按鈕,就在MDI窗體上添加一個子窗體,子窗體FrmAbout的屬性設(shè)置如下
    屬性 設(shè)置
    Name
     FrmAbout
    BorderStyle
     3-Fixed Dialog'窗體在程序的運行過程中不能改變大小
    Caption
     About MyApp
    MDIChild
     True'窗體為MDI窗體的一個子窗體
    Moveable
     True'程序運行時可以移動窗體
    Visible
     True
    (4)為子窗體Form1添加代碼
    在程序的設(shè)計階段雙擊子窗體Form1,在它的Form_Load()過程中添加下列代碼:
    Private Sub Form_Load()
    Dim X As Integer
    For X=0 TO 3000 Step 75
    Line(0,1000)-(x,0)'畫線
    line(0,1000)-(x,2000)
    Line(3000,1000)-(3000-x,2000)
    Line(3000,1000)-(3000-x,0)
    Next
    End Sub
    程序說明:程序首先定義了一個整型變量X,然后進入一個循環(huán),在循環(huán)中通過四個畫直線的語句來實現(xiàn)程序中繪制圖形的功能。
    (5)為MDI窗體添加菜單
    選擇菜單“工具Tool”/“菜單編輯器Menu Editor”,就會彈出對話框,在菜單編輯器中,建立兩個菜單項,即“文件”和“退出”,在“文件”項下還有兩個菜單,即“繪圖(名稱:Draw)”和“關(guān)于(名稱:About)”。
    (6)添加菜單單擊事件響應(yīng)代碼
    分別響應(yīng)三個菜單項的鼠標(biāo)單擊事件的代碼如下:
    1)單擊"關(guān)于"菜單項
    Private Sub About_Click()
    Form1.Hide '隱藏窗體Form1.
    frmAbout.Show '顯示窗體frmAbout
    End Sub
    2)單擊"繪圖"菜單項
    Private Sub Draw_Click()
    frmAbout.Hide '隱藏窗體frmAbout
    Form1.Show '顯示窗體Form1.
    End Sub
    3)單擊"退出"菜單項
    Private Sub Exit _Click()
    End
    End Sub
    (7)運行程序
    [程序演示] [程序下載]
    2、MDI應(yīng)用程序中的菜單設(shè)計
    在MDI應(yīng)用程序中,每一個子窗體的菜單都顯示在MDI窗體上,而不是在子窗體本身。當(dāng)子窗體有焦點時,該子窗體的菜單就代替菜單上的MDI窗體的菜單。如果沒有可見的子窗體,或者如果帶有焦點的子窗體沒有菜單,則顯示MDI窗體的菜單。
    MDI應(yīng)用程序經(jīng)常使用幾套菜單。當(dāng)打開一個文檔時,應(yīng)用程序顯示與該類文檔相關(guān)的菜單,通常,當(dāng)沒有可見子窗體時,會顯示一個不同的菜單。例如,當(dāng)沒有文件打開時,Microsoft Excel只顯示"文件"與"幫助"菜單。當(dāng)用戶打開一個文件時,其他菜單就會顯示出來。
    (1)創(chuàng)建MDI應(yīng)用程序的菜單
    通過給MDI窗體和子窗體添加菜單控件,可以為VB應(yīng)用程序創(chuàng)建菜單。管理MDI應(yīng)用程序中菜單的一個方法是把希望在任何時候都顯示的菜單控件放在MDI窗體上。當(dāng)運行該應(yīng)用程序時,如果沒有可見的子窗體,會自動顯示MDI窗體菜單。
    把應(yīng)用于子窗體的菜單控件放置到子窗體中。在運行時,只要有一個子窗體可見,這些菜單標(biāo)題就會顯示在MDI窗體的菜單欄中。
    有些應(yīng)用程序支持多種類型的文檔。要在VB中創(chuàng)建這樣的應(yīng)用程序,應(yīng)使用兩個子窗體。設(shè)計一個帶有執(zhí)行工作單任務(wù)菜單的子窗體和加一個帶有完成圖表任務(wù)菜單的子窗體。在運行時,當(dāng)工作單窗體的實例有焦點時,則顯示工作單菜單,而當(dāng)選取圖表時則顯示圖表窗體的菜單。如果所有的工作單和圖表都關(guān)閉,則顯示MDI窗體的菜單。