2.03k likes | 2.12k Views
Visual Basic 程序设计. 第 3 章 应用程序接口设计 及代码编写. 3.1 简单的计算器应用程序设计任务 2.1.1 任务描述 仿照 Windows 操作系统自带的计算器程序,设计一个计算器,完成加、减、乘、除四则运算。运行界面如图所示。. 主要执行逻辑. 1. 输入第一个数字。当单击数字区的数字时,文本框中将显示相应的数字,并能进行正负数变换。 2. 输入四则运算符。当第一个数字输入完成后,可单击功能区的加、减、乘、除四则运算符。 3. 输入第二个数字。当单击了某个运算符后,再单击数字区的数字时,文本框中将显示第二个数字。. 主要执行逻辑.
E N D
Visual Basic程序设计 第3章 应用程序接口设计 及代码编写
3.1 简单的计算器应用程序设计任务 2.1.1 任务描述 仿照Windows操作系统自带的计算器程序,设计一个计算器,完成加、减、乘、除四则运算。运行界面如图所示。
主要执行逻辑 1. 输入第一个数字。当单击数字区的数字时,文本框中将显示相应的数字,并能进行正负数变换。 2.输入四则运算符。当第一个数字输入完成后,可单击功能区的加、减、乘、除四则运算符。 3.输入第二个数字。当单击了某个运算符后,再单击数字区的数字时,文本框中将显示第二个数字。
主要执行逻辑 4. 进行计算。上述三步完成后,单击“计算结果”按钮,将在文本框中显示四则运算的结果。 5.重复计算。可在第四步的基础上,返回到第2步继续进行四则运算,或者单击“清空”按钮并返回第1步,开始新的四则运算过程。 6.菜单操作。当单击“帮助”中的“关于”菜单项时,弹出“帮助”窗体。 7.退出系统。单击“退出”按钮结束程序。
3.1.3 界面设计 创建一个“标准EXE”工程。 1.设置窗体属性 Caption——”计算器“ MaxButton——False 2. 框架控件 Caption——分别为“数字区”和“功能区” 3. 放置命令按钮
4. 放置文本框按钮 txtResult——显示四则运算结果。 txtFirst——存储四则运算的第一个数字。 txtSecond——存储四则运算的第二个数字。 txtLabel——存储四则运算符。 txtFirst、txtSecond、txtLabel文本框的Visible属性设置为False。
5. 设计菜单 在VB集成环境中通过“工具—菜单编辑器”打开“菜单编辑器”。
3.1.4 代码设计 窗体的Load事件 Private Sub Form_Load() txtFirst.Text = "" txtSecond.Text = "" txtLabel.Text = "“ txtResult.Text="" End Sub
3.1.4 代码设计 (1)数字“0”按钮 Private Sub Command1_Click() '每单击一一下该按钮,就在文本框的尾部加字符“0” '如果txtLabel为空,则说明现在正在输入的是第一个数字 ‘否则表示输入的是第二个数字 If txtLabel.Text = "" Then txtFirst.Text = txtFirst.Text + "0" Else txtSecond.Text = txtSecond.Text + "0" End If End Sub
3.1.4 代码设计 (2)数字“1”按钮 Private Sub Command3_Click() If txtLabel.Text = "" Then txtFirst.Text = txtFirst.Text + "1" Else txtSecond.Text = txtSecond.Text + "1" End If End Sub
3.1.4 代码设计 (3)数字“2”按钮 Private Sub Command4_Click() If txtLabel.Text = "" Then txtFirst.Text = txtFirst.Text + "2" Else txtSecond.Text = txtSecond.Text + "2" End If End Sub
3.1.4 代码设计 (4)数字“3”按钮 Private Sub Command5_Click() If txtLabel.Text = "" Then txtFirst.Text = txtFirst.Text + "3" Else txtSecond.Text = txtSecond.Text + "3" End If End Sub
3.1.4 代码设计 (5)数字“4”按钮 Private Sub Command6_Click() If txtLabel.Text = "" Then txtFirst.Text = txtFirst.Text + "4" Else txtSecond.Text = txtSecond.Text + "4" End If End Sub
3.1.4 代码设计 (6)数字“5”按钮 Private Sub Command7_Click() If txtLabel.Text = "" Then txtFirst.Text = txtFirst.Text + "5" Else txtSecond.Text = txtSecond.Text + "5" End If End Sub
3.1.4 代码设计 (7)数字“6”按钮 Private Sub Command8_Click() If txtLabel.Text = "" Then txtFirst.Text = txtFirst.Text + "6" Else txtSecond.Text = txtSecond.Text + "6" End If End Sub
3.1.4 代码设计 (8)数字“7”按钮 Private Sub Command9_Click() If txtLabel.Text = "" Then txtFirst.Text = txtFirst.Text + "7" Else txtSecond.Text = txtSecond.Text + "7" End If End Sub
3.1.4 代码设计 (9)数字“8”按钮 Private Sub Command10_Click() If txtLabel.Text = "" Then txtFirst.Text = txtFirst.Text + "8" Else txtSecond.Text = txtSecond.Text + "8" End If End Sub
3.1.4 代码设计 (10)数字“9”按钮 Private Sub Command11_Click() If txtLabel.Text = "" Then txtFirst.Text = txtFirst.Text + "9" Else txtSecond.Text = txtSecond.Text + "9" End If End Sub
3.1.4 代码设计 3. txtFirst文本框的Change事件 'txtFirst文本框的Change事件 Private Sub txtFirst_Change() '每当txtFirst的内容发生变化时,将变化结果随时映射到txtResult txtResult.Text = txtFirst.Text End Sub
3.1.4 代码设计 txtSecond文本框的Change事件 Private Sub txtSecond_Change() '每当txtSecond的内容发生变化时,将变化结果随时映射到txtResult txtResult.Text = txtSecond.Text End Sub
3.1.4 代码设计 4. 正符号(±)命令按钮的Click事件 Private Sub Command2_Click() '如果txtLabel为空,则说明现在正在输入的是第一个数字 '否则表示当前正这输入的是第二个数字 '转换语句的主要含义是:首先用Val函数将txtFirst.Text转换为数字 '然后再乘以-1 If txtLabel.Text = "" Then txtFirst.Text = -1 * Val(txtFirst.Text) Else txtSecond.Text = -1 * Val(txtSecond.Text) End If End Sub
3.1.4 代码设计 5. “+”、”-”、”×”、”÷”命令按钮的Click事件 '“+”命令按钮的Click事件 Private Sub Command15_Click() txtLabel.Text = "+" End Sub '“-”命令按钮的Click事件 Private Sub Command16_Click() txtLabel.Text = "-" End Sub
3.1.4 代码设计 5. “+”、”-”、”×”、”÷”命令按钮的Click事件 '“×”命令按钮的Click事件 Private Sub Command12_Click() txtLabel.Text = "×" End Sub '“÷”命令按钮的Click事件 Private Sub Command13_Click() txtLabel.Text = "÷" End Sub
6. “计算结果”(即“=”号)命令按钮的Click事件 Private Sub Command17_Click() '定义一个Double类型的变量 Dim MyResult As Double '以txtLable.Text的值为多重分支条件 Select Case txtLabel.Text Case "+" '当txtLabel.Text的值为"+"时 MyResult = Val(txtFirst.Text) + Val(txtSecond.Text) Case "-" '当txtLabel.Text的值为"-"时 MyResult = Val(txtFirst.Text) - Val(txtSecond.Text) Case "×" '当txtLabel.Text的值为"×"时 MyResult = Val(txtFirst.Text) * Val(txtSecond.Text) Case "÷" '当txtLabel.Text的值为"÷"时 MyResult = Val(txtFirst.Text) / Val(txtSecond.Text) End Select txtResult.Text = MyResult '显示计算结果 End Sub
3.1.4 代码设计 7. ”清空“命令按钮的Click事件 '如果四则运算完成,希望进行另一表达式的四则运算 '则单击此按钮 Private Sub Command14_Click() txtFirst.Text = "" txtLabel.Text = "" txtSecond.Text = "" txtResult.Text = "" End Sub
3.1.4 代码设计 8. ”帮助“菜单的调用 '事先通过VB集成开发环境”工程-添加窗体“菜单 '使用”关于“对话框模板创建一个关于窗体(名为frmAbout) '然后完成计算机应用程序的”帮助-关于”子菜单的Click事件代码 Private Sub About_Click() frmAbout.Show 1 End Sub 9. 退出命令按钮的Click事件 Private Sub Command18_Click() End End Sub
3.1.5 计算机应用程序分析 上述计算器应用程序的特点: (1)在界面设计方面,用到的控件种类、数量多,窗体的设计精细了许多,应用程序有两个窗体。 (2)控件间的联系比较密切,比如数字区按钮的Click事件,会影响txtFirst和txtSecond文本框的Text属性值,而txtFirst控件的属性会进一步影响txtResult。 (3)程序代码的结果开始有点复杂,比如用到了IF……THEN之类的条件判断结构。
3.2 可视化界面设计基础 3.2.1 可视化界面设计概述 VB可视化程序设计包括两部分内容: • 用户界面设计 • 编写程序代码 界面是应用程序最重要的组成部分。一个好的应用程序应具有友好的用户接口界面。而窗体是应用程序的对外接口,是其它控件的载体和容器。
VB应用程序的窗体有三种: • 单窗体:一个应用程序只包含一个窗体。 • 多窗体:一个应用程序包含多个窗体。 • MDI窗体:是一种特殊的多窗体界面。有一个父窗体和众多的子窗体构成。
设计美观的窗体界面的一些基本原则: • 窗体的颜色不要过多,否则不易读。 • 如果要设计多彩色的窗体界面,那么应当尽量同一色系的颜色,比如蓝、淡蓝等。 • 不要试图在一个窗体上放置过多的信息。 • 尽可能以清晰简明的方式设计窗体。 • 使用适当的颜色、图片来增加窗体的趣味是必要的,但要适度。 • 界面元素应尽可能一致,只选择最适合特定应用程序的控件。
习题 P94 二、 2. 是应用程序的对外窗口,是其它控件和载体的容器。 答案:窗体
3.2.2 多窗体设计 当应用程序的功能比较复杂时,就需要添加多个窗体来实现程序功能。这就是多窗体设计。 1. 添加窗体 一般通过“工程-添加窗体”菜单完成。
2. 设置启动窗体 每个应用程序都有开始执行的入口。应用程序开始运行时首先出现的窗体称为启动窗体。在默认的情况下,创建的第一个窗体为启动窗体。如果想在应用程序启动时首先启动别的窗体,那么就得修改启动窗体的设置了。
让程序首先执行一个子过程,通过该子过程加载显示窗体。让程序首先执行一个子过程,通过该子过程加载显示窗体。 Main子过程是标准模块中的一个子过程。可以通过“工程-添加模块”菜单创建一个标准模块,然后在其中输入代码。
习题 P94 二、 3. 每个应用程序都有开始执行的入口,在VB中这种窗体称为。 答案:启动窗体
3. 窗体的装载与卸载 (1)Load语句 Load语句用于把窗体或其它对象装入内存。 当执行装载窗体命令时,应用程序首先把窗体属性设置为初始值,然后再触发Load事件。一旦窗体装载,不管它是否可见,它的属性及控件就可以被程序调用。 当使用窗体的Show方法时,VB程序会自动装载窗体,然后才显示该窗体,此时隐含使用了Load语句。
习题 P93 一、 1. 与Load.Form2等效的语句是( ) A. Form2.Load B. Form2.Visible=False C. Form2.Show D. Form2.Visible=True 答案:C
3. 窗体的装载与卸载 (2)UnLoad语句 该语句可以把窗体或其它对象从内存中卸载,在单窗体和多窗体应用程序中均会使用这条语句,并且在卸载窗体时将会触发UnLoad事件。 对单窗体应用程序而言,以下语句是等效的: UnLoad Form1 等效于 End 如果是在Form1上执行UnLoad语句,则可以直接写成: UnLoad Me
习题 P94 二、 4. 如果要将窗体对象从内存中卸载,可使用 语句。 答案:Unload
4. 多窗体应用程序设计的一般步骤 (1)添加应用程序所需要的窗体、模块。 (2)设置起始窗体,以及多窗体间的调用关系。 (3)按单窗体设计方法设计每个窗体。
3.2.3 MDI多文档窗体的设计 多文档窗体(MDI)是可以同时进行多文档操作的界面。它运行同时运行多个文档 ,每个文档显示在自己的窗口中,用户可以随意在各个文档间进行切换。目前大多数软件都采用这种界面,比如Microsoft Word。 MDI界面由一个父窗体和多个子窗体组成。子窗体的活动范围只能限制在父窗体内。父窗体为应用程序中的所有子窗体提供操作空间,并负责管理各个子窗体的操作,是所有子窗体的容器。
1. MDI 父窗体 一个VB工程中只能有一个MDI父窗体,创建的方法是: (1)打开或新建一个工程,单击“工程”菜单中的“添加MDI窗体”命令。 (2)在弹出的“添加MDI窗体”对话框中双击“添加MDI窗体”图标。 (3)这时就会出现一个默认名称为MDIForm1的新窗体。
2. MDI子窗体 父窗体创建完成以后,我们可以通过“工程”菜单添加若干标准窗体,然后将这些窗体的MDIChild属性设置为True,该窗体就成为工程中的子窗体了。 子窗体和一般窗体看起来没有什么两样,但运行时子窗体被包含在父窗体中。无论如何拖动子窗体,也无法使它们摆脱父窗体的束缚,即MDI父窗体是所有子窗体的容器。
习题 P93 一、 2. 可通过设置一普通窗体的何种属性,将它变换为MDI子窗体?( ) A. MDIChile=True B. WindowsState=Normal C. MDIChile=False D. WindowsState=Maximizel 答案:A
3. MDI子窗体的显示方法 ——静态显示方法和动态显示方法 (1)静态显示方法 静态显示方法是通过在设计应用程序时添加多个窗体来完成的。假设程序中允许用户在父窗体上同时打开三个窗体,那么设计时只要添加三个子窗体,在MDI父窗体中通过Show命令显示即可。