窗体类型
1、模式窗体与无模式窗体
模式窗体(Style: vbmode),强制获得焦点,并使其它窗体处于“静止”(代码暂停执行),只有模式窗体隐藏或卸载后其它窗体才能缓过气来
2、SDI与MDI
MDI父窗体是其它子窗体的容器
添加窗体
工程中添加一个新的窗体
工程中添加一个已经在其它工程中现存的窗体(若与当前同名,将会提示)
删除窗体
1、先从工程中右击进行“移除”(只是不在工程中,但仍在在工程文件夹中)
窗体样式
仅vbfixedsingle和VBSizable会在任务栏上有图标
BorderStyle只能在设计中设置,不能在代码中设置
窗体图标Icon
属性中设置图标
代码中设置: me.icon=LoadPicture(App.Path & “\33.ico”)
窗体的背景图片
属性中设置
代码中设置: object.Picture=LoadPicture(.....)
用剪贴板:vbCFBitmap,vbCFMetafile,vbCFDIB来设置图片格式
me.Picture=Clipboard.GetData(vbCFBitpmap) ' 从剪贴板中取得图片
SavePicture me.Picture,App.Path & "\sd.bmp" '将对象中的图片保存下来
Load 将窗体载入内存(并不显示)
Hide 隐藏窗体,若未载入,会隐形进行载入内存但不显示
UnLoad 卸载窗体,只是从内存中删除显示部分,代码部分仍在内存中。
Print与FormPrint
前者是在窗体上显示字符等
后者是把窗体上所有东西看作图片发送给打印机,进行打印
MDI窗体
一个工程只能有一个MDI,SDI设置为MDIChildren为真时,就是子窗体。
子窗体如何显示?由MDI控制,其AutoShowChildren设置为真时,表示只要子窗体加载在内存中就可以显示出来,否则不显示。
因此,为真时,子窗体的load与Show功能就相同了。(注意,为真不是运行MDI就显示Child,须在子窗体做加载时才显示)
MDI有菜单,子窗体也可以有菜单,当打开子窗体时,父窗体的菜单 就被子窗体的菜单替换。一旦关闭子窗体,父窗体的菜单又会回归出来。
MDI窗体上只能放置具有Alignment属性的控件(图片框,工具栏,任务栏等)和具有不可见的控件(计时器、通用对话框等)
其它的文本框、按钮等不能放置。 要放的话,可先在MDI中放图片框,其它控件可放在其中。
同样MDI不能用Print方法
MDI好像是生成了很多子窗体,这些子窗体可以样式各异。
实际上,子窗体并不能用代码来控制,即只能在设计中把样式设计好。运行时,再调用。相当于起到模板作用。这个意义上子窗体好像是万物主,而不是父窗体。
从前面的作用看来,父窗体类似中国式父母,他们为子窗体打好基础,撑好伞,实际起作用的还是子窗体。
所以子窗体的模板很重要,可以由它生成很多的子窗体。格式如下:
dim frmVar as New frmChild ' 由子窗体模板frmChild生成一个新窗体frmVar
下面是一个由菜单“新建”(New)产生一个新的子窗体的情况:
Private Sub New_Click() Dim frm As New Form1 Static i As Integer i = i + 1 frm.Caption = "无标题" & i frm.Show End Sub
注意,子窗体模板中的控件也会随之生成。一句话,设计中子窗体是什么样子,生成的新子窗体也是什么样子。
运行中若有多个子窗体,当前激活的子窗体可以用 MDIform.ActiveFom来指定这个子窗体。