应用程序窗体设计.docx
- 文档编号:10214857
- 上传时间:2023-02-09
- 格式:DOCX
- 页数:18
- 大小:79.90KB
应用程序窗体设计.docx
《应用程序窗体设计.docx》由会员分享,可在线阅读,更多相关《应用程序窗体设计.docx(18页珍藏版)》请在冰豆网上搜索。
应用程序窗体设计
应用程序窗体设计
一、利用ActiveX控件进行窗体的界面设计
在VB的可视化的编程环境中,用户不必编写大量的代码,就可以利用VB提供的功能强大的大量控件设计出丰富的界面,这样一来可以使程序员从繁琐的代码编写任务中解脱出来,从而投入到更具有创造力和想象力的工作中去,设计出有个性,有特色、友好的界面。
下面是一个利用ActiveX控件来进行程序界面设计的示例,在这个示例程序中所用到的一些控件在程序的初始化阶段没有被加载,需在读者自己把它们添加到工具箱中。
1.启动一个新工程,向工具箱中添加ActiveX控件
启动一个新的标准Exe工程,然后选择菜单[工程]/[部件],在弹出的对话框中选择选中部件对话框中的MicrosoftTableDialogControl6.0,确认后返回设计状态,就会发现SSTab控件
已经加入到工具箱中。
2.设置SSTab控件属性
SSTab控件的状态可以在程序中动态的修改,比如在窗体的设计阶段双击窗体,在窗体的Form_load()事件中添加下列代码:
PrivateSubForm_load()
SSTab1.TabCaption
(1)="选项1" '设置选项1上的文本。
SSTab1.TabVisible
(2)=False '设置选项2上的可见状态为不可见。
SSTab1.TabEnabled(0)=False '设置选项0的有效状态为无效。
SSTab1.Tab=1 '设置选项1为选中的状态
SSTab1.Tabs=4 '添加一个选项
SSTab1.TabsPerRow=4 '设置一行中出现的标签卡数为4
EndSub
3.向窗体上添加控件
设计一个用于算术运算的应用例子,先向窗体上添加一个CommandButton控件,两个TextBox控件,一个SSTab控件,四个ToggleButton控件、两个UpDown控件和四个Lable控件。
在部件对话框中选中MicrsoftForms2.0ObjectLiberary和MicrsoftWindowsCommonControls_25.0(SP2),添加ToggleButton控件
和UpDown控件
到工具箱。
控件说明如下:
CommandButton控件用来结束程序的运行,为程序的正常结束提供一个出口。
TextBox控件用来显示程序中的两个变量X和Y的值。
UpDown控件用来实现变量的更新。
ToggleButton控件用来实现不同的加减乘除运算。
Lable控件用来显示文本的运算结果。
SSTab控件用来显示不同的选项,同时作为ToggleButton控件的容器。
4.添加事件响应代码
PrivateSubCommand1_Click()
End
EndSub
PrivateSubForm_Load()
SSTab1.TabCaption(0)="加法"
SSTab1.TabCaption
(1)="减法"
SSTab1.TabCaption
(2)="乘法"
SSTab1.TabCaption(3)="除法"
IfText1.Text=""Then '在设计时,将窗体上的两个文本框的属性清空。
Text1.Text="0.00000"
EndIf
IfText2.Text=""Then
Text2.Text="0.00000"
EndIf
EndSub
PrivateSubSSTab1_Click(PreviousTabAsInteger)
ToggleButton1.Enabled=True
EndSub
PrivateSubText2_Change()
IfText2.Text=0Then
ToggleButton4.Enabled=False '如果Text2中的数字为0,除法无效。
Else
ToggleButton4.Enabled=True
EndIf
EndSub
PrivateSubToggleButton4_Click()
Label4.Caption=Val(Text1.Text)/Val(Text2.Text)
EndSub
PrivateSubToggleButton3_Click()
Label4.Caption=Val(Text1.Text)*Val(Text2.Text)
EndSub
PrivateSubToggleButton2_Click()
Label4.Caption=Val(Text1.Text)-Val(Text2.Text)
EndSub
PrivateSubToggleButton1_Click()
Label4.Caption=Val(Text1.Text)+Val(Text2.Text)
EndSub
PrivateSubUpDown1_DownClick()
IfText1.Text>0Then
Text1.Text=Val(Text1.Text)-1
EndIf
EndSub
PrivateSubUpDown1_UpClick()
IfText1.Text=""Then
Text1.Text=0
EndIf
Text1.Text=Val(Text1.Text)+1
EndSub
PrivateSubUpDown2_DownClick()
IfText2.Text>0Then
Text2.Text=Val(Text2.Text)-1
EndIf
EndSub
PrivateSubUpDown2_UpClick()
IfText2.Text=""Then
Text2.Text=0
EndIf
Text2.Text=Val(Text2.Text)+1
EndSub
5.保存文件,运行程序
[程序演示] [程序下载]
二、多窗体程序设计
当应用程序功能较强和分类较多,程序和用户的交互频繁时,如果只用一个窗体和用户进行交互,一方面难以进行合乎美观原则的设计,另一方面分类工作很难,设计出来的界面不符合友好原则。
这时最好使用多重窗体程序设计,增强程序界面的友好性。
多窗体指的应用中有多个窗体,它们之间没有绝对的从属关系。
每个窗体的界面设计与单窗体的完全一样,只是在设计之前应先建立窗体,这可以通过菜单“工程”/“添加窗体”命令实现。
程序代码是针对每个窗体编写的,当然,应注意窗体之间存在的先后顺序和相互调用的关系。
所以,多重窗体实际上是单一窗体的集合,而单一窗体是多重窗体程序设计的基础。
一般说来,多窗体的设计基本分成以下几个步骤:
◆分析应用要求,将其功能划分为不同的几部分
◆分别创建各个窗体、模块
◆在创建窗体时,除各窗体自身要完成的功能外,还要考虑窗体之间的调用关系
◆点击[工程]/[属性]菜单,在[启动对象]中选择应用运行时首先执行的对象
◆运行应用程序,检验应用及各窗体的运行情况
1、多窗体程序设计常用的方法
在单窗体程序设计中,所有的操作都在一个窗体中完成,不需要在多个窗体中切换。
而在多窗体程序中,需要打开、关闭、隐藏或显示指定的窗体,这可以通过相应的语句和方法来实现。
在多窗体程序设计经常用到下面四种方法:
Load,ShowHide和Unload.
(1)Load方法
它的语法结构如下:
Load[窗体名称]
使用Load方法调用的窗体被存入内存,并不显示出来,同时会产生一个Form_Load()事件。
例如:
LoadForm2 '将Form2窗体存入内存
(2)Show方法
它的语法结构如下:
[窗体名称].Show
Show方法用来显示被调用的窗体。
Show方法兼有装入和显示两种功能,也就是说,在执行Show方法时,如果窗体不在内存中,则Show方法会自动的把窗体调入内存,然后再显示出来。
例如:
LoadForm2
Form2.Show '将Form2存于内存,并显示Form2窗体
(3)Hide方法
它的语法结构如下:
[窗体名称].Hide
使用Hide方法会隐藏被调用的窗体,既不在屏幕上显示,但仍在内存中(与Unload方法不同),被调用的窗体中的属性等已经处于无效的状态。
例如:
Form1.Hide
Form2.Show '将Form隐藏,并显示Form2窗体
(4)Unload方法
它的语法结构如下:
Unload[窗体名称]
使用Unload方法会清除内存中指定的窗体,与此同时,窗体中的变量和属性等都会处于无效的状态,在移去窗体的同时会产生一个Form_QueryUnload()事件。
例如:
Form1.Show
UnloadForm2'显示Form1窗体,从内存中移去Form2窗体。
2、一个多窗体程序设计示例
下面就以一个示例来说明如何运进多窗体的程序设计(见教材P283)。
(1)启动新工程
1)设置属性
首先启动一个新的工程,屏幕出现一个空白的窗体,窗体的属性设置如下:
属性
设置
Name
Form1
Caption
Form1
BorderStyle
3-FixedDialog'窗体的大小不能够在程序的运行过程中改变
MDIChild
False
StartUpPosition
2-CenterScreen'窗体在程序的运行过程中始终位于屏幕的中央
Moveable
False'在程序的运行过程中不能够移动窗体
2)添加控件
在空白的窗体上添加如下控件:
五个Label控件、四个TextBox控件和两个CommandButton控件。
(2)添加窗体
选择菜单“工程(Project)”/“添加窗体(addform)”命令,弹出对话框,在添加窗体的对话框中选择"窗体"项,单击[打开]按钮,系统就会自动的向原有的工程中添加一个窗体。
1)添加控件
在新的窗体上放置一CommandButton控件,作用是在隐藏新增的窗体的同时显示原有的窗体。
则窗体如下:
2)添加代码
在"继续"按钮的Command1_Click()事件中添加下列代码:
PrivateSubCommand1_Click()
Form2.Hide '隐藏窗体2
Form1.Show '显示窗体1
EndSub
程序说明:
在窗体Form2被显示的过程中,单击[继续]按钮,就会激活Command1_Click()事件,然后通过Form2.Hide和Form2.Show两条语句实现隐藏窗体和显示窗体的功能。
(3)添加说明模块
选择菜单[工程]/[添加模块],就会弹出对话框:
在模块的声明段中添加下列代码:
Globala1asSingle
Globala2asSingle
Globala3asSingle
Globala3asSingle '定义四个全局变量,分别用来存储第一季度,第二季度、第三季度和第四季度的销售情况
(4)添加程序代码
1)窗体Form1中的代码如下:
PrivateSubCommand1_Click()
Form1.Hide
Form2.Show
EndSub
PrivateSubCommand2_Click()
End
EndSub
PrivateSubText1_Change()
a1=Val(Text1.Text) 'VAL()函数用于将字符串转化为数值型
EndSub
PrivateSubText2_Change()
a2=Val(Text2.Text)
EndSub
PrivateSubText3_Change()
a3=Val(Text3.Text)
EndSub
PrivateSubText4_Change()
a4=Val(Text4.Text)
EndSub
2)窗体Form2中的代码如下:
PrivateSubCommand1_Click()
Form2.Hide
Form1.Show
EndSub
PrivateSubForm_Load()
Form2.AutoRedraw=True '使窗体进入绘图模式
Form2.ForeColor=&HFF0000 '用前景色绘制填充的矩形
Line(300,1000-a1)-(800,2000),,BF
Line(1200,1000-a2)-(1700,2000),,BF
Line(2100,1000-a3)-(2600,2000),,BF
Line(3000,1000-a4)-(3500,2000),,BF
EndSub
(5)指定启动窗体
VB规定,对于多窗体程序,必须指定其中一个窗体为启动窗体,如果未指定,就把设计时的第一个窗体作为启动窗体。
只有启动窗体才能在运行时自动显示出来,其它窗体必须通过Show方法显示。
启动窗体通过菜单“工程”/“工程属性”命令来指定。
单击“通用”选项卡,单击“启动对象”栏右端的箭头,单击作为启动窗体的名字,“确定”。
(6)保存、运行
[程序演示] [程序下载]
3、SubMain过程
在一个含有多个窗体或多个工程的应用程序中,有时候需要在显示多个窗体之前对一些条件进行初始化,这就要在启动程序时执行一个特定的过程。
在VB中,这样的过程称为启动过程,并命名为SubMain过程。
一般情况下,整个应用程序从设计时的第一个窗体开始执行,需要首先执行的代码放在Form_Load事件过程中,如果需要从其它窗体开始执行应用程序,则可通过菜单“工程”/“工程属性”命令的“通用”选项卡指定启动窗体。
但如果有SubMain过程,则可以首先执行该过程。
SubMain过程在标准模块中建立。
其方法是:
在标准模块窗口在键入:
SubMain
然后回车,将显示该过程的开头和结束语句,然后在两个语句之间输入程序代码。
SubMain过程位于标准模块中。
一个工程可以有多个标准模块,但SubMain过程只能有一个,它通常是作为启动过程编写的。
与C语言不同,VB中的SubMain过程不能被自动识别,必须把它指定为启动过程,方法与设置启动启动窗体类似。
通过菜单“工程”/“工程属性”命令的“通用”选项卡指定启动过程。
如果把SubMain指定为启动过程,则可在运行程序时先于窗体模块自动执行。
三、多文档界面(MDI)的程序设计
多文档界面MDI(MulgipleDocumentInterface)是指在一个父窗口下面可以同时打开多个子窗口。
MDI应用程序允许用户同时显示多个文档,每个文档显示在它自己的窗口中,文档或子窗口被包含在父窗口中,父窗口为应用程序中所有的子窗口提供工作空间。
子窗口归属于父窗口,如果父窗口关闭,则所有子窗口全部关闭。
常见的Windows应用的界面,例如微软Office的几个组件程序,全部采用的都是多文档界面。
1、MDI应用程序设计示例
创建MDI应用程序的方法比较简单。
首先必须插入一个MDI窗体。
下面以一个示例来说明如何利用VB中的MDI进行程序设计。
(1)设置初始窗体属性
首先启动一个新的工程,在屏幕一就会出现一个空白的窗体,窗体的属性。
属性
设置
Name
Form1
Caption
Form1
AutoRedraw
True'窗体的自动重绘处于有效的状态
BorderStyle
2-Sizable'在程序的运行过程中窗体可以改变大小
MDIChild
True'窗体可以作为MDI窗体的子窗体
Moveable
True'在程序的运行过程窗体可以移动
任何普通窗体都可以被设置为MDI应用程序的子窗体。
方法是把普通窗体的MDIChild属性设置为True。
一个应用程序可以包含许多相似或者不同样式的MDI子窗体。
(2)添加MDI窗体,设置属性
选择菜单“工程(Project)”/“添加MDI窗体(AddMDIForm)”,弹出对话框,单击[打开]按钮,添加一个MDI窗体,窗体的属性设置。
属性
设置
Name
MDIform1
AutoShowChildern
FalseMDI'窗体不能够自动的显示子窗体
Caption
MDIForm1
Moveable
False'窗体在程序的运行过程中不能移动
StartUpPosition
2-CenterScreen'窗体始终位于屏幕的中央
注意:
一个应用程序只能有一个MDI窗体。
如果工程已经有了一个MDI窗体,则该“工程”菜单上的“添加MDI窗体”命令就不可使用。
(3)添加子窗体,设置属性
选择菜单“工程Project”/“添加窗体AddForm”,就会弹出对话框。
在AddForm对话框中选择AboutDialog(关于对话框),单击[打开]按钮,就在MDI窗体上添加一个子窗体,子窗体FrmAbout的属性设置如下
属性
设置
Name
FrmAbout
BorderStyle
3-FixedDialog'窗体在程序的运行过程中不能改变大小
Caption
AboutMyApp
MDIChild
True'窗体为MDI窗体的一个子窗体
Moveable
True'程序运行时可以移动窗体
Visible
True
(4)为子窗体Form1添加代码
在程序的设计阶段双击子窗体Form1,在它的Form_Load()过程中添加下列代码:
PrivateSubForm_Load()
DimXAsInteger
ForX=0TO3000Step75
Line(0,1000)-(x,0)'画线
line(0,1000)-(x,2000)
Line(3000,1000)-(3000-x,2000)
Line(3000,1000)-(3000-x,0)
Next
EndSub
程序说明:
程序首先定义了一个整型变量X,然后进入一个循环,在循环中通过四个画直线的语句来实现程序中绘制图形的功能。
(5)为MDI窗体添加菜单
选择菜单“工具Tool”/“菜单编辑器MenuEditor”,就会弹出对话框,在菜单编辑器中,建立两个菜单项,即“文件”和“退出”,在“文件”项下还有两个菜单,即“绘图(名称:
Draw)”和“关于(名称:
About)”。
(6)添加菜单单击事件响应代码
分别响应三个菜单项的鼠标单击事件的代码如下:
1)单击"关于"菜单项
PrivateSubAbout_Click()
Form1.Hide '隐藏窗体Form1.
frmAbout.Show '显示窗体frmAbout
EndSub
2)单击"绘图"菜单项
PrivateSubDraw_Click()
frmAbout.Hide '隐藏窗体frmAbout
Form1.Show '显示窗体Form1.
EndSub
3)单击"退出"菜单项
PrivateSubExit_Click()
End
EndSub
(7)运行程序
[程序演示] [程序下载]
2、MDI应用程序中的菜单设计
在MDI应用程序中,每一个子窗体的菜单都显示在MDI窗体上,而不是在子窗体本身。
当子窗体有焦点时,该子窗体的菜单就代替菜单上的MDI窗体的菜单。
如果没有可见的子窗体,或者如果带有焦点的子窗体没有菜单,则显示MDI窗体的菜单。
MDI应用程序经常使用几套菜单。
当打开一个文档时,应用程序显示与该类文档相关的菜单,通常,当没有可见子窗体时,会显示一个不同的菜单。
例如,当没有文件打开时,MicrosoftExcel只显示"文件"与"帮助"菜单。
当用户打开一个文件时,其他菜单就会显示出来。
(1)创建MDI应用程序的菜单
通过给MDI窗体和子窗体添加菜单控件,可以为VB应用程序创建菜单。
管理MDI应用程序中菜单的一个方法是把希望在任何时候都显示的菜单控件放在MDI窗体上。
当运行该应用程序时,如果没有可见的子窗体,会自动显示MDI窗体菜单。
把应用于子窗体的菜单控件放置到子窗体中。
在运行时,只要有一个子窗体可见,这些菜单标题就会显示在MDI窗体的菜单栏中。
有些应用程序支持多种类型的文档。
要在VB中创建这样的应用程序,应使用两个子窗体。
设计一个带有执行工作单任务菜单的子窗体和加一个带有完成图表任务菜单的子窗体。
在运行时,当工作单窗体的实例有焦点时,则显示工作单菜单,而当选取图表时则显示图表窗体的菜单。
如果所有的工作单和图表都关闭,则显示MDI窗体的菜单。
(2)创建"窗口"菜单
大多数MDI应用程序都结合了"窗口"菜单,另外,有些应用程序将操纵子窗体的命令。
在MDI窗体或者MDI子窗体上的任何菜单控件,只要将其WindowList属性设置为True,都可以用于显示打开子窗体的清单。
在运行时,VB自动管理与显示标题清单,并在当前正有焦点的标题旁边显示一个复选标志。
另外,在窗口清单的上方自动放置一个分隔符条。
设置WindowList属性的步骤如下:
◆选取希望菜单出现其上的窗体,从"工具"菜单中,选取"菜单编辑器"。
◆在菜单编辑器列表框中,选取希望打开的子窗体的清单显示在其上的菜单。
◆选取"WindowList"复选框。
注意:
WindowList属性只应用于MDI窗体和MDI子窗体。
它对标准窗体(非MDI窗体)不起作用,另外只能有一个菜单设置选中WindowList属性。
(3)窗口的排列功能
在MDI窗体中使用“Arrange”方法来重新对齐子窗体。
格式为:
MDI窗体.Arrange方式
其中“MDI窗体”是MDI窗体窗体的名字;“方式”是一个整数值或符号常量,其值为0、1、2、3。
VbCascade(或用0表示)——层叠窗体。
如:
frmMDI.ArrangevbCascade(或frmMDI.Arrange 0)
vbTileHorizontal(或用1表示)——水平平铺窗体。
如:
frmMDI.ArrangevbTileHorizontal
vbTileVertical(或用2表示)——垂直平铺窗体。
如:
frmMDI.ArrangevbTileVertical
VbArrangeIcons(或用3表示)——当子窗体被最小化为图标后,图标在父窗体的底部重新排列。
如:
frmMDI.ArrangevbArrangeIcons
例:
在上面的例子中添加如下代码:
PrivateSubMDIForm_Load()
Form1.Show
frmAbout.Show
MDIForm1.Arrange1 '也可以设置为其它的数,试一试。
EndSub
并且将frmAbout的属性Borderstyle设置为2,MaxButton、MixButton设置为True;MDIForm1的“文件”菜单的"WindowList"复选框选中;设置MDIForm1窗
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 应用程序 窗体 设计