VB编程基础教程8–高级变量主题
VB程序设计基础第8章 高级界面设计
Private Sub xt_Click() Text1.FontItalic = Not Text1.FontItalic End Sub 8.1.2 弹出式菜单
与下拉菜单不同,弹出式菜单不需要在窗口顶部下 拉打开,而是通过单击鼠标右键在窗体的任意位置打开, 因而使用方便,具有较大的灵活性。
建立弹出式菜单通常有两步:首先用菜单编辑器 建立菜单,然后用PopupMenu方法弹出显示。第一步的
当完成所有的输入工作后,菜单设计窗口就成为
如图8-4所示的窗口,单击“确定”按钮退出就完成了
菜单的建立过程。
(3)把代码连接到菜单上
在窗体窗口单击菜单标题,然后在下拉菜单中单
击要连接代码的菜单项,在屏幕上就会出现代码窗口, 并自动给出事件过程的头尾语句。只要在头尾语句间 输入代码即可。
程序如下: Private Sub ct_Click() Text1.FontBold = Not Text1.FontBold End Sub
对于“打开”文件对话框,主要有下面几项属性需要设 置。 (1)对话框标题(DialogTitle)属性 (2)文件名称(FileName)属性 (3)FileTitle(文件标题)属性 (4)初始化路径(InitDir)属性 (5)过滤器(Filter)属性 (6)标志(Flags)属性 (7)缺省扩展名(DefaulText)属性 (8)文件最大长度(MaxFileSize)属性 (9)过滤器索引(FilterIndex)属性 (10)CancelError属性
印参数的界面,所选参数存于各属性中,再通过编程来
处理打印操作。
对于“打印”对话框,除了基本属性之外,还有
下列重要属性:
(1)Copies(复制份数)属性 (2)FromPage(起始页号)、Topage(终止页号) 属性
vb08
在前面的一章中详细介绍了Visual Basic工具箱中常用 控件的主要属性、事件和方法,但如果仅仅使用这些基本控 件来设计用户的界面是满足不了实际的复杂的开发需要的。 为此,Visual Basic提供了许多功能强大的高级控件。本章 将详细介绍Visual Basic提供的一些常用高级控件,即Active X控件。
8.1
高级控件简介
高级控件的使用能满足用户实现复杂的Visual Basic应 用程序的开发,让用户设计出更加完美的Windows应用程序 界面。
8.1.1
基本概念
ActiveX是Microsoft对于一系列策略性面向对象程序技 术和工具的称呼,其中主要的技术是组件对象模型(COM) 。ActiveX控件在Windows中以.ocx文件名保存。 Visual Basic专业版和企业版包括了Windows公共控件, 用来创建具有Windows风格的工具栏、状态栏以及目录结构 树的应用程序。还有一些控件用来创建充分利用Internet功能 的应用程序。 组件的一大优点就是可以被大多数应用程序再使用(这 些应用程序称为组件容器)。一个COM组件(ActiveX控件 )可以由不同语言的开发工具开发,包括C++、Visual Basic 或PowerBuilder,甚至一些技术性语言如VBScript等。本章 所介绍的主要是Visual Basic自带的系统高级控件,用户自定 义开发的ActiveX控件在后续章节介绍。在安装时,Visual Basic会将ActiveX控件安装和注册在\Windows\System或 System32目录下。
Panel对象包含在Panels集合中,Panel对象可以包含文本 和位图,主要用于反映应用程序的状态。要检索、添加和移动 单独的Panel对象,可使用Panels集合。Panel对象的常用属性 。
Unit8Visual Basic程序设计(PPT全)(钱显鸣版)
[Private] Function 函数过程名([形参列表]) [As 类型] 过程级变量或常数的定义 语句块 函数过程名 = 表达式 End Function
注:
形参列表:参数类型和个数,每个参数的形式为:
[ByVal | ByRef] 形参名 As 类型
默认为ByVal
二、函数过程
函数过程的调用 函数过程名(实参列表) 函数过程有返回值,有类型
b
20
x
10
y
20
a
10
b
20
x
a的地址
y
b的地址
思考题:
Function Fun(ByRef x!, ByRef y!) As Double x=x+3 y=y-2 Fun = x * y End Function Private Sub Button0_Click(……) Handles Button0.Click Dim a, b, c As Double a=3 b=4 c = Fun(a, b) Label1.Text = a & " " & b & " " & c End Sub
调用时用实参代替形参,实参与形参在个数、位置、
类型一一对应
传值与传地址
传值(按值传递参数)
定义函数或过程时,在形参前加 ByVal 关键字 调用函数或过程时,系统将实参的值复制给形参 传值是一种单向的数据传递
传地址(按地址传递参数)
定义函数或过程时,在形参前加 ByRef 关键字 调用函数或过程时,系统将实参的地址传递给形参
传址是一种双向的数据传递,即调用时实参将值传递
vb8
8.2 变量的作用域
2、模块级变量
在窗体“通用”声明段、标准模块内用Dim、 Private语句声明的变量,可被本模块的任何过 程访问。 其作用域是它们所在的模块或窗体。
8.2 变量的作用域
3、全局变量 用Public语句声明的变量, 可被应用程序的任何过程或函数访问。
全局变量的值在整个应用程序中始终不会消失
8.2 静态变量
用Dim声明的变量,每次调用过程时重新初始化。 静态变量 程序运行过程中可保留变量的值
声明形式:Static
变量名 [AS 类型]
例6.10编一程序,利用局部变量Count统计单击窗体的 次数。 思考: 1、将Count声明为模块级变量,效果如何? 2、Static声明的局部变量和声明为模块级的变量区别?
子过程
(Sub)
函数过程 (function)
子过程
(Sub)
Sub F1( ) Dim Fa As integer … 变量可被访问的范围通常被为变量的作用 End Sub
8.2 变量的作用域
域. 1、局部变量(过程 级变量)
在一个过程内用Dim或Static语句声明的变量,
只能在本过程中使用。 局部变量随过程的调用而分配存储单元,一旦 该 过程体结束,变量占用的存储单元释放,其 内容自动消失。
和重新初始化,只有当整个应用程序执行结束 时,才会消失。
例6.11 建立一个工程,由一个标准模块文 件和一个Form1窗体组成,其中声明了不 同级的变量声明,观察其作用域。
8.2 变量的作用域
8.2 变量的作用域
若在不同级声明相同的变量名,系统优先访问作用 域小的变量名。
vb第8章
幻灯片1第8章过程本章要点:• Function过程• Sub过程•过程的嵌套•参数的传递•代码模块•变量的作用域与生存期幻灯片2过程的引入: 使同类的操作不重复(操作方法相同、参数不同) 过程: 完成一段独立功能,可供其他过程使用(调用)。
过程又称为子程序调用过程: 调用其他过程的过程幻灯片3过程分类:内部函数自定义函数Function过程*内部过程(方法)事件过程自定义过程Sub过程幻灯片48.1 Function过程8.1.1 Function过程的定义1. Function过程的格式[Public|Private][Static] Function <函数过程名>([<形参表>]) [As <类型>][<语句组>][<函数过程名> = <表达式>][Exit Function][<语句组>][<函数过程名> = <表达式>]End Function幻灯片52. 说明(1) Public: 缺省值。
使用Public时表示所有模块的所有其他过程都可以调用该Function过程。
(2) Private: 使用Private时表示只有本模块中的其他过程才可以调用该Function过程。
(3) Static: 使用Static时表示将过程中的所有局部变量说明为静态变量。
(4) <函数过程名>: Function过程的名称,遵循变量的命名规则。
(5) <形参表>: 表示在调用时要传递给Function过程的参数变量列表。
多个变量之间用逗号隔开。
幻灯片6<形参表>格式:[ByVal|ByRef]<变量名>[( )] [As <类型>]ByVal: 表示该参数按值传递。
ByRef: 缺省值。
表示该参数按地址传递。
<变量名>: 遵循变量命名规则的任何变量名或数组名。
vb第8章全部教案
第八章数组一、引入课题例.输入100个学生的成绩,一起正序输出显示,换行后再一起反序输出。
思路:为了将输入的100个学生的成绩,先一起正序输出显示,换行后再一起反序输出显示。
就必须将这100个成绩一个一个保存起来,显示完一次后,才能再显示一次。
不保存起来,就无法再显示。
问题:如何将这100个成绩一个一个保存起来?基本方法:可以设立一个一个的变量,将这些成绩按顺序赋值给这些变量,就等于保存起来了。
只要保存起来,就可以随意正序、反序输出显示了。
问题:要设立几个变量才够呢?100个成绩就需要100个变量,如何设立100个变量呢?容易想到:用x1, x2, x3, ……, x100?但是如何对x1, x2, x3, ……, x100输入、输出呢?输入100个变量,重复输入100次,必须用循环!循环体如何写呢?是否可以写成:For i=1 To 100xi=InputBox( "请输入成绩X" )Next i不可以!xi只能代表一个变量,它不会随着I的变化,自动变成x1, x2, x3, ……, x100,即xi不可能代表100个变量。
即使输入100个成绩,最后xi只留下一个。
那么应该怎么办呢?能不能将x与i分离,而且实现x不动,但i确实会随着For i 的变化而变化呢?可以!方法:VB的分离方法是x ( i )象x ( i ) 这样的变量称为“数组”(即一组数)。
当i = 1~100变化时,x ( i ) 也跟着一起变化为x(1)、x(2)、x(3)、……、x(100),产生100个变量。
于是,输入100个成绩可以这样解决:For i=1 To 100X ( i ) = InputBox( "请输入成绩X" )Next iVB中象x ( i ) 这样的变量称为“数组”。
前面学的Integer、Long、Single、Double、String、Date、Boolean等都是VB的基本数据类型,可以处理少量的单个数据,称为简单变量。
掌握VB基本数据类型掌握VB中的常量与变量
教学目的要求:
• • • • 掌握VB基本数据类型 掌握VB中的常量与变量 掌握运算符与表达式 了解常用标准函数
教学重点
• 常量与变量 • 运算符与表达式 • 常用标准函数
1
教学难点:
变量的类型定义 运算符的优先级
教学方法:
大屏幕投影演示
时间安排:
4学时
2
2.1 数据类型
3. 字节型(Byte)
是一种无符号整型数,占1个字节 用于存储二进制数据,取值范围:0~255
9
2.1.2 字符串型数据(String)
字符串是一个用双引号括起来的字符序列,由一切可打印 的西文字符和汉字组成
例: “Hello” “123456” “程序设计” “”(空字符串)
10
注意: (1)VB字符串有两种:可变长度字符串和固定长度字符串。 前者指程序执行过程中字符串长度不固定,最多可包含 2^31个字符;后者指在程序执行过程中字符串长度保持不 变的字符串,最大长度为2^16。 (2)双引号在程序代码中起字符串的定界作用。 (3)在字符串中,字母的大小写是有区别的。例如“AB123” 与“ab123”代表两个不同的字符串。 (4)若字符串本身包含双引号,可用连续的两个双引号表示. 例: “You must study hard”, he said. 写成: “ ““You must study hard””,he said.”
28
3 系统定义符号常量
符号常量的定义可以从“对象浏览器”中获得。使用对象浏览器可以显 示包括当前工程及对象库在内的过程、模块、类、属性和方法等的描述 信息。 选择对象库 从菜单栏视图中选择 “对象浏览器”或(F2)
用鼠标单击 某一个符号常量 在“类”列表中选择 所需要的符号常量组 描述框中显示有关该符号常量的定义及描述信息。 例:vbBlue所表示的颜色值为&HFF0000
VB程序设计课件-变量与常量
计算机处理数据时,常用的数据形式有两种,一 是常量,二是变量。
2.1.1 常量
在程序执行的过程中保持不变的数据称为 常量。在VB中,常量分为两种,文字常量和 符号常量。符号常量又分为用户自定义和系统 定义两种。
2.1.1. 常量
1.文字常量
文字常量直接出现在代码中,也称为字面常量或直接常 量,文字常量的表示形式决定它的类型和值。例如:
格式: Const 常量名 =表达式
例如:
Const PI=3.14159 As Single
2.1.2. 变量
变量是在程序运行期间其值可以发生变化的量在 使用变量前,一般应声明变量名及其数据类型。
1. 变量的命名规则
(1)变量名必须以字母开头,后可跟字母、数字 或下划线,长度小于等于255个字符;
6. 逻辑型(Boolean)
逻辑型又称布尔型,其数据只有True(真)和False(假)两个值
7. 日期型(Date)
表示日期和时间 用两个“#”符号把日期和时间的值括起来 如:#08/20/2001#、#2001-08-20#
8. 变体型(Variant)
变体型数据是一种可变的数据类型,可以存放任何类型的数
4. 货币型(Currency) (@)
专门为处理货币而设计的数据类型 它可最多保留小数点右边4位和小数点左边15
5. 字符型(String)
用双引号括起来的一串字符。 例如,“Canton”、”1+2=?”、”Good└┘Morning”等 “” 字符串长度。分变长字符串(长度不固定)和定长字符串(长度 固定) 变长字符串:Dim 变量名 As String 变长字符串:Dim 变量名 As String*size 在VB中,把汉字作为一个字符来处理。
VB8
14
中国药科大学 计算机教研室
通用过程
Visual Basic 程序设计
完成某一特定功能的程序段
——通用过程(自定义)
必须显式调用方可执行; 分为:
公有过程(Public) 私有过程(Private)
15
中国药科大学 计算机教研室
1
通用Sub过程的定义
Visual Basic 程序设计
If a(i) < min Then min = a(i)
Next i
End Sub
25
中国药科大学 计算机教研室
Function 过程
Visual Basic 程序设计
Function过程的特点是返回一个值,因此我们通常也称之 为自定义函数。通常我们利用Function过程得到一个数值或一个 字符串或一个逻辑值。 函数返回值的类型 [格式]:
基本思想:将一个大的程序按功能分割成一些小模块
各模块相对独立、功能单一、结构清晰、接口简单 控制了程序设计的复杂性
提高元件的可靠性
缩短开发周期 避免程序开发的重复劳动 易于维护和功能扩充
开发方法:
自上向下,逐步分解,分而治之
中国药科大学 计算机教研室
4
Visual Basic 程序设计
[一般形式]: [Private|Public] [static] Sub <过程名>([<参数列表>]) <过程体> End Sub
[说明]:
(1) 以Sub开头,End Sub结束,,中间是过程体——包括变量声 明和语句块;
(2) 以Private为前缀的过程是模块级的,以Public为前缀的过 程是应用程序级的,缺省默认是Public;
VB变量的基础知识
VB变量的基础知识本文主要为大家介绍一下Visual Basic变量的基础知识,变量是指在程序运行中,其值可以发生改变的数据。
变量名的命名变量名的命名规则是:255个字符以内,第一个字符是字母,其后可以是字母、数字和下划线的组合,最后一个字符也可以是类型说明符。
通常使用具有一定含义的变量名,可以帮助说明功能,简化调试过程。
保留字不能作为变量名。
变量类型与定义VB中变量都属于一定的数据类型,包括基本数据类型和用户定义数据类型。
在VB中,可以用下面几种方式来规定变量的类型:(1)用类型符来标识把类型符放在变量的尾部,来说明变量的不同类型,类型说明如下:% 表示整型& 表示长整型! 表示单精度型# 表示双精度型@ 表示通用型$ 表示字符型(2)在定义变量时指定其类型在使用变量前,可以用下列格式来说明其类型和作用域:<说明关键字> <变量> As <类型>其中关键字为下列之一:Dim在模块、窗体的过程(子程序)中说明变量或数组,但不能在过程中说明数组。
Static在过程中说明静态变量。
每次调用过程时,用Static语句说明的变量值将保留。
ReDim在过程、函数中说明动态数组及重新分配数组空间。
用Global或Dim定义动态数组后,再用ReDim语句说明数组的大小。
Global在模块中定义全局变量。
类型为前面所讲的数据类型之一(如Integer等)。
例如:(3)用Defrype语句定义格式: .DefInt (字母范围) 定义整型Deft_mg (字母范围) 定义长整型DefSng (字母范围) 定义单精度型DefDbl (字母范围) 定义双精度型DefCur (字母范围) 定义货币型DefStr (字母范围) 定义字符型DefBool (字母范围) 定义布尔型DefByte (字母范围) 定义字节型defdate<字母范围> 定义日期型DefVar <字母范围) 定义通用型DefObj (字母范围) 定义对象型功能:定义以字母开头的变量类型。
VB_常量与变量学习资料(高中用)
3、工程级(全局)变量: 在 “通用”->“声明”中声明。
Public Temp As Integer – 整个工程内都可以使用 Dim和Static的区别: Dim定义的是动态过程变量,只在程序运行期间 存在,不保留值。 Static定义的是静态变量,程序模块运行结束仍 存在,并保留值。 Dim即可用于模块级变量的定义,也可用于过程 级变量的定义;而Static只能定义过程级变量。
VB 的命名约定在编写 VB代码时,要声明和命名许多元素( Sub 和 Function 过程、变量、常数等等)。声明的过程、 变量和常量的名字,必须遵循一定规则。 变量命名规则同常量。
– 1、以字母或汉字开头,其后可以是字母、汉字、数字或下划线字 符(不能包含英文标点符号、空格);
– 2、VB不区分名字中字母的大小写(符号常量一般用大定字母定义) – 3、不得超过255个字符; – 4、不能使用VB的保留字; • 5、同一作用域,不能重名。
8
2.1、 符号常量及命名规则
符号常量的使用增加了代码的可读性,因为我们看到的是具 有含义的名字而不是数字。如Pi表示常量3.1415926535,
特点:一个常量一经声明,就不能在以后的语句中改变它的 数值。 命名规则 :
– 1、必须以字母或汉字开头,而不能以数字或其他字符开头。
– 2、只能由字母、汉字、数字或下划线组成,不能含有小数点、空 格等字符。
A = 100 * 20
21
3.3.4 变量重名问题
1.不允许同名的情况:一般情况下,在同一作用域内不 能定义重名的变量。 2.允许同名的情况:只要不发生冲突就可以。例: – 不同过程中可以定义重名的过程级变量; – 不同模块中可以定义重名的模块级变量;
vb基础教程
VB基础教程1. 什么是VBVB(Visual Basic)是一种基于事件驱动的编程语言,它是Microsoft Visual Studio开发工具的一部分。
VB是一种易于学习和使用的语言,特别适合初学者入门学习编程。
VB提供了丰富的图形用户界面(Graphical User Interface,GUI)设计工具,开发者可以通过可视化的方式来创建窗体、按钮、文本框等界面元素,使得应用程序开发变得更加简单和直观。
2. VB的基本语法2.1 变量与数据类型在VB中,可以使用Dim关键字来声明变量,并指定变量的数据类型。
VB支持多种基本数据类型,包括整数、浮点数、字符串等。
以下是几种常见的数据类型示例:Dim num As Integer'声明一个整数变量Dim pi As Double'声明一个双精度浮点数变量Dim name As String'声明一个字符串变量2.2 运算符在VB中,可以使用各种运算符进行数学运算和逻辑运算。
以下是一些常见的运算符示例:•算术运算符:+、-、*、/、Mod•关系运算符:=、<>、>、<、>=、<=•逻辑运算符:And、Or、Not2.3 控制流程在VB中,可以使用条件语句和循环语句来实现程序的控制流程。
2.3.1 条件语句条件语句用于根据条件的不同执行不同的代码块。
以下是一个条件语句的示例:If condition Then' 如果条件成立,则执行这里的代码ElseIf condition2 Then' 如果条件2成立,则执行这里的代码Else' 如果以上条件都不成立,则执行这里的代码End If2.3.2 循环语句循环语句用于重复执行一段代码块。
以下是两种常见的循环语句示例:•For循环:For i = 1 To 10' 执行代码块Next•Do While循环:Do While condition' 执行代码块Loop2.4 函数和子过程在VB中,可以使用函数和子过程来封装可重用的代码块。
vb8(向阳教学)
说明
控件事件过程名由控件名、下划线和事件名组成。 组成控件事件过程名的控件名必须与窗体中某个 控件相匹配,否则Visual Basic将认为它是一个 通用过程; 控件事件过程也是私有过程,属于包含它的窗体 模块。 例如:在窗体中设置了一个名为Cmdend的命令按 钮控件,它的对应事件过程如下: Private Sub Cmdend_Click()
基础教学
Private | Public选项
以Private为前缀的Sub过程是模块级的 (私有的)过程,只能被本模块内的事件过 程或其它过程调用。以Public为前缀的 Sub过程是应用程序级的(公有的或全局的) 过程,在应用程序的任何模块中都可以调 用它。若缺省 Private | public选项, 则系统默认值为Public。若在一个窗体模 块调用另一个窗体模块中的公有过程时, 必须以那个窗体名字作为该公有过程名的 前缀,即以某窗体名.公有过程名的形式 调用公有过程
基础教学
窗体各事件的发生次序
建立窗体 装入内存
New关键 字或VB 自动建立
Load 语句
窗体被激活
Initialize
Load Activate 所触发的事件
基础教学
定义控件事件过程
控件事件过程的一般形式是: Private Sub 控件名__事件名([参数列表]) 〔局部变量和常数声明〕
语句块 End Sub 说明
基础教学
Static选项
Static选项:Static指定过程中的局部变 量为“静态”变量
基础教学
Sub关键字,过程名
Sub 过程以Sub语句开头,结束于End Sub 语句。在Sub和End Sub之间是描述过程操 作的语句块,称为子程序体或过程体。在 Sub语句之后,是过程的声明段,可以用 Dim或Static语句声明过程的局部变量和 常量 过程名的命名规则与变量命名规则相同。 在同一个模块中,过程名必须唯一。过程 名不能与模块级变量同名,也不能与调用 该过程的调用程序中的局部量同名
Visual Basic 程序设计VB8
SUB 过程
自定义过程与事件过程的区别: 1、从结构形式上看,事件过程名是由控件(对象)名 和事件名连接而成,而自定义过程的名称是由用户起 的一个任意的合法标识符; 2、从启动的机制上看,事件过程是由事件触发,而自 定义过程是由另外的过程来调用运行。 如何建立SUB过程? 方法1 选模块---工具菜单中的添加过程 方法2 工程菜单中的添加模块---模块代码窗口键入过 程的名字。
应用程序 工程文件( .vbp)
窗体模块 (.frm)文件
类模块 (.cls)文件
标准模块 (.bas)文件
函数过程
子过程
事件过程子ຫໍສະໝຸດ 程函数过程SUB 过程
SUB 过程的建立 1、定义 [static][private][public]sub 过程名[(参数表列)] 语句块 [exit sub] [语句块] End sub 过程名前缀是过程的性质,过程不能嵌套 参数表列是形参,格式是: [byval]变量名[()][as 数据类型]
过程与变量的作用域
3、工程级(项目级、全局)变量 在任一文件中,各过程之外,用public语句定义的变 量,作用域为整个工程或整个项目
窗体参数与控件参数
VB可用对象(窗体和控件)作为过程的参数,其类型 是control,(或form) 创建的对象作为实际参数,以地址调用方式 传递给过程,在过程种可以修改对象的属性,使用对 象的方法。 Private Sub fontout(t1 As Control, t2 As Control) t1.FontSize = 24 Private Sub Form_Load() Private Sub Form_Click() t1.Font = "宋体" Text1.Text = "欢迎使用" fontout Text1, Text2 t2.FontSize = 36 Text2.Text = "Visual Basic End Sub t2.Font = "隶书" 6.0" t2.FontItalic = TrueEnd Sub End Sub
讲义-VB变量与表达式及函数
vb变量与表达式一、vb变量及定义程序中要处理各种各样的数据,数据可以按照本身的特性分为若干种不同的类型,常见类型见表1:表1vb常用的基本数据类型注:字母e表示乘方的底数10。
例如7×10和7×10可分别表示为7e5和7e-5数据总是以常量或变量的形式出现在程序中。
常量是在程序运行过程中值不变的存储单元或数据,例如语句 const pi=3.14,就是定义了一个常量pi,在这个程序中出现的所有pi 都会被vb自动转换成3.14。
变量是用来表示数据的存储区,也就是存放数据的容器。
vb变量定义的方法:dim a as integer将a定义为整数型变量(a就是变量名),用于存放整数型数据,其他类型的变量定义类似。
如果定义两个或两个以上的同类型变量可以用语句:dim a,b as integer,就是定义了a,b两个整数型变量。
变量定义时,变量的取名有一定的限制,变量的名称由字母、数字和下划线组成,必须是字母开头,vb系统中已使用的字符不能作为变量名,比如dim long as integer,这句语句就是错误的,因为long是数据类型名,不能再作为变量名了。
(注:其实vb6中也可以使用汉字作为变量名,不过一般不建议使用,因为容易导致程序兼容性变差)在设计求圆面积程序时,写过一段程序r=val(text1.text)s=3.14*r*rtext2.text=str(s)这段程序中r,s是变量名,而且是实数,所以应该在这段程序前加上一句定义变量的语句dim r , s as single(注:之前编写程序时没有加这句变量定义语句,程序也能正常运行是因为vb 能自动识别出程序中的变量,并定义为相关类型,为了规范起见,还是应该在程序开始时定义好程序中用到的变量。
)二、表达式一个表达式中可能包括算术运算、关系运算和逻辑运算等多种基本运算,以及运算中涉及的数据(变量和常量)、常用标准函数等。
vb08
8章窗体及窗体设计窗体和控件是VB作为可视化编程的重要工具,在这两章中介绍窗体及常用控件,如:标签、文本框、列表框、组合框、命令按钮、单选按钮、检查框、框架、滚动条、时钟等基本控件的使用。
-1 窗体概述窗体对象是开发VB程序的一个基本平台,绝大多数控件都要添加在窗体上。
窗体是程序运行时,系统与用户交互操作的实际窗口。
窗体有自己的属性、方法和事件,控制窗体的外观和行为。
例如:窗体的caption属性确定显示在窗体对象标题栏中的内容或最小化图标下的文本;而circle方法则可以在窗体上画一个圆或椭圆。
-2 窗体的属性、事件和方法1、窗体的常用属性设置窗体的属性有两种方法:☆在程序设计时手工在“属性”窗口中设置;☆在程序代码中设置,在程序运行时实现。
窗体的属性不仅影响窗体的外观,还控制着窗体的位置、大小和行为等。
窗体的属性很多,常用的窗体属性有:Caption属性决定窗体标题栏中显示的文本。
MaxButton属性MinButton属性决定窗体是否能最大化或最小化。
它是一个逻辑值。
当属性为True时,窗体右上角有最大化或最小化按钮。
ControlBox属性决定窗体标题栏中是否有控制菜单框,它也是一个逻辑值。
当属性为True时,窗体左上角有控制菜单框。
Moveable属性决定窗体在运行时是否可移动,它是一个逻辑值,当属性为True时,表示窗体可以移动。
MDIChild属性用来设置MDI子窗体,它是一个逻辑值,当属性为True 时,表示该窗体是MDI子窗体。
Borderstyle边框风格属性用来设置窗体的大小及边框的样式,有6种情况Icon属性设置窗体最小化时显示的图标。
VB中的图标文件存放在Graphics\Icons下的子目录中。
WindowState属性决定窗体执行时的显示状态,有3个取值:0 —正常窗口状态,有窗口边界。
1 —最小化状态,以图标方式运行。
2 —最大化状态,无边框,充满整个屏幕。
AutoRedraw属性ShowInTaskbar属性2、窗体的事件窗体最常用的事件有Load、Activate、Deactivate、Click和DblClick 。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VB编程基础教程8–高级变量主题数值在变量中的内部表示variant 变量维护它们所存储的数值的内部表示。
这个表示将决定visual basic 在执行比较操作和其它操作时如何处理这些值。
将值赋予variant 变量时,visual basic 会用最紧凑的表示正确记录这个值。
以后的操作可能使visual basic 改变这个用于特定变量的表示。
(variant 变量不是无类型变量,而是能够随意改变类型的变量。
)这些内部表示与本章前面在“数据类型”中讨论的数据类型相一致。
注意variant 总保持16 位,无论其中存储了什么数据。
对象、字符串和数组,在物理上并非存于variant 之中;在这些情况下,用四个字节的variant 来保持对象引用、或者字符串或数组的指针。
而真正的数据存在其它地方。
很多时候,不必了解visual basic 为特殊变量使用哪一种变量类型;visual basic 会自动转换类型。
若想了解visual basic 正在使用哪种变量类型,可使用vartype 函数。
例如,如果在variant 变量中存储二进制值,visual basic 就会用double 内部表示。
如果知道应用程序并不需要double 值提供的高精度(以及由此而来的低速度),那么将此值转换成single 甚至转换成currency 就可以加快计算速度:if vartype (x) = 5 then x = csng (x) …转换成单精度。
对array 变量,vartype 的值等于数组元素与数据类型返回值之和。
例如,这个数组包含double 值:private sub form_click ()dim dblsample (2) as doublemsgbox vartype (dblsample)end subvisual basic 的今后版本可能会增加新的variant 表示,所以,任何根据vartype 函数的返回值做出判断的代码都应能适当地处理非当前定义的返回值。
详细信息关于vartype 函数的信息,请参阅语言参考中的“vartype 函数”。
关于数组的更详细信息,请参阅本章后面的“数组”。
关于转换数据类型的详细信息,请参阅本章前面的“数据类型”。
variant 变量中存储的numeric 值在variant 变量中存储整个数时,visual basic 使用最紧凑的表示。
例如,若是存储不带小数点的微小的数值,variant 对该值使用integer 表示。
如果此后赋予一个较大的数,则visual basic 将使用long 值,如果这个数非常大或者有小数部分,则visual basic 将使用double 值。
有时想对一个数使用特定表示。
例如,为了在以后的计算中避免舍入误差,可能希望variant 变量将数值作为currency 存储起来。
visual basic 提供了几种转换函数,可以用它们将值转换成指定的类型(参阅本章前面的“转换数据类型”)。
例如,用ccur 函数可将值转换成currency 类型:payperweek = ccur (hours * hourlypay)如果variant 变量不含数或者不含可以解释为数的内容,则对variant 变量执行数学运算或函数计算就会出错。
例如,不能对‟u2… 这个值进行任何算术运算,尽管它包含一个数值字符‟2…,但整个值并非合法的数。
同样不能对值1040ez 进行任何计算,但是,可以对+10 或-1.7e6 进行计算,因为它们是有效的数。
因此经常需要判定variant 变量是否包含可以当作数使用的值。
isnumeric 函数可以完成这样的任务:doanynumber = inputbox (“enter a number”)loop until isnumeric (anynumber)msgbox “the square root is: ” & sqr (anynumber)当visual basic 将一个非数值的表示(如包含一个数的字符串)转换成数值时,它会使用地区设置(在windows 的“控制面板”中规定)来解释千位分隔符、小数点符号和货币符号。
于是,如果windows 的“控制面板”中的国家/地区设置值被设置成美国、加拿大或澳大利亚,则这两个语句将返回true:isnumeric (“$100″)isnumeric (“1,560.50″)而下面两个语句则返回false:isnumeric (“dm100″)isnumeric (“1.560,50″)但是,如果在windows 的“控制面板”中的国家/地区设置值被设置成德国,则情况正好相反:前两个语句返回false,而后两个语句返回true。
如果把包含数的variant 赋给字符串变量或属性,visual basic 自动把数的内部表示转换成字符串。
如果想显式地将数转换成字符串,可以用cstr 函数。
还可以用format 函数将数转换成字符串,字符串包含某种格式,如货币符,千位分隔符和小数点符号。
format 函数按照windows“控制面板”中的“地区设置”对话框自动使用相应的符号。
详细信息请参阅的语言参考中的“format 函数” 以及关于转换函数的主题。
关于编写分布在国外市场的应用程序的更详细信息,请参阅“国际化”。
variant 变量中存储的字符串一般说来,在variant 变量中存储和使用字符串不会出什么问题。
但是如前所述,有时在使用两个variant 值时,” + ” 运算符的结果可能很含糊。
如果两个variant 变量都包含数,则” + ” 运算符执行加法运算。
如果两个variant 变量都包含字符串,则” + ” 运算符执行字符串连接。
但是,如果一个值代表数,而另一个值代表字符串,则情况就很复杂了。
visual basic 首先试图把字符串变成数。
如果转换成功,那么” + ”运算符把两者加在一起;如果不成功,则产生一个“类型不匹配”错误。
为了确保执行的动作为字符串连接,不管变量中的表示如何,都用& 运算符。
例如,以下代码:sub form_click ()dim x ,yx = “6″y = “7″print x + y,x & yx = 6print x + y,x & yend sub在窗体上产生如下结果:67 6713 67注意visual basic 在内部用unicode 存储字符串。
关于unicode 的更详细的信息,请参阅“国际化”。
variant 变量中存储的date/time 值variant 变量还可以包含date/time 值。
有几个函数返回date/time 值。
例如,dateserial 返回该年所剩的天数。
private sub form_click ()dim rightnow ,daysleft ,hoursleft ,minutesleftrightnow = now ‟now 返回当前的date 和time。
daysleft = int(dateserial(year(rightnow) _+ 1, 1, 1) – rightnow)hoursleft = 24 – hour (rightnow)minutesleft = 60 – minute (rightnow)print daysleft & ” days left in the year.”print hoursleft & ” hours left in the day.”print minutesleft & ” minutes left in the hour.”end sub还可以对date/time 值进行运算。
通过加减一个整数来增加或减少天数;通过加减一个分数来增加或减少时间。
所以,加20 就是加20 天,而减掉1/24 就是减去一小时。
存储在variant 变量中的date 值的有效范围从公元0100 年 1 月 1 日到公元9999 年12 月31 日。
计算date 时不考虑gregorian 历法采用之前的日期。
所以如果计算gregorian 历法被采用那年(在英国及其殖民地为1752 年;其它国家/地区则或早一些或晚一些)之前的日期,结果可能会不正确。
在代码中可以采用date/time 文字,只要用一对” # ” 号将它们括起来,如同对字符串用一对双引号( “” ) 括起来一样。
例如,可以将包含date/time 值的variant 和一串表示date 的文字作比较:if somedate > #3/6/93# then下面的例子将包含date/time 值的variant 变量和一串表示date 和time 的文字相比较:if somedate > #3/6/93 1:20pm# then如果date/time 值不包括time,则visual basic 自动将该值的time部分设定为午夜(一天的开始)。
如果date/time 值不包括date,则visual basic 自动将该值的date 部分设定为公元1899 年12 月30 日。
visual basic 接受许多种文字的date 和time 格式。
下面的date/time 值全部有效:somedate = #3-6-93 13:20#somedate = #march 27 ,1993 1:20am#somedate = #apr-2-93#somedate = #4 april 1993#详细信息有关用国际格式处理date 的信息,请参阅“国际化”。
用isnumeric 函数可测试一个variant 变量是否包含一个值,这个值可以看作有效的数值,同样,用isdate 函数可测试一个variant 变量是否包含一个值,这个值可以看作有效的date/time 值。
然后可用cdate 函数将该值转换成date/time值。
例如,以下代码用isdate 测试文本框的text 属性。
如果属性包含被看作有效date 的文本,则visual basic 将此文本转换成date 并计算到年底还有几天。
dim somedate ,daysleftif isdate (text1.text) thensomedate = cdate (text1.text)daysleft = dateserial(year(somedate) + _1, 1, 1) – somedatetext2.text = daysleft & ” days left in the year.”elsemsgbox text1.text & ” is not a valid date.”end if详细信息关于各种date 和time 函数的信息,请参阅的语言参考中的“date function”。