第六章 输入(一)
我们为什么要设计计算机程序呢,当然是为了计算机能为我们完成工作,但是要完成不同的任务,我们就必须对计算机下达命令,然后计算机在把信息返馈回来――任务是否完成。以上就是所谓的人机对话或交互功能,尤其是在Windows操作里我们需要进行更多的输入工作,我们需要填写各种各样的表格,设置程序的重要参数,把数据输入给计算机,再又它完成既定的工作就是今天我们本章要重点讨论的问题――在VB中如何建立完整的输入机制。
在VB中提供了一个函数InputBox能帮助我们建立一个最简单的输入窗体,语法如下:
InputBox(prompt[,title][,default][,xpos][,ypos][,helpfile,context])
该函数返回一个字符串表达式,其参数含义为:(“[]”表示可缺省)
prompt――字符串表达式,最大长度为1024字符,窗体上的提示部分。
Title――字符串表达式,显示标题栏里的文本。
Default――字符串表达式,窗体中文本框的缺省值。
xpos,ypos――数值表达式,以Twips为单位指定窗体出现在屏幕上的位置。
helpfile――字符串表达式,是帮助文件的完整路径。
Context――数值表达式,指定适合的帮助主题。
可能你看了上面的说明并不明白,那么下面我们就用Input语句完成一个最简单的程序。
小知识:屏幕坐标
在计算机的屏幕上也有一个类似于我们在中学里常用到的直角坐标系,之不过它的原点不在左下,而是在屏幕的右上角,屏幕的最右上方坐标为(0,0),它的横坐标和我们的习惯是一致的,而纵坐标则是越向下越大,不仅是屏幕,所有的对象里都是一样,需要记清。见图6-1
新建一个项目(project),在Form_load里填写一行代码:
a$ = InputBox("举荐你最欣赏的网站", "最佳网站投票", "VB小驿")’
按下F5运行程序,在Form1出现之前先会弹出一个输入对话框,如图6-2。这时,无论你按下OK还是Cancel都是没有区别的,因为我们并没有对输入数据进行处理,下面我们完成一个更加复杂些的程序。
新建一个项目文件,把窗口布局成类似于图6-3的结构,各对象属性如下表:
Form1 |
Caption “最佳网站投票演示”
BorderStyle 3’不可调整大小
ControlBox 0’False |
Frame1 |
Caption “输入框属性“ |
Label1 |
Autosize 1’True
Index 0至5
0至5 Caption “提示语句”
“标题”
“缺省网站”
“X坐标”
“Y坐标”
“”
Index 4 Enabled False
Index 4 Enabled False |
Text1 |
Text “”’(空字符串)
Index 0至4
Index 3 Text 0
Index 4 Text 0 |
Check1 |
Caption “指定输入框位置” |
Button1 |
Index 0,1
Index 0 Caption “显示输入框”
1 Caption “退出程序” |
本例中出现了一个Frame1控件,它是一种框架,可以用来把窗体分成好几个部分,首先应该在窗体上画出Frame1控件,然后再选择相应的控件,在Frame1上描出轮廓,使其是出现在Frame1之上,本例中除去两个按钮,其余都在Frame1上面。本例中用到了几组控件数组,其创建方法是,在选定的点右键,选择Copy,再在窗体其他部位单击右键,选择Paste即可,注意,若要使粘贴的对象在Frame1上,请在Frame1上单击右键选择Paste。
我们通过这个窗体,对输入框进行完整的控制,原理是这样的:当我们把窗体中要填写的对输入框的参数完成后按下OK按钮,就会出现我们设计的那个输入框,我们从输入框退出时则返回我们投票的结果,代码如下.
窗体初次被装入时,Label1(3)、Label(4)和Text1(3)、Text1(4)的Enabled属性都是False,我们需要通过改变Check1的Value(1,被选中,0,未选中)是他们有效或无效。
声明全局变量(General):
Dim PosChk As Boolean 检查X、Y坐标是否有效
Check1_Click 事件:
Private Sub Check1_Click()
If Check1.Value = 1 Then
Label1(3).Enabled = True
Label1(4).Enabled = True
Text1(3).Enabled = True
Text1(4).Enabled = True
PosChk = True
Else
Label1(3).Enabled = False
Label1(4).Enabled = False
Text1(3).Enabled = False
Text1(4).Enabled = False
PosChk = False
End If
End Sub |