|
|
|
|
|
|
|
|
|
要实现这一功能,一种最直观的方法是:首先在工程中添加若干个窗体,并将它们设置为MDI窗体的子窗体。然后,在程序运行时,通过[新建]菜单来打开它们。事实上,使用这种方法实现起来是很困难的缺乏灵活性并浪费系统资源。 在VB中,是通过对象变量为MDI窗体生成子窗体的。
声明窗体的对象变量的格式如下:
新建一个工程,向当前工程中添加一个MDI窗体,并为它创建一个[文件]菜单,其中包含[新建]与[退出]两个选项,如图所示。
其中工程中各对象的属性设置如表所示。
对象
属性
值
打开[代码]窗口,编写代码如下: 在MenNeW—Click事件过程中,定义了一个静态变量i,通过该变量可以使子窗体的标题出现编号。设置启动窗体为MDI窗体,运行程序,执行[文件]菜单中的[新建]命令,则MDI窗体中会出现一个标题为“无标题1”的子窗体,如图7.46所示。再次执行[新建]命令,则又出现一个标题为“无标题2”的子窗体。图所示的是执行3次[新建]命令后的结果。
子窗体FrmChild是新建窗体的模板,新创建出的子窗体将与ymlCl毗d子窗体的外观完全相同。例如,在FrmChild窗体中放置一个文本框,则新建的子窗体中也有一个文本框,并且名称是相同的,如图所示。
因此,要更改子窗体的外观,只需更改模板子窗体的外观就可以了。 除此之外,模板子窗体的事件过程对新建子窗体也有效。例如,编写模板子窗体的事件过程如下:
Private Sub Form_Load() 运行程序,在新建的子窗体上单击,则子窗体中的文本框内会显示“欢迎”两个字。如图 上所示的是新建两个子窗体,并单击子窗体“无标题2”后的效果。
MDI窗体还有一个重要的属性--ActiveForm,使用该属性可以代替当前活动子窗体的名称。例如, 使用ActiveForm属性可以引用当前活动子窗体的任意属性、方法或事件,而不必知道子窗体的名称。 将[文件]菜单中[退出]选项的Click事件过程更改为;
Private Sub MenExit_Click() 这样,执行[退出]命令的效果是将当前活动的子窗体卸载。
|
|
|
|
| |