第六步:编写登录按钮的单击事件代码—— Private Sub Command1_Click()
If Text1= \ And Text2 = \ Then
Load Forme2 ?将主窗体装入内存 Form2.Show ?显示主窗体 Form1.Hide ?隐藏登录界面 Unload Form1 ?卸载登录界面 Else
Print \忘记密码?\End If End Sub
关于用if…end if结构做多分支控制的用法,介绍如下: If 假设情况一 Then
假设情况一成立时执行的语句块一
[ElseIF 假设情况二 Then
假设情况二成立时执行的语句块二]
[ElseIf 假设情况三 Then
假设情况三成立时执行的语句块三]
······ [Else
所有条件都不成立时要执行的语句块]
End If
即:如果“情况一”成立,则执行“语句块一”;否则如果“情况二”成立,则执行“语句块二”······;如果所有情况都不成立,则执行 Else 之后的语句块并最后跳出判断过程。
再举一例:假设输入学生成绩(Score),如果分数小于 60 ,标签(LblShow)显示“成绩不及格”;如果分数大于 90 ,标签显示“成绩优秀”;如果分数介于两者之间,标签显示“成绩优良”。代码如下——
36
If Score < 60 Then
LblShow.Caption = \成绩不及格\
ElseIf Score > =90 Then ?ElseIf中间不空格
LblShow.Caption = \成绩优秀\
Else
LblShow.Caption = \成绩优良\
End If
但是多分支一般还是用Select case…End case结构来控制。如处理上面的问题用这样的代码:
Rem 先把0-29分变成0,30-59分变成1,60-89分变成2,90分以上变成3.
Dj=Fix(score/30)
Select case Dj ?Dj为测试变量 Case 3 ?3为测试变量的值 Print “成绩优秀” Case 2
Print “成绩良好” Case else
Print “成绩不及格” End select
先对分数作了一个处理,代码变得很简洁。不作处理也是可以的,只是代码不会这么简洁。有兴趣可以去看其它书籍。
37
设计18 也做个记事本
控件工具箱中没有“编辑框”控件,VB是把它和文本框合成了一个控件,因为编辑框就是多行的文本框,设置文本框的多行属性值为真就行。
MultiLine=True,同时加大文本框高度,ScrollBars(滚动条类型) 我们现在来利用文本框的多行属性和VB调用Windows系统资源的本领制作一个相当于记事本功能的简单文本编辑器。
1、用户要求:可以在编辑窗口输入文本;对输入的文本可以进行复制、粘贴、清除操作;还能在两个标签上分别显示选中文本的起始位置、选中文本的长度。
2、界面分析:根据要求,我们需要制作一个文本框控件(TxtNr)作为内容输入窗口;另外还有四个按钮,分别是复制按钮(CmdCopy)、粘贴按钮(CmdPaste)、清除按钮(CmdClear)、退出程序按钮(CmdQuit);还需要两个用来显示所选文本起始位置的标签一(LblStart)和显示所选文本长度的标签二(LblLength)。
图21 我的记事本
38
3、属性设置:文本框控件的 Multiline(多行)属性要设置为 True ,用垂直滚动条不用水平滚动条,这样文本框才能自动换行。
4、程序书写:
A、文本框(TxtNr)的鼠标事件
对文本的选择,可以理解为这样的过程:先在欲选择的文本前点击鼠标,按下左键不放,拖动鼠标直到选择文本的结束处,最后松开鼠标。这说明,松开鼠标代表着文本选择的结束,从而应该在文本框的鼠标弹起事件(MouseUp)中书写代码,以改变两个标签的标题。 具体代码如下:
Private Sub TxtNr_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Rem 括号中这一长串内容大家不必管它,这主要是产生位移时的坐标变动。 LblStart.Caption = \起始位置:\ ?&是字符串连接运算符。 LblLength.Caption = \文本长度:\End Sub
B、复制按钮的点击事件: Private Sub CmdCopy_Click()
Clipboard.SetText TxtNr.SelText ‘调用Windows剪贴板的SetText方法 End Sub
C、粘贴按钮的点击事件: Private Sub CmdPaste_Click() TxtNr.SelText = Clipboard.GetText End Sub
D、清空按钮的点击事件: Private Sub CmdClear_Click() TxtNr.Text = \End Sub
5、退出程序按钮的点击事件: Private Sub CmdQuit_Click() End '程序结束,退出程序。 End Sub
39
?第九单元
设计19 动态改变颜色
图22 彩光四射
程序运行时,每隔1/10秒画一条从原点出发的直线段,线段的终点和颜色是随机的。单击窗体停止且清屏,双击窗体又开始画线。设计要点如下:
1、这里涉及到时间问题,可以在窗体中放一个计时器对象,Interval=100毫秒,其Timer事件就是画一条线:line (0,0)-(x,y), Qbcolor(ys)
2、线的终点坐标(x,y)和颜色ys都应该是变量。这三个变量可以在通用(对象)中声明(过程):Dim x, y As Single, ys As Integer
3、我们自定义窗体的坐标系:把坐标原点放在中央,坐标轴显示出来的刻度在(-50,50)间。这样屏幕左上角的坐标为(-50,50),右下角的坐标为(50,-50).
Scale (-50, 50)-(50, -50)
这个工作在窗体的Load事件中完成。
4、画线前随机生成(-50,50)间的x和y,以及0到15的整数ys作为颜色号:
x = Rnd * 100 - 50
40