为什么我的VB2008里面cad工具箱默认选项板不见了选项只能找到一个MainMenu 选项?

1) 菜单与工具栏: 缺省 VB 只显示了标准的工具栏,根据编程的需要,应该通过右键菜单将所有的工具栏 都显示出来并进行合理的排布,特别是其中的”调试”工具栏比较重要。 2) 窗体设置区域: 这里是模拟运行的效果所显示的窗体,可在上面进行控件拖放等可视化设计;根据所使 用控件的不同,不一定能完全达到所见即所得的效果。 3) 控件工具箱:

显示可用的控件图标,这里只缺省列举 VB 内置的标准控件。 4) 工程浏览器: 显示各个工程以及工程所包含的各种文件的树形浏览器;对一个工程组,可能包含多个 工程,都显示在浏览器中。 5) 属性浏览器: 用于显示窗体、或者窗体中当前所选择控件的属性列表;也可以显示工程浏览器中当前 所选择的其他文件的属性。 6) 窗体布局: 用于直观显示当前窗体在屏幕中的布局,可拖动其中的窗体改变屏幕位置;该区域一般 不使用,为增加其他区域的可视区域可将它隐藏。 开发过程中,根据可视区域尺寸的需要,以上各个区域都可以关闭或者通过工具栏上面的按 钮显示出来。 注:图例中有一些菜单、工具条、页卡与标准的 VB 环境有所区别,是因为安装了 CodeSmart 辅助编程插件。 1.1.2 可视化设计开发: 窗体缺省是处于设计状态,在设计状态下,点击控件工具箱上面的对应控件,然后在窗 体上面进行拖放,就添加了这个控件;在窗体上面摆放多个控件,并进行拖放排布,在属性 浏览器中设置它的相应属性,就是可视化设计的主要工作。 除了标准的内置控件外,可以在控件工具箱上面点击右键,选择”部件”(或者选择菜单”工 程\部件”),就会弹出第三方控件列表对话框,勾选对应的控件之后,在控件工具箱上面会增 加显示对应的控件图标。 在工程浏览器中,左上角的两个图标用于切换窗体的设计界面和代码书写界面,双击窗 体设计界面也可以切换到代码书写界面;代码书写界面类似下图:

其中有两个下拉框,第一个下拉框定位具体的对象(窗体或者控件),第二个下拉框定位它的 具体某个事件,当事件函数在代码中不存在时,会自动产生。 除了事件函数外,也可能有一些自已书写的函数,可以在第一个下拉框中选择”(通用)”,然 后就可以在第二个下拉框中找到这些函数进行定位。 Visual Baisc 的代码都是由一个个的函数组成,所以又称为函数式编程。 在窗体界面设计好,代码编写完成之后,点击工具栏上面的”启动”按钮 (F5),即可运行程 序;运行程序有两种方式,一种是”启动”,一种是”全编译执行”(Ctrl+F5),全编译执行可以 检查出代码中的编译错误,从好的习惯出发,一般都应该使用”全编译执行”。 程序运行之后,如果要进行调试,可以点击工具栏上面的”中断”按钮 (Ctrl+Break),即进入 代码调试状态;如果要终止程序,可以关闭窗体,或者点击工具栏上面的”结束”按钮 。 1.1.3 VB 环境设置: 在使用 VB 环境进行开发之前,先可以进行一些基本的选项设置,但不是必须的。选择菜单”

工具\选项”进入选项设置,下面介绍几个常用的选项设置,其他的保持缺省即可: 1) 自动语法检测: 在”编辑器”页面,该选项一般情况下应勾上,这样在代码书写过程中,会自动对错误的 语法进行检查提示。 2) 要求变量声明: 在”编辑器”页面,该选项一般情况下应勾上,虽然 VB 支持不声明变量直接使用,但这 样是不严谨的,我们的规范也不允许。该选项勾上的情况下,代码窗体的最前面会自动 加上” Option Explicit ”关键字。 3) 代码颜色和字体: 在”编辑器格式”页面,这里面可以根据自身的情况,设置对应的颜色和字体。 4) 窗体网格设置: 在”通用”页面,根据自身情况,确定是否勾选”显示网格”和”对齐控件到网络”; 5) 错误捕获: 在”通用”页面,这个是比较重要的参数,影响程序调试。但具体选项的作用,我们在后 面错误调试的章节再进行说明。 另外 VB 开发环境是一个开放的环境,可以在 IDE 环境中加载插件以提供一些辅助编程的功 能,比如前面提到的 CodeSmart 就是一种插件;甚至可以自已使用 VB 开发插件(本培训课程 不涉及)。 加载插件的方法是选择菜单”外接程序\外接程序管理器”,就会弹出外接程序管理器,并列 举出可用的插件,选择对应的插件,并勾选”在启动中加载、加载/卸载”,然后在菜单中, 就会自动添加相应的功能项。 VB 标准 API 的查询和函数定义生成器,方便进行 API 编程。 3) VB6 类生成工具: 辅助定义类,类的属性、方法、事件,设置类集合,并自动生成对应代码的工具;这个 工具可能经常使用。 4) VB6 资源编辑器: 当要把图片、 字符串等资源附加到工程中, 一并编译到文件中时, 需要使用到资源文件, 这个工具可以对资源文件中的内容进行编辑。关于工程中资源的访问,后面章节再进行 介绍。 1.2 VB 工程与文件类型: 1.2.1 可开发的工程与类型: 进入 Visual Basic 6.0 时,会提新建的工程类型。这里对我们常用的几种工程类型进行说明: 1) 标准 EXE: 开发 Windows 标准的 exe 可执行文件。 2) ActiveX DLL: 开发基于 COM 对象的 DLL 部件,通过开放公共的类接口来被其他程序所调用,其他程 序可以是支持 COM 部件调用的任何语言编写的;该 DLL 部件可能是系统中的业务组件

之一,也可能是一个公共功能的组件; 3) ActiveX EXE: 与 ActiveX DLL 类似,可通过开放公共的类接口来被其他程序所调用;但它是以 exe 的方 式出现,因此相对于调用它的主程序来说,ActiveX EXE 是在独立的进程中运行。 4) ActiveX 控件: 同样是基于 COM 对象的程序,但是以控件的形式提供让其他程序调用。 1.2.2 工程文件组成: 窗体只是 VB 工程中的一种文件,VB 工程(Project,prj)中可能包含的比较常用的文件类型如 下: 1) 窗体: Form,用于与用户进行交互,文件扩展名为 frm,文本格式,存放各个控件的属性,以 及窗体中的代码;如果窗体中包含二进制数据(比如窗体中有一张图片),就会产生同名 的 frx 文件。 2) 模块: Modual,用于存放全局使用的公共变量、公共函数,文件扩展名为 bas。 3) 类模块: Class, 用于实现 VB 中的类, VB 基于对象的编程就主要靠类模块实现, 文件扩展名为 cls。 4) 用户控件: UserControl,实现自定义控件时它是主要的界面设计文件,特性与窗体文件类似,扩展 名为 ctl,对应的二进制同名文件为 ctx。 5) 属性页: PropertyPage,实现自定义控件时,对控件的属性进行设置的窗体,特性与窗体文件类 似,扩展名为 pag,对应的二进制同名文件为 pagx。 6) 资源文件: Resource,用于存放工程中使用的,额外的图片、字符串等数据,与工程一起编译。二 进制格式,扩展名为 res,一个工程中只能有一个资源文件。 以上文件的名称都可以在属性浏览器中进行设置, 保存时的磁盘文件名缺省与所设置的文件 名称相同,但也可以强制保存为其他磁盘文件名,不过这样是很不规范的行为,容易给管理 造成混乱。 1.2.3 工程属性与启动: 1) 启动工程以及工程的启动对象: 在一个工程组中(Visual Basic Project Group、vbg),可以包含多个工程(比如一个类型 为标准 exe 的主工程, 若干个类型为 ActiveDLL 的业务部件工程), 但启动工程只有一个; 在 C/S 开发模式中,启动工程就是 exe 工程,在工程浏览器中选中 exe 工程名,点击右 键,选择”设置为启动”即可;当只有一个工程时,它缺省就是启动工程。 设置了启动工程,该工程启动的入口又有两种方式;一种是缺省以工程中添加的第 一个窗体作为启动入口;另一种是以模块文件中的 Main 过程作为入口(模块中定义的 Public Sub Main 或者 Sub Main),具体可以在工程属性的启动对象中设置;当要编写无界 面交互的程序,或者在窗体显示之前先要作一些特殊处理的程序来说,Sub Main 启动就 非常有用。 2) 工程属性: 在工程浏览器中选中某个工程名,点击右键,选择”<工程名>属性”即可弹出工程属性设

置框。工程有一些比较重要的属性,下面分别介绍: 1) “通用”页面:

启动对象:前面已经说了,用于选择窗体启动,还是 Sub Main 启动。这个选项 主要针对 exe 工程,对于 dll、ocx 等工程,缺省为”(none)”。 2) “生成”页面:

版本号:设置当前工程部件所对应的版本号,每一位允许在 0-9999 之间设置; 在产品化的开发中,版本号非常重要;该属性在代码中可以通过 APP.Major、 Minor、Revision 读取。 注:在 Windows 的文件属性中看到的版本号格式是 4 段的,如 10.28.0.10,这 里的对应设置为 10.28.10。 应用程序: 标题用于设置对工程的简称,如”药房业务部件”,这个标题同时也是工程中调 用 MsgBox 函数进行消息提示框的缺省标题,该属性在代码中可以通过 APP.Title 读取。 图标用于设置工程编译后所生成文件的图标, 它是通过选择工程中的某个窗体, 而使用该窗体的图标作为工程编译文件的图标。 版本信息: 设置一些附加的工程信息,一般是跟版权相关的信息,包括”产品名、公司名、 合法版权、合法商标、文件描述 ” 等,在代码中可通过 APP.ProductName 、 CompanyName 等属性访问。工程被编译成文件之后,在 Windows 的文件属性 中也可以查看到这些信息。

命令行参数: 标准 exe 工程编译之后,由其他程序调用时可以传入命令行参数;如果在这里 输入命令行参数,就是让程序运行时,模拟进行传入,以方便程序进行调试。 3) “部件”页面:

版本兼容: 对于 ActiveX EXE/DLL/控件这几种类型的工程,都是以 COM 类来开放接口,在 编译生成文件时,与以前的版本的文件存在一个接口兼容性问题,在接口类的 定义、函数、参数等未发生变化,或者只发生了向下兼容性的变化时,应该选 择按”二进制兼容”模式进行编译,并指定要进行兼容检查的磁盘文件。 这个设置对于公用性质的部件特别重要,一旦不兼容了,使用公用部件的程序 就会出错,除非也重新编译使用公用部件的程序。 1.2.4 工程编译与发布: 工程编译的方法比较简单,选择菜单”文件\生成<工程名>”,然后指定要生成到的路径和文 件名即可,标准 EXE、ActiveX DLL、ActiveX EXE、ActiveX 控件编译时分别生成的是 exe、dll、 exe、ocx 文件。 要发布所编译的文件,需要将它所依赖的其他文件一并包含,依赖的的文件包括: 1) Visual Basic 6.0 的运行支持文件:msvbvm60.dll,放在系统目录 System32 下面。 2) 工程所使用到的控件文件,包括自定义控件和第三方控件文件,如 mscomct.ocx。 3) 工程所使用到的其他 DLL 组件, 包括自已编写的 ActiveX DLL, 以及第三方的公共组件等, 如 msscrrun.dll。 4) 工程中所涉及到要读写的其他独立文件。 注:VB 在编译过程中,可能会生成 lib、exp 等一些附加文件,这些文件在编译之后可以删 除。 1.3 VB 对象的基本概念: Visual Basic 6.0 是基于对象的编程,不是完全面向对象的编程,对象的继承、多态等特性不能很 好地处理;但使用对象编程仍是 VB 中很重要的功能,在日常工作中大量使用。 1.3.1 窗体对象: 前面提到的窗体,VB 中也是一种 Form 类的对象,它拥有属性、方法、事件,对 Form,也 完全可以按照类的构建方法,自已再增加属性、方法、事件;除了可以直接通过窗体名使用 窗体外,也可以通过对象使用模式,定义基于窗体类的对象,实例化之后进行使用,如下面 的代码:

1.3.2 类模块与对象: VB 中的类模块(Class)是专门用来定义类、实现对象处理的文件,定义使用一个对象的步骤如 下: 1. 在工程中添加一个类模块,并命名,比如 clsPerson 2. 在类模块中添加属性、 方法、 事件, 比如添加两个属性”Name、 Sex”, 添加两个方法”Eat、 Sleep”,添加一个事件”GetIll”。 3. 在窗体中定义一个对象变量,并实例化,如:

4. 给该对象的属性赋值、读取,调用对象的方法。 5. 使用对象的事件比较特殊,需要使用 WithEvents 关键字,并且需要将对象定义为窗体模 块级的、单独使用 New 关键字进行实例化:

也可以使用外接工具”类生成器实用工具”直观地定义类并自动生成相应代码;关于对象类型 的进一步说明,将在后续章节进行。 1.3.3 其他常用内置对象: VB 中有一些内置的对象,在日常开发工作中经常用到,下面进行简要介绍: 1) Me: Me 表示的是对象实例自身,在类模块内部使用,窗体也是一种类模块,因此在窗体中 使用得非常多。 比如在 Form1 内部的代码中, 我们可以书写 Me.Caption、 Me.TextBox1.Text; 通过 Me 关键字加”.”符号,在代码书写时可以快速找到要访问的属性、方法等;当然在 类里面,对于自身的属性、方法等,也可以不加 Me 前缀直接书写访问。 2) VB.APP: 当前应用程序对象,通过 APP 对象(可以不加 VB 前缀),能够读到当前工程相关的信息,

4) VB.Screen: 当前屏幕对象,可以读取屏幕的尺寸,精度,活动窗体等信息。 5) VB.Printer: 当前打印机对象,能够读取和设置打印机、纸张等信息,并可以打印机输出文本、图形 等内容。关于打印机编程,在应用类产品中非常重要,后面的章节将对打印机编程作进 一步讲解。 除了 VB 内置的对象,Windows 和一些第三方厂商也提供了一些公共的对象库,可以在 VB 中使用,比如 ADO 数据库操作对象,FileSystemObject 文件操作对象等,要使用这些对象库 的方法如下: 1) 点击菜单”工程\引用”,将弹出”引用”对话框;对话框中列举了可以使用的公共对象库, 这些对象库都是基于 COM 的 ActiveX DLL/EXE,每个工程缺省引用了 VB 的一些内置库。 2) 找到对应要使用对象库,比如 Microsoft ActiveX Data

类型 字符 字符 枚举 枚举 布尔 枚举 数字 数字 数字 布尔 对象 枚举 名称,运行时只读 显示的文本标题

一般有 3D、Flat 几种选择,表示窗体或控件的外观是平 面的还是立体的。 控件标题文本在内部的对齐方式 缺省为 False,当设置为 True 时,在窗体或者控件上面作 图时,不用去处理 Paint 事件重绘。 窗体或控件的边框样式,一般有无边框、单线边框、3D 边框等样式选择。 背景色 字体颜色或者画笔颜色 当控件具有背景图片时,对图片中 MaskColor 指定的颜 色进行屏蔽透明。 所指定的 MaskColor 颜色值是否生效。 字体属性,包括字体名、字号、粗体、斜体等 对于可输入类控件具有,表示控件激活时中文输入法的 状态,一般设置为:No Operation(不处理),ON(打开), Off(关闭),Disabled(禁用) 背景图片 控件的索引,使用控件数组时使用,否则缺省为空; Index>=0,同一种控件、名称相同,Index 不同的一组控

缺省为 False,当为 True 时,表示按键盘 Tab 键时,焦点 不经过该控件;但该控件仍可获取焦点,仍可以强行用 鼠标点击获取焦点。 输入类控件具备,表示当前键盘光标所在输入内容中的 位置,值为 0-Len(内容)。 输入类控件具备,表示当前键盘光标在输入内容中所选 中的内容长度,如果没有选中内容,则为 0。 输入类控件具备,表示当前键盘光标在输入内容中所选 中的内容,如果没有选中内容,则为””。 用于存放额外的扩展数据,数据内容是自已定义的。 鼠标悬停提示的内容 窗体或者控件是否可用(不可用一般会置为灰色) 窗体或者控件是否可见 窗体或者控件相对于它所在的容器的位置和尺寸;窗体 的容器是屏幕。 缺省为 False,当设置为 True 时,表示窗体上面的所有按 键都先触发窗体的 KeyPress 事件,而不是先触发当前控 件的 KeyPress 事件。 表示窗体是否具有最大化、最小化、关闭按钮以及图标; 在运行时只读。 表示窗体运行时是否在 Windows 任务栏上面显示;在运 行时只读。 设置窗体运行时缺省在屏幕上所出现的位置,在运行时 只读。 手动:根据在窗体布局中所调整的位置进行显示。 所有者中心:显示在上层主窗体的中心。 屏幕中心:显示在屏幕的中心。 窗口缺省:不固定位置,由 Windows 系统控制。 窗 体 当 前 的

数字 数字 文本 字符 字符 布尔 布尔 数字 布尔

窗体与控件常用事件: 1.5.1 窗体的使用及事件 要显示一个窗体,有几种办法。 1) 直接使用窗体的 Show 方法:

Show 方法的第一个参数表示是否以模态方式显示,1 表示模块,0 表示非模态(缺省); 第二个参数表示该窗体的主窗体,如果有主窗体,那么当主窗体最小化时,该窗体也会 最小化,当主窗体关闭时,该窗体也会自动关闭;这两个参数都是可选参数。 2) 定义窗体对象,再调用 Show 方法: 窗体是 VB 中的一种类, 前面直接调用 Show 方法的方式并没有通过创建窗体对象来处理,

这样是 VB 在后台自动创建一个窗体对象实例,但这样这个窗体只能有一个实例存在, 即只能同时打开一个;上例中,第 2 次点击 Form1 时,只是将已经显示出来的 Form2 激 活而已。 我们可以采用以下方法:

这样每次点击 Form1 时,都是重新打开并显示一个新的 Form2 窗体。 3) 先加载窗体,再显示出来:

这个方法是先将窗体对象 Load 加载到内存(激活窗体的 Load 事件),但暂时不显示,这 时可以作一些其他的处理,完成之后,再将窗体显示出来。 4) 自已定义窗体的 Show 方法: 窗体作为一种类,也可以定义其自已的方法,特别在需要传递额外的参数的时候,我们 可以人为定义一个 Show 方法,如:

要关闭一个窗体,除了交互操作关闭外,在代码中可以使用以下方法: 1) 使用 Unload 语句: 如一般在窗体的退出按钮中书写:Unload Me 2) 使用 Hide 方法: 如 Me.Hide;但 Hide 只是将窗体隐藏掉,并没有清除窗体实例;最后还是要使用 Unload 语句。 从窗体从打开到关闭这个过程中,发生的事件以及顺序如下: 1) Form_Initialize: 窗体初始化

窗体加载,这个时候窗体还没有显示出来;和 Initialize 相比,Load 事件用得较多一些; Initialize 中主要是进行一些比较低级和底层的初始化(如 Windows API 处理)。 3) Form_Resize 在窗体加载完成之后,没有显示出来之前,先要激活一次 Resize 事件,以根据设计时的 布局调整窗体及控件。 4) Form_Activate 窗体激活; Windows 任务管理器正在关闭应用程序 MDI 主窗体关闭导致当前 MDI 子窗体被关闭 窗体的主窗体被关闭导致当前窗体被关闭

键盘事件 窗体以及大部分的控件都具有以下键盘事件响应: 1) KeyDown/KeyUp(KeyCode As Integer, Shift As Integer) 我在键盘上按一个键或者组组合键时(如 Ctrl+F),会先后激活 KeyDown/KeyUp 事件,这 两个事件能够截获绝大部分的键盘按键; 每一个按键都有一个对应的按键代码,这些按键代码大部分也对应有 VB 常量,如 一般的字符按键,对于控制键和组合键则适合使用 KeyDown 事件;因此 KeyAscii 事件参 数主要是所按下字符的 ASCII 码,当然一些特殊按键也能被 KeyPress 事件捕获,比如 BackSpace 键,它的 ASCII 码是 8。 与 KeyDown 事件所不同的是,在 KeyPress 事件中,可以通过将事件参数 KeyAscii = 0 来 使按键无效,而

另外当窗体的 KeyPreview 属性为真时,如果窗体中当前焦点在某个控件上面,这时当键盘 按下时,是先激活窗体的键盘事件,再激活该控件的键盘事件;反之则只激活该控件的键盘 事件。 1.5.3 鼠标事件 窗体以及大部分的控件都具有以下鼠标事件响应 1) MouseDown/MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) 当鼠标按下或者弹起时激活; Button 表示具体按的哪个键,1 表示左键、1 表示右键、4 表示中间按钮; Shift 表示按下鼠标时,同时按下了键盘的组合键,具体与键盘 KeyDown 事相同; X、 Y 则表示当前的鼠标位置, 注意这个鼠标位置是相对于当前窗体或者控件的左上角的。 2) MouseMove(Button As Integer, Shift As 在界面交互过程中,当编辑控件中的内容输入完成,转移焦点时激活;该事件的主要目 的是对所输入内容的正确性进行校验,如果检查发现输入内容不符合要求,可以通过将 事情参数 Cancel =1 来阻止进行焦点转移。 注:转移焦点也会激活 LostFocus 事件,但所不同的是 LostFocus 是强制性的,不能阻止 这个过程。 1.5.5 拖放事件 窗体以及大部分的控件都支持拖动的处理,利用拖动的事件、方法我们可以实现鼠标拖动应 用。拖动的启动有两种方式: 1) 手动: 这个时候窗体或者控件的 DragMode=0 (VbManual,缺省),需要在代码中调用 Drag 方法 进行启动: Drag <Action> Action=

当拖动对象经过某个控件或者窗体时,这个控件或者窗体会触发 DragOver 事件: Source:表示被拖动的来源控件 X/Y:被拖动的控件在当前控件或者窗体中的坐标 State:被拖动的控件在当前控件或者窗体中的状态,分别有 0=进入,1=离开,2=经过 2) DragDrop(Source As Control, X As Single, Y As Single) 当拖动对象在某个控件或者窗体上面完成拖动(松开鼠标按钮或者调用 Drag 方法),会触 发该控件或者窗体的 DragDrop 事件,事件参数含义同 DragOver。 1.5.6 其他事件: 1) GotFocus/ LostFocus 无事件参数;当控件获取到键盘输入焦点,或者失去焦点时激活。 1.6 常用键盘快捷键: 下表列举了在实际工作中最常用的,Visual Basic 6.0 IDE 环境中的快捷键,经常使用快捷键,可以 提高工作效率;当这些快捷键也可以通过菜单功能进行执行: 功能 保存当前文件 运行程序 全编译执行 切换上一个/下一个函数定义 定位到当前光标所在函数的函数定义处 显示当前光标所在函数的函数定义提示 弹出当前光标所在对象的属性、方法列表,类 似输入”.”操作符 查找/查找下一个 替换 光标定位到当前代码文件的最前面/后面 定位到行最前/第一个字符处 按整行选择代码 按关键字选择代码 中断程序进入调试状态 将当前代码行设置为断点(包括在运行时) 从当前断点处逐条语句执行(要进入子函数) 从当前断点处逐个过程执行 将下一条执行语句从当前断点处跳转到当前光 标所在的代码行 2 快捷键 Ctrl+S F5 Ctrl+F5 Ctrl+↑/↓ Shift+F2 Ctrl+I Ctrl+J Ctrl+F,F3 Ctrl+H Ctrl+Home/End

Visual Basic 编程基础 2.1 简单数据类型 2.1.1 基本数据类型 1. 数值类型: 数值型数据可分为以下几类。 1) Integer(整型) 整型数是不带小数点和指数符号的数,每个整型数据占用 2 个字节(16 位)的存储空 间,其类型声明符为“%” ,其取值范围为-32768~32767 之间的整数。

2) Long(长整型) 长整型数也是不带小数点和指数符号的数, 每个长整型的数据占用 4 个字节(32 位) 的存储空间,其类型声明符为“&” ,其取值范围为-~ 之间 的整数。 3) Single(单精度浮点型) 单精度浮点型数是带小数的数值,通常以指数形式(科学记数法)来表示,以“E”或 “e”表示指数部分。每个单精度浮点型数据占 4 个字节的存储空间,可以精确到 7 位,其正数的取值范围为 1. ~ 3. ,其负数的取值范围为 -3.~-1.,其类型声明符为“! ” 。 4) Double(双精度浮点型) 双精度浮点型数也是带有小数的数值, 通常也以指数形式(科学记数法)表示, 以 “D” 或“d”表示指数部分,双精度浮点型数占 8 个字节的存储空间,可以精确到 15~ 16 位,其正数的取值范围为 4.47E-324~1.32E+308,其负 数的取值范围为 -1.32E+308~-4.47E-324,其类型声明符为 “#” 。 5) Currency(货币型) 货币类型是为计算货币而设置的数据类型, 它也是一种固定小数点位置的数据类型, 占用 8 个字节的存储空间,其小数点左边有 15 位数字,右边有 4 位数字,其取 值范围为-477.5808~477.5807,其类型声明符为“@” 。 6) Byte(字节型) 字节型数据用于存储二进制数据, 占用 1 个字节的存储空间, 其取值范围为 0~255。 注:关于类型声明符,在随后的常量与变量章节中将涉及到它的具体使用方法。 2. 字符类型(String): 字符串类型数据用来定义一个字符序列, 由 ASCII 字符组成, 包括标准的 ASCII 字符 和扩展 ASCII 字符,其类型声明符为“$” ;在 Visual Basic 中,字符串必须放在双引号 内,其中长度为空的字符串称为空串,例如"ABC"、"" (空串)。字符串型数据分为两种: 一种为变长字符串, 它能够包含字符的个数是可变的, 随着对字符串变量赋予新值, 它的长度随之发生变化,所占用的存储空间是该字符串长度再加上 10 个字节; 一种为定长字符串,即在程序运行中始终保持其长度不变的字符串,其中每个字符 都占用一个字节的存储空间,因此定长字符串所占用的存储空间就是该字符串所指定的 长度。例如,声明一个长度为 5 的定长字符串变量:Dim A As String*5 VB 中没有单独的字符类型(单个字符 Char),都使用 String 表示。 注:如果在一个字符串中要包括双引号字符,可以用两个双引号表示,如"我的名称 叫""张三""。" 3. 布尔类型(Boolean): 布尔型数据是一个逻辑值, 它占用 2 个字节的存储空间, 只能取两个值, 即 True(真) 和 False(假)。 4. 日期类型(Date): 日期型数据用来表示日期,它占用 8 个字节的存储空间,可以表示的日期范围从公 元 100 年 1 月 1 日到 9999 年 12 月 31 日,而表示的时间可以从 0:00:00 到 23:59:59。表 示日期的常数必须以“#”括起来,如:X

一个日期型数据同时包含了日期和时间两个部分的数据,没有单独的时间类型。 2.1.2 可变数据类型(Variant) 可变类型数据是一种通用的、动态可变的数据类型,它可以用来表示任何类型的数据(除 了用户自定义类型),可变类型变量可以在同一程序运行期间放置不同类型的数据,系统会 自动完成必要的转换,例:

没有声明而直接使用的变量,或者声明时没有指定类型的变量,都是按可变数据类型处理。 2.2 常量与变量 变量和常量是 Visual Basic 程序中最基本的数据元素,程序中的数据大多是以变量和常量的形式 出现的。可以说常量和变量是程序中都存在的基本量。但是在不同的语言中,它们的表现形式是 不同的。掌握变量和常量的表达方法是 Visual Basic 语言编程的基础。所谓常量是指在程序执行 期间,其值是不能发生变化的数据;而变量的值是可以变化的,它代表计算机内存中指定的存储 单元。 2.2.1 常量 常量是指在程序执行期间它的值不会发生变化的数据,在 Visual Basic 中常量分为两种,一 种是文字常量,另一种则是符号常量。 1. 文字常量 文字常量分为数值常量、字符串常量、逻辑型常量和日期型常量等。 1) 数值常量 数值常量又分为整型常量、长整型常量、浮点型常量和货币型常量等。 ? 整型和长整型常量 在 Visual Basic 中可以使用十进制、 八进制和十六进制来表示整型和长整型常量, 十进制数值的表示方法与人们日常的表示方法相同,例如:235;如果在数字的 开头加上前缀&O(字母 O),则所表示的是八进制数值,例如:&O315;如果在数 字的开头加上前缀&H,则表示的是十六进制数值,例如:&H418。 需要说明以下两点: ① 如果所表示的数值大小没有超过整型数据的范围(-32768~32768)时,系统 会认为它是整型数,在内存中以 2 个字节存放它,如果所表示的数值大小 超过了整型数据范围,则系统认为它是长整型数,以 4 个字节存放它。 ② 用户还可以根据需要来设置某一个数据为长整型数, 其方法是在某一个整型 常量的后面加上类型声明符“&” ,则该整型数被设置为长整型数,它们数 值是相同的,但占用内存不一样,即整型常量占用 2 个字节,而长整型数 则占用 4 个字节。 ? 浮点数常量 浮点数常量可分为单精度浮点数和双精度浮点数,浮点数由尾数、指数符号和 ± ± 指数 3 部分组成,用 mE n 或 mD n 来表示;其中 m 为尾数,它用实数表示, 指数符号是 E(表示单精度)或 D(表示双精度),n 为指数,它必须是整数;指数符

号 E 或 D 的含义是 m 乘上 10 的幂次,例如:3.145E+3 表示的数值为 3145。 ? 货币型常量 货币型常量是指货币类型数据的常量表示形式。 2) 字符串型常量 所谓字符串型常量是指用双引号括起来的一串字符(也可以为汉字),如: "Visual Basic"、""、"ab56"、"1234"等。 3) 逻辑型常量 逻辑型常量很简单,只有两个值,即 True 和 False。 4) 日期型常量 日期型常量是指用 # 号括起来的一串日期,它可以表示日期、时间,其格式为: #yyyy-MM-dd[HH:mm:ss]#;当时间部分为 00:00:00 时,可以只书写日期部分。 2. 符号常量 所谓符号常量是用一个被定义的标识符代替数值和字符串, 定义符号常量的一般格式为: Const 常量名 = 表达式[,新常量名 = 表达式] 其中符号常量名必须符合 Visual Basic 标识符的定义方式, 表达式可以由文字常量、 算术 表达式及逻辑运算符组成,但不能使用字符串连接运算符变量及用户定义的函数或内部 函数;例:

2.2.2 变量 几乎所有编程语言都要用到变量,变量的实质是指在程序运行过程中,其值可以改变的量。 一个变量应该有一个名字,即变量名,在内存中占据一定的存储单元。在该存储单元中存放 变量的值称为变量值。为了通知计算机为变量留出所需要的空间,就需要对变量的类型进行 说明,这一过程称为声明,除了对变量进行命名和类型说明以外,还必须规定该变量的使用 范围。在 Visual Basic 中,变量的有效范围是不同的,按照其使用范围可以将变量分为过程 级变量、模块级变量及全局变量,下面将分别介绍变量的命名规则及变量的声明等内容。 1. 变量的命名规则 在 Visual Basic 中,给变量命名时应遵循以下规则: 1) 变量名只能由字母、数字和下划线组成。 2) 变量名的第一个字符必须是英文字母。 3) 变量名的有效长度为 255 个字符,而且名字的有效字符为前 40 个,后面的字符只 为了增加易读性,对于区分不同的变量无效。 4) 不能使用 Visual Basic 保留字作为变量名,但可以把保留字嵌入变量名中,例如,不 能将变量命名为 DIM(因为 DIM 是 Visual Basic 中的保留字), 但可以命令为 MYDIMS。 在 Visual Basic 中,变量名、过程名、符号常量名、记录类型名和元素名等都遵循上 述规则。 在 Visual Basic 中,不区分变量名中字母的大小写,abc、ABC、aBc 指的是同一个 名字。 2. 变量的声明 在 Visual Basic 中,变量需要声明,声明的过程就是通知系统准备使用哪些变量,该 变量需要多大的存储空间,以便系统将其存储到计算机的内存中。 声明变量的位置在过程代码的最前面,以及模块(包括窗体等)代码的最前面;但对于

过程中的变量,也可以在任意位置进行声明,只要是在使用它之前。 变量的声明有两种,即显式声明和隐式声明。显式声明是用相应的语法声明变量, 声明的变量具有所声明的数据类型;隐式声明是不经声明直接使用变量,变量自动具有 Variant 类型。 1) 变量的显示声明 在变量的显示声明中又分为以下几种方式。 ① 用 DIM 语句声明过程变量 DIM 语句用于在模块(包括窗体等)的过程中声明变量,DIM Static 语句声明静态过程变量 Static 语句用于在模块(包括窗体等)的过程中声明静态变量,Static 声明的变量 也是过程变量,其一般格式为: Static 变量名 As 类型名 例如: Static A As Integer 用 Static 语句声明的变量称为静态变量。静态变量的特点是第一次执行某个过 程时,系统为变量分配了一个存储单元,当退出这个过程,存储单元的值将保 留,下次再调用此过程时,该变量的初值就是上次被保留的值。 例如:

当用户单击 Command1 按钮时,该事件过程被调用,此时系统对 M1 赋予默 认值 0,然后打印 M1 的值 0,接着执行语句 M1=M1+2,M1 值为 2。由于变 量 M1 是静态变量,其值将保留下来,当再次单击 Command1 按钮时,该事件 过程又被调用,变量 M1 的初始值不再为 0,而是上次保留的 M1 的值,即 M1 值为 2。 ③ 用 Private 语句声明模块变量 Private 语句用于在模块(包括窗体等)中声明变量,用 Private 声明的变量为模块 变量,模块变量的使用范围是在模块内部的各个子过程中,声明模块变量的一 般格式为: Private 变量名 As 类型名 例如:

Private A As Integer 需要注意的是,在声明模块变量时,使用 Dim 也等同于 Private。 ④ 用 Public 语句声明全局变量 Public 语句用于在模块(包括窗体等)中声明变量, 用 Public 声明的变量为全局变 量,全局变量的有效使用范围是在当前整个工程中的所有地方;声明全局变量 的一般格式为: Public 变量名 As 类型名 例如: PublicA As Integer 如果是在窗体模块中声明的全局变量,在其他模块中是无法直接访问的,可以 通过加上窗体前缀进行访问,如”Form1.gstrVar ”,或者”objForm.gstrVar ”。 2) 变量的隐性声明 隐性声明的变量都是过程变量,变量的隐性声明方法有以下两种: ① 在代码中不对变量进行声明而直接使用,则此变量默认的数据类型为 Variant。 ② 可以省略声明语句,而在变量名的尾部加上变量类型声明符来使变量被隐性声 明为某种类型的变量,例如:A% = 300 3. 变量的初始值 变量在使用之前,一般都要求先赋予初始值;在 Visual Basic 中,变量在声明之后即 具有初始值,可以直接使用。 对简单数据类型的变量,初始值为 Empty,Empty 是一个通用关键字,对不同的数据 类型,它等价于不同的值: 1) 数值类型:Empty Nothing;关于对象类型在后续章节进一步介绍。 Visual Basic 中另外有一个关键字 Null, Null 与 Empty 不同, Null 表示不具有有效数据, 主要用于 Variant 类型,可使用 IsNull()函数来进行判断;如果把 Null 值赋给明确类型的 变量,将会出现”无效使用 Null”错误。 2.3 运算符与表达式 在程序设计语言中用不同的符号描述不同的运算形式,这些符号称为运算符,而运算的对象 就称为操作数,由运算符将操作数接起来的合法的式子构成了表达式。例如:A+5、3*5*6 等都 是表达式,单个变量式常量也可以看成是简单的表达式。 Visual Basic 提供了丰富的运算符和表达式。这些运算符和表达式包括算术运算符和算术表达 式、字符串运算符和字符串表达式、关系运算符和关系表达式、逻辑运算符和逻辑表达式等。 2.3.1 算术运算符与算术表达式 1. 算术运算符 算术运算符是常用的运算符,用来执行简单的算术运算,Visual Basic 提供了 8 个算术运 算符,下表按优先级列出了这些算术运算符:

说明: 1) 指数运算 指数运算用来计算求方和方根,其运算符为“^” ,例如:3^2 表示为 3 的平方。当 指数是一个表达式时,必须加上括号,例如:X 的 Y+Z 次方,必须写成 X^(Y+Z)。 2) 浮点数除法与整数除法 浮点数除法运算符( / )执行标准除法操作, 其结果为浮点数, 例如: 5/4 的值为 1.25。 整数除法运算符( \ )执行整除运算, 运算结果为整型数。 整除的操作数一般是整型值, 当操作数带有小数时,首先被四舍五入为整型数或长整型数,然后进行整除运算, 其运行结果只截取整数部分, 小数部分不做四舍五入处理。 例如: 8\3 的结果为 2, 24.6\2.8 的结果为 8。 3) 取模运算 取模运算符 Mod 用来求余数,其结果为第一操作数除以第二个操作数所得的余数, 当操作数带有小数时,首先被四舍五入为整型数,然后求余数。例如:8 Mod 5 的 结果为 3,24.6 Mod 2.8 的结果为 1。 2. 算术表达式 算术表达式又叫数值型表达式,它由算术运算符、数值型常量和变量、函数和圆括号组 成,它的运算结果是一个数值。例如: 3 3+5.6 5+Sin(x) 2.3.2 字符串运算符与字符串表达式 字符串运算符有两个,即“&”和“+” ,其功能都是将两个字符串连接起来。但由于“+” 运算符还有做加法的含义,容易造成混乱,所以做字符串连接运算时最好还是使用“&”运 算符。例如: A1="BCDE" A2="FGHI" A3=A1+A2 'A3 的值为"BCDEFGHI" 或 A3=A1&A2 'A3 的值也为"BCDEFGHI" 字符串表达式由字符串变量、常量、函数和运算符组成。 2.3.3 日期运算符及日期表达式

日期类型在系统中本质上是按 Double 数值类型进行处理的,因此日期类型之间、日期类型 和数值类型之间也可以进行各种算术运算,如+-*/等; 日期类型与数值类型混合运算时,数值类型的数字 1 表示日期中的 1 天,数字 1.5 表示日期 中的 1 天 12 小时,1/24 表示日期中的 1 小时,1/24/60 表示日期中的 1 分钟,其他以次类 推计算; 在实际工作中,比较有意义的运算包含以下几种: 1. 日期+数值: 在日期的基础上,增加相应的天数、小数、分钟、秒,结果为日期类型,如: ## + 1 + 2/24 结果为 02:00:00 2. 日期-数值: 在日期的基础上,增加相应的天数、小数、分钟、秒,结果为日期类型,如: ## - 1 - 2/24 结果为 22:00:00 3. 日期-日期: 取两个日期之间的间隔天数,结果为一个数值;如果结果包含小数,则表示间隔中包含 不足一天的小时、分、秒;如: ## - # 12:00:00#结果为 0.5 2.3.4 关系运算符与关系表达式 1. 关系运算符 关系运算符也称为比较运算符,用来对两个表达式的值进行比较,比较的结果是一个逻 Like 关系运算符 小于 小于等于 不等于 字符串匹配 含义

Like 是一个特殊的关系运算符, 只用于字符串数据, 用来比较两个字符串是否部分匹配, 在比较的字符串中,可以使用通配符: *:表示零个或多个任意字符 ?:表示单个任意字符 #:表示单个任意数字 比较的结果为匹配(True)或者不匹配(False),例如:ABCDE Like "A*E" 2. 关系表达式 关系表达式是由关系运算符将两个数值表达式或两个字符串表达式连接起来的式子。关 系表达式的值是一个布尔类型的值,只有 True 或 False 两个取值。下面是合法的关系 表达式: 5=3+2 表达式的值为真 5<2 表达式的值为假

2.3.5 逻辑运算符与逻辑表达式 1. 逻辑运算符 逻辑运算符用于对两个表达式进行逻辑运算,结果是逻辑值 True 或 False。Visual Basic 提供的逻辑运算符有 6 种,如下表所示: 逻辑运算符 Not And Or 含义 逻辑非 逻辑与 逻辑或 1 2 3 优先级 逻辑运算符 Xor Eqv Imp 含义 逻辑异或 逻辑等于 逻辑蕴含 4 5 6 优先级

2. 逻辑表达式 用“逻辑运算符”连接两个或多个逻辑量组成的式子称为逻辑表达式,该表达式的返回 值只有两种可能,即真(True)和假(False)。例如,下面都是合法的逻辑表达式: Not(2>8) 其结果为 True (3>8)And(7<3) 其结果为 False 2.3.6 表达式的运算顺序 前面提到的所有类型以运算符都有运算优先级的问题, 在一个表达式中可以包含不同类型的 运算符和函数,每一种运算都有执行的先后顺序,当不同类型的运算符出现在同一个表达式 中时,计算机按一定的顺序对表达式求值,其一般顺序如下。 1. 首先进行函数运算,其优先级最高。 2. 其次进行算术运算,其次序按算术运算符的优先级由高到低依次为: ^ →取负→ * →

菜单级数可通过数据库无限分级,只是要加入相关级的CSS以产生缩进及其它效果!

此菜单系统暂时未考虑根据用户权限而显示相关菜单的功能!

我要回帖

更多关于 cad工具箱默认选项板不见了 的文章

 

随机推荐