![](/icons/95460yi.gif)
:前言
----众所周知
![](/icons/95460dou.gif)
VB中
![](/icons/95460de.gif)
MCIControl控件在设计多媒体CAI(Computer Assisted Instruction) 软件Software中有着非常重要
![](/icons/95460de.gif)
作用
![](/icons/95460dou.gif)
有关这方面
![](/icons/95460de.gif)
文章也很多;其实,VB中其它众多Control控件在设计CAI软件Software时也有不少应用
![](/icons/95460dou.gif)
本文就介绍几个在非多媒体CAI编程中有着特殊应用
![](/icons/95460de.gif)
Control控件
![](/icons/95460dou.gif)
相信对广大CAI编程者有所帮助
2:文本框
![](/icons/95460de.gif)
应用
---- 在CAI 编 程 中 经 常 要 面 临 这 样
![](/icons/95460de.gif)
问 题: 如 何 在 屏 幕 上 显 示 大 量
![](/icons/95460de.gif)
练 习 题 或 试 题 ? 学 生 如 何 在 屏 幕 上 输 进 多 项 选 择 题、 填 空 题 或 问 答 题
![](/icons/95460de.gif)
答 案 ? 利 用VB 中
![](/icons/95460de.gif)
文 本 框 就 能 很 容 易 地 解 决 这 个 问 题
![](/icons/95460dou2.gif)
文 本 框(TextBox) 是VB 中
![](/icons/95460de.gif)
最 基 本
![](/icons/95460de.gif)
字 符 串 输 入 和 输 出 对 象
![](/icons/95460dou.gif)
它 不 仅 可 以 供 用 户 输 入 数 据
![](/icons/95460dou.gif)
还 可 以 显 示 程 序 输 出
![](/icons/95460de.gif)
数 据 和 已 编 辑 好
![](/icons/95460de.gif)
文 本 文 件
![](/icons/95460dou2.gif)
这 样
![](/icons/95460dou.gif)
只 要 我 们 事 先 把 大 量
![](/icons/95460de.gif)
练 习 题 或 试 题 用 文 字 处 理 软 件 编 辑 成 文 本 文 件
![](/icons/95460dou.gif)
然 后 在VB 程 序
![](/icons/95460de.gif)
运 行 阶 段 用 文 本 框 显 示 文 本 文 件
![](/icons/95460de.gif)
内 容 即 可
下图是
![](/icons/95460yi.gif)
个用来辅导学生学习英语
![](/icons/95460de.gif)
![](/icons/95460chengxu.gif)
界面:
----图
![](/icons/95460yi.gif)
中有 2个文本框
![](/icons/95460dou.gif)
大文本框用来显示练习题
![](/icons/95460de.gif)
内容
![](/icons/95460dou.gif)
小文本框用来供学生输入答案,大小文本框
![](/icons/95460de.gif)
![](/icons/95460yi.gif)
些重要属性
![](/icons/95460de.gif)
设置情况如下:①:大文本框
![](/icons/95460de.gif)
MaxLength值设为缺省值0
![](/icons/95460dou.gif)
表示它能容纳
![](/icons/95460de.gif)
最多
![](/icons/95460zifu.gif)
数没有限制
![](/icons/95460dou.gif)
而小文本框
![](/icons/95460de.gif)
MaxLength值
![](/icons/95460de.gif)
设置可根据实际情况进行限制或不限制字数
![](/icons/95460dou.gif)
在这里是没有限制字数
![](/icons/95460dou2.gif)
②:大文本框
![](/icons/95460de.gif)
MultiLine值设为True
![](/icons/95460dou.gif)
这样
![](/icons/95460dou.gif)
大文本框就允许有多行文字输出显示
![](/icons/95460dou.gif)
小文本框
![](/icons/95460de.gif)
MultiLine值设为False
![](/icons/95460dou.gif)
表示小文本框就只允许有
![](/icons/95460yi.gif)
行文字输出显示
![](/icons/95460dou2.gif)
③:大文本框
![](/icons/95460de.gif)
ReadOnly值设为True
![](/icons/95460dou.gif)
表示不允许修改大文本框里
![](/icons/95460de.gif)
练习题
![](/icons/95460de.gif)
内容
![](/icons/95460dou.gif)
小文本框
![](/icons/95460de.gif)
ReadOnly值设为False
![](/icons/95460dou.gif)
表示可以修改小文本框里
![](/icons/95460de.gif)
内容
![](/icons/95460dou2.gif)
④:大文本框
![](/icons/95460de.gif)
Scrollbars值设为3
![](/icons/95460dou.gif)
表示大文本框有水平和垂直滚动条
![](/icons/95460dou.gif)
小文本框
![](/icons/95460de.gif)
Scrollbars值设为0
![](/icons/95460dou.gif)
表示小文本框没有滚动条
![](/icons/95460dou2.gif)
⑤:大小文本框
![](/icons/95460de.gif)
Text值设为空
![](/icons/95460de.gif)
![](/icons/95460dou.gif)
否则
![](/icons/95460dou.gif)
![](/icons/95460chengxu.gif)
运行时将在文本框里显示Text1
----由于小文本框里
![](/icons/95460de.gif)
![](/icons/95460zifu.gif)
数可以不限制
![](/icons/95460dou.gif)
因此
![](/icons/95460dou.gif)
图
![](/icons/95460yi.gif)
也适用于多项选择题
![](/icons/95460dou.gif)
填空题甚至简答题和问答题
3: 数 据 库
![](/icons/95460de.gif)
应 用
---- 数 据 库 在CAI 程 序 设 计 中 应 用 很 广
![](/icons/95460dou.gif)
数 据 库 可 用 来 存 放 题 目
![](/icons/95460de.gif)
编 号、 题 目
![](/icons/95460de.gif)
内 容 和 答 案 以 及 学 生 输 入
![](/icons/95460de.gif)
答 案 等 等
![](/icons/95460dou2.gif)
为 了 程 序 运 行 时 数 据 库 对 象 不 在 屏 幕 上 显 示 出 来
![](/icons/95460dou.gif)
要 求 把 数 据 库 对 象
![](/icons/95460de.gif)
Visible 属 性 设 为False
![](/icons/95460dou2.gif)
VB 可 以 访 问 多 种 数 据 库
![](/icons/95460dou.gif)
并 且 编 程 也 不 复 杂
![](/icons/95460dou2.gif)
为 了 加 快 数 据 库
![](/icons/95460de.gif)
访 问 速 度
![](/icons/95460dou.gif)
最 好 使 用Access 建 立
![](/icons/95460de.gif)
扩 展 名 为MDB
![](/icons/95460de.gif)
数 据 库
![](/icons/95460dou.gif)
如 果 是 用Foxbase 或Foxpro 建 立
![](/icons/95460de.gif)
扩 展 名 为DBF
![](/icons/95460de.gif)
数 据 库
![](/icons/95460dou.gif)
可 用 如 下 方 法 把 它 进 行 转 换: 先 用Foxpro For Windows 打 开DBF 形 式
![](/icons/95460de.gif)
数 据 库
![](/icons/95460dou.gif)
然 后 把 它 另 存 为 扩 展 名 为XLS
![](/icons/95460de.gif)
Excel 表 格 文 件
![](/icons/95460dou.gif)
再 利 用Access 就 可 以 把Excel 表 格 文 件 转 换 为MDB 形 式
![](/icons/95460de.gif)
数 据 库
![](/icons/95460dou2.gif)
在 图
![](/icons/95460yi.gif)
中
![](/icons/95460dou.gif)
每 个 题 目
![](/icons/95460de.gif)
编 号 和 答 案 就 存 放 在 数 据 库 中
![](/icons/95460dou.gif)
通 过 用 鼠 标 单 击\" 下
![](/icons/95460yi.gif)
题\" 和\" 上
![](/icons/95460yi.gif)
题\"
![](/icons/95460dou.gif)
可 以 把 数 据 库
![](/icons/95460de.gif)
指 针 指 向 任 何
![](/icons/95460yi.gif)
条 记 录
4:MsgBox 函 数 和 语 句
![](/icons/95460de.gif)
应 用
---- MsgBox 函 数 是VB 提 供
![](/icons/95460de.gif)
以 多 种 方 式 将 信 息 传 递 给 用 户
![](/icons/95460de.gif)
函 数
![](/icons/95460dou.gif)
它 有 函 数 和 语 句 两 种 形 式
![](/icons/95460dou.gif)
函 数 和 语 句
![](/icons/95460de.gif)
根 本 区 别 在 于 函 数 有 返 回 值 而 语 句 没 有
![](/icons/95460dou2.gif)
当MsgBox 将 信 息 传 递 给 用 户 时
![](/icons/95460dou.gif)
传 递 信 息
![](/icons/95460de.gif)
窗 口 是 嵌 在 运 行 程 序
![](/icons/95460de.gif)
窗 口 中; 因 此
![](/icons/95460dou.gif)
在CAI 程 序 设 计 中
![](/icons/95460dou.gif)
这 个 函 数 非 常 有 用
![](/icons/95460dou.gif)
如 果 能 把 它 和 数 据 库
![](/icons/95460de.gif)
应 用 结 合 起 来
![](/icons/95460dou.gif)
其 作 用 就 更 大
![](/icons/95460dou2.gif)
在 图
![](/icons/95460yi.gif)
中
![](/icons/95460dou.gif)
用 鼠 标 单 击\" 答 案\"
![](/icons/95460dou.gif)
电 脑 不 仅 告 诉 你 该 题 目
![](/icons/95460de.gif)
答 案
![](/icons/95460dou.gif)
还 告 诉 你 选 择 答 案
![](/icons/95460de.gif)
理 由
![](/icons/95460dou.gif)
见 图 2
---- 这 就 是 利 用 了MsgBox 语 句
![](/icons/95460de.gif)
结 果
![](/icons/95460dou2.gif)
在 程 序 设 计 阶 段
![](/icons/95460dou.gif)
设 计 出 几 个 标 签 或 文 本 框
![](/icons/95460dou.gif)
它 们 分 别 和 数 据 库 中
![](/icons/95460de.gif)
\" 答 案\" 和\" 答 案 说 明\" 字 段 相 关 联
![](/icons/95460dou.gif)
这 样
![](/icons/95460dou.gif)
当 图
![](/icons/95460yi.gif)
中
![](/icons/95460de.gif)
题 目
![](/icons/95460de.gif)
编 号 改 变 时
![](/icons/95460dou.gif)
\" 答 案\" 所 输 出
![](/icons/95460de.gif)
内 容 也 跟 随 变 化
![](/icons/95460dou2.gif)
由 于MsgBox 函 数 输 出
![](/icons/95460de.gif)
信 息 可 多 达1024 个 字 符
![](/icons/95460dou.gif)
所 以
![](/icons/95460yi.gif)
般
![](/icons/95460de.gif)
选 择 题
![](/icons/95460dou.gif)
填 空 题
![](/icons/95460dou.gif)
简 答 题
![](/icons/95460de.gif)
答 案 和 选 择 答 案
![](/icons/95460de.gif)
理 由 都 可 以 用 它 来 输 出
![](/icons/95460dou2.gif)
值 得
![](/icons/95460yi.gif)
提
![](/icons/95460de.gif)
是: 数 据 库
![](/icons/95460de.gif)
字 符 型 字 段 最 多 只 能 容 纳255 个 字 符
![](/icons/95460dou.gif)
因 此
![](/icons/95460dou.gif)
当 问 题
![](/icons/95460de.gif)
答 案 和 答 案 说 明 比 较 长 时
![](/icons/95460dou.gif)
就 要 把 它 们 分 成 几 个 字 段
5: 计 时 器
![](/icons/95460de.gif)
应 用
---- 在CAI 程 序 中
![](/icons/95460dou.gif)
经 常 要 记 录 学 生 练 习 或 考 试 所 用
![](/icons/95460de.gif)
时 间
![](/icons/95460dou.gif)
VB 中 就 是 使 用 计 时 器 来 完 成 这 个 任 务
![](/icons/95460de.gif)
![](/icons/95460dou2.gif)
图
![](/icons/95460yi.gif)
中 所 显 示
![](/icons/95460de.gif)
时 间 就 是 使 用 者 从
![](/icons/95460yi.gif)
开 始 做 练 习 到 目 前 所 用
![](/icons/95460de.gif)
时 间
![](/icons/95460dou2.gif)
计 时 器
![](/icons/95460de.gif)
另 外
![](/icons/95460yi.gif)
个 作 用 就 是 进 行 倒 计 时
![](/icons/95460dou.gif)
倒 计 时 程 序 在 设 计 限 时 练 习 和 限 时 考 试 程 序 就 要 用 到
![](/icons/95460dou.gif)
当 倒 计 时 为 零 时
![](/icons/95460dou.gif)
程 序 自 动 结 束 运 行
![](/icons/95460dou.gif)
限 时 练 习 或 考 试 也 随 的 结 束
---- 下 面 这 个 程 序 是 图
![](/icons/95460yi.gif)
所 对 应
![](/icons/95460de.gif)
源 程 序
![](/icons/95460de.gif)
主 要 部 分
![](/icons/95460dou.gif)
它 包 括 了 以 上 4 个 方 面
![](/icons/95460de.gif)
应 用
Dim h0 As Integer
\'ho,mo,so为
![](/icons/95460chushi.gif)
时间
Dim m0 As Integer
Dim s0 As Integer
Private Sub Command5_Click
\'用鼠标单击\"上
![](/icons/95460yi.gif)
题\"
If Val(Label1.Caption) > 1 Then
Data1.Record
![](/icons/95460set.gif)
.MovePrevious
Else
Title = \"提示\"
msg2$ = \"这是第
![](/icons/95460yi.gif)
题!\"
MsgBox msg2$, 0, Title
End If
End Sub
Private Sub Command7_Click
\'用鼠标单击\"下
![](/icons/95460yi.gif)
题\"
If Val(Label1.Caption) < 224 Then
\'
![](/icons/95460yi.gif)
共224道题
Data1.Record
![](/icons/95460set.gif)
.MoveNext
Else
Title = \"提示\"
msg2$ = \"这是最后
![](/icons/95460yi.gif)
题!\"
MsgBox msg2$, 0, Title
End If
End Sub
Private Sub Command8_Click
\'用鼠标单击\"确定\"
ch = UCase$(Trim$(Text2.Text))
ans = UCase$(Label4.Caption)
If StrComp(ch, ans, 1) = 0 Then
\'如果和题目
![](/icons/95460de.gif)
正确答案
![](/icons/95460yi.gif)
样
Title = \"提示\"
msg1$ = \"你做对了!\"
msg2$ = \"这是最后
![](/icons/95460yi.gif)
题,你做对了\"
If Val(Label1.Caption) < 224 Then
MsgBox msg1$, 0, Title
Else
MsgBox msg2$, 0, Title
Close
End If
Else
Title = \"提示\"
msg1$ = \"你做错了!\"
msg2$ = \"这是最后
![](/icons/95460yi.gif)
题,你做错了\"
If Val(Label1.Caption) < 224 Then
MsgBox msg1$, 0, Title
Else
MsgBox msg2$, 0, Title
Close
End If
End If
Text2.Text = \" \"
\'把第 2个文本框
![](/icons/95460de.gif)
内容变空
End Sub
Private Sub Command9_Click
\'用鼠标单击\"答案\"
an = Label4.Caption \'an为题目
![](/icons/95460de.gif)
正确答案
jx = Label6.Caption \'jx为题目
![](/icons/95460de.gif)
答案介绍说明
Title = \"答案提示\"
msg2$ = \"本题答案为:\" & an + jx
MsgBox msg2$, 0, Title
End Sub
Private Sub Form_Load
Open \"C:\\gram\\gram.txt\" For Binary As #1
\'gram.txt文件里存放了练习题
![](/icons/95460de.gif)
内容
filelength = LOF(1)
If filelength > 60000 Then
MsgBox \"File is too long\", 16
Exit Sub
End If
tmp$ = String$(LOF(1), 0)
Get #1, , tmp$
Text1.Text = tmp$
Close #1
h0 = Val(Time$)
m0 = Minute(Time$)
s0 = Second(Time$)
Text2.Text = \" \"
End Sub
Private Sub Text2_Change
Text2.Text = UCase$(Text2.Text)
\'把第 2个文本框里
![](/icons/95460de.gif)
内容变成大写
End Sub
Private Sub Timer1_Timer
Dim gg As Integer
Dim h As Integer
Dim m As Integer
Dim s As Integer
Dim x1 As Integer
Dim x2 As Integer
h = Val(Time$)
m = Minute(Time$)
s = Second(Time$)
gg = (h - h0) * 3600 + (m - m0)
* 60 + (s - s0)
x1 = Int(gg / 60)
x2 = (gg - (Int(gg / 60)) * 60)
Label7.Caption = Str(x1) + \" 分\"
+ Str(x2) + \" 秒\"
End Sub
6: 在 线 帮 助
![](/icons/95460de.gif)
应 用
---- 我 们 这 里 讲
![](/icons/95460de.gif)
在 线 帮 助 是 指 模 仿Windows
![](/icons/95460de.gif)
在 线 帮 助
![](/icons/95460dou.gif)
把 各 种 练 习 题 或 试 题 以 及 它 们
![](/icons/95460de.gif)
答 案 以 在 线 帮 助
![](/icons/95460de.gif)
形 式 在 屏 幕 上 呈 现 出 来( 见 图 3)
![](/icons/95460dou.gif)
并 非 是 指 在 程 序 中 加
![](/icons/95460yi.gif)
个 帮 助 菜 单 来 告 诉 学 生 如 何 使 用CAI 软 件
![](/icons/95460dou2.gif)
Windows
![](/icons/95460de.gif)
在 线 帮 助 本 身 就 是
![](/icons/95460yi.gif)
个 很 好
![](/icons/95460de.gif)
教 学 软 件
![](/icons/95460dou.gif)
如 果 在CAI 程 序 中 模 仿Windows
![](/icons/95460de.gif)
在 线 帮 助
![](/icons/95460dou.gif)
那 将 使 你
![](/icons/95460de.gif)
CAI 程 序 更 加 实 用
![](/icons/95460dou2.gif)
例 如: 各 种 选 择 题、 填 空 题 特 别 是 问 答 题 和 论 述 题
![](/icons/95460dou.gif)
要 让 学 生 能 快 速 查 阅 问 题
![](/icons/95460de.gif)
答 案
![](/icons/95460dou.gif)
使 用 在 线 帮 助 是 最 好 不 过
![](/icons/95460de.gif)
了
![](/icons/95460dou2.gif)
实 际 上
![](/icons/95460dou.gif)
在Internet 或HTML 没 有 兴 起 的 前
![](/icons/95460dou.gif)
国 外 很 多
![](/icons/95460de.gif)
CAI 软 件 中 就 有 模 仿Windows 在 线 帮 助
![](/icons/95460de.gif)
模 块
![](/icons/95460dou2.gif)
要 把 各 种 练 习 题 或 试 题 以 及 它 们
![](/icons/95460de.gif)
答 案 以 在 线 帮 助
![](/icons/95460de.gif)
形 式 在 屏 幕 上 呈 现 出 来
![](/icons/95460dou.gif)
就 要 把 它 们 制 作 成 帮 助 文 件
![](/icons/95460dou.gif)
为 此
![](/icons/95460dou.gif)
请 先 用WORD 把 练 习 题 或 试 题 以 及 它 们
![](/icons/95460de.gif)
答 案 编 辑 好
![](/icons/95460dou.gif)
为 了 让 使 用 者 更 加 方 便 操 作
![](/icons/95460dou.gif)
编 辑 时 可 以 在 每 个 小 题
![](/icons/95460de.gif)
后 面 加 上 这 几 个 字\" 单 击 此 处 可 查 阅 答 案\"( 或 简 单
![](/icons/95460yi.gif)
点 就 用\" 答 案\")
![](/icons/95460dou.gif)
制 作 帮 助 文 件 时
![](/icons/95460dou.gif)
就 把 这 几 个 字 作 为 关 键 词 分 别 和 每 个 题 目
![](/icons/95460de.gif)
答 案 建 立 关 联
![](/icons/95460dou.gif)
详 细 介 绍 如 何 制 作 帮 助 文 件
![](/icons/95460de.gif)
文 章 已 很 多
![](/icons/95460dou.gif)
在 此 就 不 介 绍 了
---- 在VB 中 调 用 帮 助 系 统
![](/icons/95460de.gif)
方 法 的
![](/icons/95460yi.gif)
是: 在 程 序 设 计 阶 段
![](/icons/95460dou.gif)
在 窗 口 中 设 计 出
![](/icons/95460yi.gif)
个 命 令 按 钮 和
![](/icons/95460yi.gif)
个 对 话 框
![](/icons/95460dou.gif)
然 后 加 进 如 下 代 码:
Attribute VB_Name = \"Module1\"
\'Declaration for WinHelp
Declare Function OSWinHelp% Lib \"User\"
Alias \"WinHelp\" (ByVal hwnd%, ByVal
HelpFile$, ByVal wCommand%, dwData As Any)
Private Sub SSCommand1_Click
Cls
With CommonDialog1
.HelpCommand = cdlHelpContents
.HelpFile = \"C:\\zggm\\ch23.hlp\"
\'ch23.hlp是我自己制作
![](/icons/95460de.gif)
![](/icons/95460yi.gif)
个帮助文件
.ShowHelp
End With
End Sub