我在这里学编程 进阶篇 共28页[1 2 3 4 5 6 >7<.».. 最后一页]

 新建子窗体

   多文档应用程序中最常见的一项操作是通过新建命令建立多个子窗体。例如,执行Word[文件]菜单下的[新建]命令,可以新建出多个子窗体,这些子窗体的外观与功能完全相同,只是在名称上使用编号区分,如“文档1”、“文档2”等。

要实现这一功能,一种最直观的方法是:首先在工程中添加若干个窗体,并将它们设置为MDI窗体的子窗体。然后,在程序运行时,通过[新建]菜单来打开它们。事实上,使用这种方法实现起来是很困难的缺乏灵活性并浪费系统资源。

VB中,是通过对象变量为MDI窗体生成子窗体的。

声明窗体的对象变量的格式如下:
     Dim 变量 As new 窗体名
 
    其中“窗体名”是一个已存在的子窗体的名称。在声明了对象变量后,   通过语句 :变量.Show 就可以显示出一个新的窗体。在VB中,是通过对象变量 为MDI窗体生成子窗体 。

新建子窗体

    新建一个工程,向当前工程中添加一个MDI窗体,并为它创建一个[文件]菜单,其中包含[新建][退出]两个选项,如图所示。

其中工程中各对象的属性设置如表所示。

对象        属性       
     窗体
       名称        MDIForml
                Caption     新建子窗体
[新建]新建菜单  名称        MenNew
[
退出]菜单      名称        MenExit
   
子窗体      名称        FrmChild

打开[代码]窗口,编写代码如下:
     Private Sub MenExit_Click()
     End
     End Sub

    Private Sub MenNew_Click()
    Dim DocForm As New FormChild
    Static i As Integer
    DocForm.Caption = "无标题" & i + 1
    DocForm.Show
    i = i + 1
    End Sub

MenNeWClick事件过程中,定义了一个静态变量i,通过该变量可以使子窗体的标题出现编号。设置启动窗体为MDI窗体,运行程序,执行[文件]菜单中的[新建]命令,则MDI窗体中会出现一个标题为“无标题1”的子窗体,如图746所示。再次执行[新建]命令,则又出现一个标题为“无标题2”的子窗体。图所示的是执行3[新建]命令后的结果。

子窗体FrmChild是新建窗体的模板,新创建出的子窗体将与ymlCld子窗体的外观完全相同。例如,在FrmChild窗体中放置一个文本框,则新建的子窗体中也有一个文本框,并且名称是相同的,如图所示。

因此,要更改子窗体的外观,只需更改模板子窗体的外观就可以了。

除此之外,模板子窗体的事件过程对新建子窗体也有效。例如,编写模板子窗体的事件过程如下:

Private Sub Form_Load()
     Text1.Text = "欢迎"
     End Sub

 运行程序,在新建的子窗体上单击,则子窗体中的文本框内会显示“欢迎”两个字。如图 上所示的是新建两个子窗体,并单击子窗体“无标题2”后的效果。

MDI窗体还有一个重要的属性--ActiveForm,使用该属性可以代替当前活动子窗体的名称。例如,
   
MDIForm1.ActiveForm.Caption="我也会VB编程"
    语句的功能是将当前活动子窗体的标题更改为我也会VB编程。

使用ActiveForm属性可以引用当前活动子窗体的任意属性、方法或事件,而不必知道子窗体的名称。

[文件]菜单中[退出]选项的Click事件过程更改为;

Private Sub MenExit_Click()
     Unload MDIForm1.ActiveForm
     End Sub

这样,执行[退出]命令的效果是将当前活动的子窗体卸载。

我在这里学编程 进阶篇 共28页[1 2 3 4 5 6 >7< ».. 最后一页]