




免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VB编程经验点滴 - 1. 在 打 开 对 话 框 中 同 时 显 示 多 种 类 型 的 文 件- 在 打 开 文 件 时, 我 们 往 往 会 用 到 打 开 对 话 框CommonDialog, 要 把 文 件 类 型 限 制 在 一 定 的 范 围 内 得 用CommonDialog 的Filter 属 性, 比 如 将Filter 属 性 设 置 为*.TXT|*.TXT 那 么 打 开 对 话 框 只 显 示 文 本 文 件。 如 果 要 同 时 显 示 几 种 类 型 的 文 件, 比 如 要 显 示 所 有 的 图 形 文 件, 其 设 置 方 法 为 将Filter 属 性 设 置 为 图 片 文 件|*.bmp;*.jpg;*.gif, 这 样 打 开 对 话 框 便 能 同 时 显 示bmp 文 件,jpg 文 件,gif 文 件。 这 个 问 题 似 乎 很 简 单, 可 笔 者 曾 经 为 这 个 问 题 查 阅 了 大 量 关 于VB 的 书 籍, 但 是 都 未 找 到。- 2. 注 意 最 后 编 译 的 问 题- 如 果 编 程 中 用 到 数 据 库 控 件, 在 最 后 编 译 时, 一 定 要 注 意 数 据 库 控 件 的Datebase 属 性, 否 则 会 在 制 作 安 装 盘, 装 到 其 它 机 子 上 时 遇 到 问 题。 原 因 是Datebase 属 性 中 存 在 的 路 径 问 题。 编 译 前 得 将 其 路 径 设 置 为 当 前 路 径。 如 果 用 的 是ACCESS 数 据 库, 将Datebase 属 性 中 的 路 径 信 息 去 掉 便 可 以 了, 比 如, 原 先 为C:moneymoney.mdb, 则 改 为money.mdb。 如 果 是FOXPRO 数 据, 将Datebase 属 性 改 为. 便 可 以 了,. 就 代 表 当 前 目 录。 比 如, 原 先 为C:money, 改 为. 便 可 以 了。 用 其 它 数 据 库 的 数 据 的 方 法 差 不 多。 当 然 制 作 安 装 盘 时 得 把 用 到 的 数 据 文 件 添 加 进 去, 这 里 不 在 详 叙。- 3. 在 程 序 中 调 用 其 它 程 序- 在DOS 下 大 家 知 道 可 以 用system() 函 数 来 调 用 其 它 的 可 执 行 文 件, 那 么 在WINDOWS 下 怎 么 去 调 用 其 它 的 软 件 呢? 其 实 在WINDOWS 的API 中 就 有 这 样 的 函 数。 函 数 说 明 如 下:UINT WinExec(LPCSTR lpszCmdLine, / 命令行地址UINT fuCmdShow /刚打开时的窗口类型);- 在 使 用 时 要 加 如 下 声 明:Private Declare Function WinExec Lib kernel32(ByVal lpCmdLine As String,ByVal nCmdShow As Long) As Long- 如 果 想 在 程 序 中 调 用Windows 中 自 带 的 计 算 器, 用 下 面 的 代 码 即 可 实 现:WinExec c:/windows/calc.exe, 10- 参 数10 使 启 动 的 窗 口 处 于 缺 省 状 态, 若 使 用3 使 启 动 的 窗 口 最 大 化, 若 使 用6 使 启 动 的 窗 口 最 小 化。 实 际 上 许 多 商 用 软 件 的 计 算 器 都 是 这 样 直 接 调 用Windows 自 带 的 计 算 器 的。- 4. 输 入 数 据 的 合 法 性 检 测- 一 个 软 件 经 常 需 要 用 户 输 入 一 些 数 据, 而 这 些 数 据 往 往 需 要 一 定 格 式, 比 如 输 入 的 是 一 个 整 形, 或 是 一 个 日 期 等, 这 样 作 为 软 件 的 设 计 者 必 须 想 到 用 户 出 错 的 可 能 性, 在 用 户 出 错 时 给 予 提 示 和 纠 正。 只 有 这 样 你 的 程 序 才 是 一 个 好 程 序。 在VB 编 程 中 数 据 的 合 法 性 检 测 有 很 多 的 方 法, 比 如 你 可 以 利 用 一 些 函 数 来 检 测 数 据 的 合 法 性,IsDate 就 可 以 用 于 检 测 日 期 型 的 数 据。 笔 者 发 现 只 要 巧 妙 地 应 用VB 中 的 错 误 陷 阱 技 术 和VB 的 不 同 类 型 数 据 间 的 自 动 转 换 功 能 就 能 很 好 地 实 现 数 据 的 合 法 性 检 测, 编 程 简 单 而 且 效 果 很 好, 能 检 测 各 种 类 型 的 数 据。- 通 常 输 入 的 如 果 是 字 符 串 就 不 需 要 检 测, 但 如 果 要 求 输 入 的 是 整 形 或 货 币 形 等 就 必 须 进 行 一 定 的 检 测。 下 面 就 先 讲 一 下 整 形 的 检 测。 比 如 现 有 一 文 本 框(Text1), 要 求 输 入 的 是 一 个 整 数, 我 们 可 以 在 它 的LostFocus 事 件 中 进 行 检 测, 代 码 如 下:Private Sub Text1_LostFocus()Dim i As Integer 定义一个整形iOn Error GoTo ERROR1设置错误陷阱,如果Text1.Text不是整数跳到ERROR1i = Text1.Text这里可以做其它处理Exit SubERROR1:MsgBox (请输入一个整数)Text1.SetFocusEnd Sub- 这 样 就 可 以 实 现 合 法 性 检 测 了, 如 果 要 的 是 浮 点 就 将i 定 义 成 浮 点 就 可 以 了, 即:Private Sub Text1_LostFocus()Dim i As SingleOn Error GoTo ERROR1i = Text1.TextExit SubERROR1:MsgBox (请输入一个单精度浮点数)Text1.SetFocusEnd Sub- 同 理, 如 果 要 的 是 日 期 就 将i 定 义 成 日 期 就 可 以 了, 就 是 说, 要 什 么 样 的 数 据 就 将i 定 义 成 什 么 样 的 数 据 类 型 就 可 以 了。- 当 然 你 不 一 定 要 在LostFocus 事 件 中 对 数 据 的 合 法 性 进 行 检 测, 如 果 是 制 作 数 据 库 应 用 程 序 完 全 可 以 在 数 据 被 添 加 到 数 据 库 之 前 再 对 数 据 进 行 检 测, 这 样 对 用 户 将 更 加 方 便。- 5. 窗 体 以 外 光 标 位 置 的 探 测 和 设 置- 用VB 编 程 时 想 获 得 窗 体 上 的 光 标 位 置 很 容 易, 用MouseMove 事 件 的 参 数 就 可 得 到 光 标 在 窗 体 上 的 位 置。 然 而, 如 果 想 得 到 窗 体 以 外 的 光 标 位 置 或 想 在 程 序 中 设 置 光 标 位 置, 那 么 则 只 好 求 助 于API 了, 还 好, 这 几 个API 函 数 非 常 简 单, 即 使 刚 接 触 编 程 的 朋 友 也 能 学 会 使 用。 这 里 笔 者 做 一 个 简 单 的 介 绍, 希 望 和 大 家 共 享 使 用API 的 乐 趣。- 先 介 绍 一 下 有 关 的API 的 结 构 和 函 数, 首 先 看 一 下 获 得 光 标 位 置 的 这 个 函 数, 其 声 明 如 下:BOOL GetCursorPos(LPPOINT lpPoint/指向POINT结构的指针,其中包含所获的光标的位置信息); 再来看一下POINT的结构:typedef struct tagPOINT / ptLONG x;LONG y; POINT;真是非常简单,最后看一下设置光标位置的函数:BOOL SetCursorPos(int X, /要设置位置在屏幕上的横坐标int Y /要设置位置在屏幕上的纵坐标);- 在VB 中 使 用API 就 需 要 一 定 的 说 明 了, 还 好VB 提 供 了 一 个API 文 本 查 看 器, 你 只 要 将 所 要 用 的API 的 声 明 复 制 一 下 就 可 以 用 了。 我 们 来 做 一 个 简 单 的 例 子 来 试 一 试。 先 建 立 一 个 项 目, 往 窗 体(Form1) 上 放 置 两 个TextBox 控 件(Text1 和Text2), 一 个CommandButton 控 件(Command1) 和 一 个Timer 控 件(Timer1)。 将Timer1 的Interval 属 性 改 为1000。 这 个 例 子 的 功 能 是 每 隔 一 秒 钟 在Text1 和Text2 中 显 示 光 标 的 位 置 坐 标, 按Command1 按 钮 光 标 将 按 一 定 的 规 律 在 屏 幕 上 漂 移。 所 有 的 代 码 如 下:Private Type POINTAPIx As Longy As LongEnd TypePrivate Declare Function GetCursorPosLib user32 (lpPoint As POINTAPI) As LongPrivate Declare Function SetCursorPosLib user32 (ByVal x As Long, ByVal y As Long) As Long以上为API及数据结构的声明Private Sub Command1_Click()Dim i As IntegerDim j As IntegerFor i = 0 To Screen.WidthSetCursorPos i, 100 设置光标位置For j = 0 To 1000 循环延时Next jNext iEnd SubPrivate Sub Timer1_Timer()Dim point1 As POINTAPIGetCursorPos point1 获得光标位置Text1.Text = point1.x 显示光标位置XText2.Text = point1.y 显示光标位置YEnd Sub- 输 入 完 毕 后 存 盘 运 行 就 行 了, 可 以 发 现 在VB 中 是 很 容 易 实 现 的。- 6.Windows 各 种 路 径 的 获 得- 在WINDOWS 下 编 程 经 常 需 要 在 程 序 中 获 得 各 种 路 径, 比 如 当 前 的 工 作 路 径, 系 统 的 路 径, 等 各 种 路 径。 在WINDOWS 的API 中 提 供 了 齐 全 的API 函 数 供 我 们 调 用。- 先 来 看 一 下 这 几 个API 函 数 的 说 明:- (1). DWORD GetCurrentDirectory(DWORD nBufferLength, /接收目录的字符串的长度LPTSTR lpBuffer /接收目录的字符串的地址);- 通 过 调 用 这 个 函 数 将 获 得 当 前 的 目 录, 如 果 调 用 失 败 此 函 数 将 返 回 零。 调 用 这 个 函 数 时 应 将nBufferLength 参 数 设 足 够 大, 接 收 目 录 的 字 符 串 当 然 也 要 有 这 么 长。 详 细 用 法 请 看 例 子。 另 外 用SetCurrentDirectory() 函 数 可 以 设 置 当 前 目 录。- (2). UINT GetSystemDirectory(LPTSTR lpBuffer, /接收目录的字符串的地址UINT uSize / 接收目录的字符串的长度);- 通 过 调 用 这 个 函 数 可 获 得 系 统 的 目 录, 如 果 调 用 失 败 此 函 数 将 返 回 零。- 3. UINT GetWindowsDirectory(LPTSTR lpBuffer, /接收目录的字符串的地址UINT uSize / 接收目录的字符串的长度);- 通 过 调 用 这 个 函 数 可 获 得WINDOWS 目 录, 如 果 调 用 失 败 将 返 回 零。 关 于 这 个 函 数 和 第 二 个 函 数 的 区 别, 通 过 下 面 的 例 子 你 一 定 会 非 常 清 楚。- 下 面 用VB 来 实 现。 首 先 当 然 要 先 把API 的 声 明 加 到 代 码 中, 开 始 一 个 新 项 目, 在 窗 体(Form1) 上 放 上 三 个 按 钮(Command1,Command2,Command3)。 这 个 例 子 的 功 能 是 单 击 按 钮 用MSGBOX 显 示 得 到 的 路 径。- 笔 者 发 现 不 能 简 单 地 复 制VB5 的API 文 本 查 看 器 中 关 于 上 面 几 个API 的 声 明, 要 做 一 定 的 修 改, 要 在 每 个 函 数 名 后 加 一 个A, 所 有 代 码 如 下。Private Declare Function GetCurrentDirectoryALib kernel32 (ByVal nBufferLength As Long,ByVal lpBuffer As String) As LongPrivate Declare Function GetWindowsDirectoryALib kernel32 (ByVal lpBuffer As String,ByVal nSize As Long) As LongPrivate Declare Function GetSystemDirectoryALib kernel32 (ByVal lpBuffer As String,ByVal nSize As Long) As LongPrivate Sub Command1_Click()Dim Path As String * 255GetCurrentDirectoryA(Len(Path), Path) 获取当前路径MsgBox (Path)E
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 临聘导游合同范本
- 磷脂销售合同范本
- 婚庆公司承揽合同范本
- 模具研发协议合同范本
- 闲置家居售卖合同范本
- 新车购买合同范本赠品
- 社区工作基础知识培训课件
- 翻砂成品采购合同范本
- 微信销售合同范本
- 外贸口罩销售合同范本
- 民主集中制授课课件
- 跨学科主题学习的设计
- 完整版:美制螺纹尺寸对照表(牙数、牙高、螺距、小径、中径外径、钻孔)
- 地面电性源瞬变电磁法地球物理勘查技术规程DB41-T 2106-2021
- 2024年五年级数学上册 二 多边形的面积《不规则图形面积的估算》说课稿 苏教版
- 安全生产标准化基本规范评分表
- 《机械常识(第2版)》中职技工全套教学课件
- 咖啡学概论智慧树知到期末考试答案章节答案2024年华南理工大学
- 工字钢承重表
- 2023房屋安全鉴定服务规范
- 矿山用电安全知识培训课件
评论
0/150
提交评论