VB注意事项.docx

上传人:b****1 文档编号:14126840 上传时间:2023-06-20 格式:DOCX 页数:20 大小:24.41KB
下载 相关 举报
VB注意事项.docx_第1页
第1页 / 共20页
VB注意事项.docx_第2页
第2页 / 共20页
VB注意事项.docx_第3页
第3页 / 共20页
VB注意事项.docx_第4页
第4页 / 共20页
VB注意事项.docx_第5页
第5页 / 共20页
VB注意事项.docx_第6页
第6页 / 共20页
VB注意事项.docx_第7页
第7页 / 共20页
VB注意事项.docx_第8页
第8页 / 共20页
VB注意事项.docx_第9页
第9页 / 共20页
VB注意事项.docx_第10页
第10页 / 共20页
VB注意事项.docx_第11页
第11页 / 共20页
VB注意事项.docx_第12页
第12页 / 共20页
VB注意事项.docx_第13页
第13页 / 共20页
VB注意事项.docx_第14页
第14页 / 共20页
VB注意事项.docx_第15页
第15页 / 共20页
VB注意事项.docx_第16页
第16页 / 共20页
VB注意事项.docx_第17页
第17页 / 共20页
VB注意事项.docx_第18页
第18页 / 共20页
VB注意事项.docx_第19页
第19页 / 共20页
VB注意事项.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

VB注意事项.docx

《VB注意事项.docx》由会员分享,可在线阅读,更多相关《VB注意事项.docx(20页珍藏版)》请在冰点文库上搜索。

VB注意事项.docx

VB注意事项

VB复习注意事项

方法:

对象可以执行的一个动作,表现为函数或过程。

事件:

对象可以识别的动作。

对象是方法的施出者,是事件的承受者。

VB中几个文件:

工程文件(.VBP):

工程的类型、工程中有几个模块,叫什么,在哪儿……(注意:

用户代码,一句没有)

窗体文件(.FRM):

窗体与控件的属性设置,所有的事件过程,还有一些通用过程,变量定义……

标准模块(.BAS):

变量定义、通用过程

在一个窗体上放置一个对象,进行过若干设置后,运行窗体,发现对象不在窗体上,为什么?

关于Print

Print输出项[分隔符]

Print“A”;

Print“B”

Print“C”

Load与UnLoad是窗体专有的事件

List1.List(序号):

序号从0开始,最大到List1.ListCount-1

ListIndex:

列表项的序号,若为-1,则表示没有选中

List1.List(List1.ListIndex)结果相当于List1.Text

List1.AddItem项目[,序号]

List1.RemoveItem序号

List1.Clear

组合框的Style属性值为0或1时,可以触发Change事件

在Caption属性中,在某个字母前加&,如&F,则表现为F,使用时可以用Alt+F来访问

在菜单中插入分组线,用“-”

多窗体设计时,启动窗体为设计时第一个添加的窗体,可以通过工程属性来改变启动窗体。

事件过程名称构成:

一般对象:

对象名_事件名([参数])

窗体:

Form_事件名([参数])

典型的错误:

Text1.Printkkkk

Form1.Clear

List1.Cls

容器对象:

窗体、图片框、框架

最典型的应用:

用于对选项按钮的分组

可以显示图片的对象:

窗体、图片框、图像、按钮、选项按钮、复选框(后三个必须要将Style属性设置为Graphical)

有Caption属性:

窗体、标签、按钮、选项按钮、复选框、框架

属性窗口中并没有列出一个对象的所有属性。

四类属性:

●既能在设计时改变,又能在运行时改变(例如Text,Visible,Enabled等)

●只能在设计时改变(如Name,Index等)

●只能在运行时改变(如Drive,Path等)

●只读属性(如ListCount等)

前两种属性出现在属性窗口中,后两种则不出现。

几种对象的清空方法:

窗体和图片框:

[对象名.]Cls

列表框与组合框:

对象名.Clear

文本框:

对象名.Text=””

事件过程只能出现在窗体模块中。

数据类型:

字符串String:

有定长与变长之分。

数值数据:

●Integer整型,-32768~32767,两字节,补码表示

●Long长整,四字节,补码表示

●Single单精度,4字节

●Double双精度,8字节

●Byte字节型,1字节,0~255

●Currency货币,8字节

布尔型,Boolean,双字节,只有True和False两个值

日期型,Date,8字节

变体型,Variant

100!

表示100是一个单精度的数,而不是整数

%整型,&长整,!

单精度

#双精度,@货币,$字符串

整数有三种表示方法:

十进制,八进制(&O),十六进制(&H)

若一个整数在[-32768,32767]内,则系统认为是Integer类型,否则认为是Long类型;一个带小数的数,系统认为是Double类型。

变量种类

关键字

定义位置

作用域

生命期

引用方法

局部变量

Dim

过程中

所在过程

所在过程运行时间

所在过程直接使用

模块变量

Dim

Private

模块的通用声明处

所在模块

模块运行时间

模块内各过程直接使用

全局变量

Public

模块的通用声明处

应用程序

应用程序运行时间

[模块名.]变量名

静态变量

Static

过程中

所在过程

应用程序运行时间

所在过程直接使用

(20090412)

+号运算符只有两边的数据都为字符串才是连接,与&功能相同。

&运算符不管前后数据为何类型,总是将两个数据进行连接,结果是字符串。

非整数向整数转换时的规则——“四舍六入五成双”:

若一个数的小数部分大于0.5,则向上进;若小于0.5则舍掉;若等于0.5则要保证结果为偶数。

^与/运算结果为Double类型;

\与Mod要求参与运算的数必须为整数,若不为整数,则按“四舍六入五成双”原则转换成整数,同时结果为整型(Integer或Long或Byte);

+、-、*运算结果:

若运算的两个数类型相同,则结果类型也与其相同,否则,结果类型为在内存中存储长度较长的那种类型。

(Integer*IntegerInteger,Integer*LongLong,Integer*SingleSingle,Single*LongDouble等等)

赋值总是——左值=右值(数据类型的相容):

左为字符串时,右可以为任何数据;

左为数值,右可以为数值、数字字符、布尔值(True-1,False0)、日期时间(日期整数部分,时间小数部分);

左为Boolean,右可以为数值、数字字符(非0True,0False)。

赋值符=,比较符=

要注意题目的描述到底是表达式还是语句,在表达式中只有比较运算,不可以是赋值;在语句中,只有最左边的一个=是赋值号,其余均为比较符。

窗体通用声明处不能定义全局(Public)的常量、全局定长字符串与全局数组。

在窗体通用声明处不可以出现函数运算,只能是基本的运算。

也就是说下面的语句均为错误语句:

PublicConstCityAsString=”苏州”

PublicSAsString*5

PublicA(10)AsInteger

ConstXAsInteger=Int(5.4)

InputBox函数与Text属性的类型是字符串。

Int()(下取整)与Fix()(取整数部分)两个函数不能改变结果类型;而CInt会将结果转换为整型。

Left、Right与Mid三个函数一般是对字符串运算,若运算对象为数,则默认情况下相当于在此数上先加上一个CStr函数转换为字符串后再运算。

Len函数:

功能是返回一个字符串中有多少个字符的(长度)。

若参数不是字符串,则返回的是此种类型在内存中的存储字节数。

(Integer2,Single4,Double8……)

对于定长字符串而言,长度在定义时就已确定,与实际赋值无关。

若超长则截掉,若不够则补空格。

Str将正数转换为字符串时,在最左边保留一个空格作为符号位;而CStr函数将正数转换为字符串时,不保留符号位。

注意三角函数的参数应该为弧度,lnxLog(x),eExp(),

3.14

单行的If语句是不需要加EndIf的。

多行的If语句是必须要加EndIf的。

多分支的If语句中,ElseIf不能写成ElseIf。

SelectCase语句中的匹配表达式(也就是Case后的条件)可以有三种形式:

1.枚举值:

如Case1,3,5,7,8,10,12

2.一个区间:

如Case10To20,Case”A”To“Z”

3.用Is表达的普通条件:

如CaseIs>100

上述三种形式可以出现在一个Case中。

如Case1,3,5,20To30,Is<-50

在For循环中,若循环变量的值在初值与终值的闭区间内,则要循环,否则结束循环。

若有ForI=AToBStepC,其中I是循环变量,A、B、C均为变量,则A、B、C在循环体中的变化是不会影响循环次数的。

For循环中循环变量、初值、终值以及步长应该为整数。

For循环中循环变量的变化是隐藏的。

Do循环分当型(DoWhile)与直到型(DoUntil)两种,每一种又有两种形式:

先循环后判断与先判断后循环。

当型循环是条件成立时执行循环,直到型循环是条件成立时结束循环。

结构的嵌套要求,一个结构把另一个结构完全包围,不能出现交叉。

ExitFor是退出当前一层For循环,与Do循环无关;ExitDo是退出当前一层Do循环,与For循环无关。

(20090419)

VB中一个数组的所有元素的数据类型都是相同的。

一个数组元素可以当作普通变量来使用。

声明数组的时候,如果不指定下标下界,默认为0,若有通用声明处有OptionBase1语句则默认为1。

(有自己的以自己的为准,自己没有,才由OptionBase语句决定)

声明固定数组时,下标只能用常量或常量表达式,且只能为整数,不可以是变量。

Array函数可以将一个变体类型的变量转换为一个一维数组。

动态数组在开始声明时不需要指定维数与维界(如DimA()AsInteger),在使用时需要用ReDim对数组的维数与维界进行说明,且可以多次更改说明。

在重定义数组时,若没有Preserve时,重定义后,数组中原有内容全部清空(即为初始化——把内容变为该数据类型的默认值);若要保留原有内容,则必须加Preserve子句。

有Preserve后,数组的维数便不能被更改;只有最后一个维界可以改变。

特别注意:

重定义数组时,绝对不能改变数组的类型。

Erase语句的功能:

复位固定数组(清空所有元素内容,变成默认值);释放动态数组空间。

对于固定数组,在Erase之后可以直接使用,对于动态数组,在Erase之后必须要用ReDim重定义。

ReDim语句不能出现在窗体通用声明处;窗体通用声明处不能定义全局的数组。

二维数组的输出方法:

窗体上、图片框、多行文本框:

DimA(4,5)AsInteger

DimiAsInteger,jAsInteger

Randomize

Fori=1To4'控制的是行号

Forj=1To5'控制是列号

A(i,j)=Int(90*Rnd)+10

PrintA(i,j);'窗体输出,不换行

Picture1.PrintA(i,j);'图片框输出,不换行

Text1=Text1&Str(A(i,j))'文本框输出,不换行

Next

'内循环结束后要换行

Print

Picture1.Print

Text1=Text1&vbCrLf

Next

事件过程只能出现在窗体中,不能出现标准模块中。

[Public|Private|Static]Sub过程名(形参列表)

过程体(可以有ExitSub语句)

EndSub

[Public|Private]Function函数名(形参列表)[As类型]

函数体(可以有ExitFunction语句)

[函数名=表达式]

EndFunction

函数与过程最大区别在于函数可以返回一个值,而过程不能。

在Sub中不能再嵌套定义Sub或Function,同样,在Function中也不能嵌套定义Sub或Function。

在定义Sub时,末尾是不能加“As类型”的,因为Sub不能返回值。

在定义Function时末尾可以不加“As类型”,表示返回结果为变体型。

Function完全包含了Sub的功能。

调用Sub:

Call过程名(实参列表)

过程名实参列表

调用Function:

(1)变量=函数名(实参列表)

(2)

a)Call函数名(实参列表)

b)函数名实参列表

过程调用结束后,返回到主调用过程的逻辑上下一个要被执行的语句上。

形参不能与过程(函数)名同名。

如:

Subf1(f1AsInteger)是错误的。

形参不可以是定长字符串。

如:

Subsub1(SAsString*2)是错误的。

形参在过程内不能再用Dim语句定义,否则会出现重复声明的错误。

参数传递时,若为按值传递,则要求形参与实参类型相容;若为按地址传递,则要求形参与实参的类型完全相同。

表达式、常量只能按值传递,数组只能按地址传递。

在一个实参变量外加括号可以使得此变量按值传递。

实参传地址给形参后,形参的改变会实时地影响实参。

数组在参数传递时:

作为形参,只需要给出数组名与括号,不能给出维界;在数组名前不能加ByVal。

作为实参时,只需要给出数组名。

数组不能传递给普通变量,反之亦然。

形参是数组,则实参必须是数组;形参是普通变量,则实参可以是普通变量,也可以是数组元素。

若形参是定长字符串数组,则实参也只能是定长字符串数组;若形参是变长字符串数组,则实参也只能是变长字符串数组。

(定长时长度可不同)

(20090426)

形参是数组时,实参既可以是固定数组,也可以动态数组。

若实参传递的是动态数组,则形参可以用ReDim重定义。

实参

形参

变量

变量

数组元素

数组

数组

定长字符串数组

字长字符串数组

变长字符串数组

变长字符串数组

在某个窗体中定义了全局变量与全局过程,在其他模块中引用时,必须要加上窗体名,如:

Form1.Sub1…

静态变量在所定义的过程执行结束后,值仍然保留,在过程下次再执行时可以继续使用。

改变驱动器列表框的ListIndex属性会改变它的Drive属性值,同时触发它的Change事件。

而对于文件夹列表框,改变ListIndex属性不会改变它的Path属性值,因此就不会触发它的Change事件。

实现驱动器列表框与文件夹列表框联动的语句:

在驱动器列表框的Change事件过程中写入如下代码:

Dir1.Path=Drive1.Drive

VB中文件的类型有:

顺序文件、随机文件、二进制文件。

要对文件进行操作,第一步是打开文件,用Open命令。

Open文件路径For模式As#文件号[Len=记录长度]

模式有:

●Input:

只读方式打开顺序文件

●Output:

覆盖方式打开顺序文件

●Append:

添加方式打开顺序文件

●Random

●Binary

缺省For子句,则按Random方式打开。

可以使用Input方式同时以不同的文件号打开一个相同的顺序文件。

使用Output方式时,在正确打开文件后,文件的内容就被清空。

可以使用Binary方式打开任何一种类型的文件。

文件号的范围1~511。

顺序文件的读:

Input、LineInput与Input函数

顺序文件的写:

Print、Write

随机文件与二进制文件的读用Get,写用Put。

关闭文件用Close和Reset。

在一个过程中打开了文件,在其他过程中均可以使用该文件。

在打开文件时,若使用了Lock语句锁定记录,则在关闭文件时,必须要使用Unlock来解锁。

常用算法

'选择法排序(升序)

PrivateSubXuanzepaixu(A()AsInteger)

DimIAsInteger,TAsInteger,JAsInteger

ForI=1To9

ForJ=I+1To10

IfA(I)>A(J)Then

T=A(I)

A(I)=A(J)

A(J)=T

EndIf

Next

Next

EndSub

'冒泡法排序

PrivateSubMaopaopaixu(A()AsInteger)

DimIAsInteger,JAsInteger,TAsInteger

ForI=1To9

ForJ=1To10-I

IfA(J)>A(J+1)Then

T=A(J)

A(J)=A(J+1)

A(J+1)=T

EndIf

Next

Next

EndSub

PrivateSubHebingpaixu(A()AsInteger,B()AsInteger,C()AsInteger)

'合并排序,将两个有序集合,合并后形成的集合仍然有序

'数组下标下界均从1开始

DimUAAsInteger,UBAsInteger,UCAsInteger

DimIAsInteger,JAsInteger,KAsInteger

UA=UBound(A):

UB=UBound(B)

ReDimC(UA+UB)

I=1:

J=1:

K=1

DoWhileI<=UAAndJ<=UB

IfA(I)

C(K)=A(I)

I=I+1

Else

C(K)=B(J)

J=J+1

EndIf

K=K+1

Loop

DoWhileI<=UA

C(K)=A(I)

I=I+1

K=K+1

Loop

DoWhileJ<=UB

C(K)=B(J)

J=J+1

K=K+1

Loop

EndSub

升序数:

PrivateFunctionShengxushu(NAsInteger)AsBoolean

'判断N是否是升序数,若是则返回True

DimSAsInteger,IAsInteger

S=CStr(N)

ForI=1ToLen(S)-1

IfMid(S,I,1)

Next

Shengxushu=True

EndFunction

降序数:

PrivateFunctionJiangxushu(NAsInteger)AsBoolean

'判断N是否是降序数,若是则返回True

DimSAsInteger,IAsInteger

S=CStr(N)

ForI=1ToLen(S)-1

IfMid(S,I,1)>Mid(S,I+1,1)ThenExitFunction

Next

Jiangxushu=True

EndFunction

找最大值:

PrivateFunctionMax(A()AsInteger)AsInteger

DimlbAsInteger,ubAsInteger,IAsInteger

lb=LBound(A)

ub=UBound(A)

Max=A(lb)

ForI=lb+1Toub

IfMax

Next

EndFunction

找最小值:

PrivateFunctionMin(A()AsInteger)AsInteger

DimlbAsInteger,ubAsInteger,IAsInteger

lb=LBound(A)

ub=UBound(A)

Min=A(lb)

ForI=lb+1Toub

IfMin>A(I)ThenMin=A(I)

Next

EndFunction

PrivateFunctionIsExist(NAsInteger,A()AsInteger)AsBoolean

'使用二分法查找。

若N存在于数组A中则返回TRUE,否则返回FALSE

'数组A必须是有序的数组,此处假设为从小到大排列。

DimlbAsInteger,ubAsInteger

DimLAsInteger,MAsInteger,RAsInteger

lb=LBound(A)

ub=UBound(A)

L=lb:

R=ub

DoWhileL<=R

M=(L+R)/2

IfA(M)=NThen

IsExist=True

ExitFunction

ElseIfA(M)

L=M+1

Else

R=M-1

EndIf

Loop

EndFunction

最大公约数与最小公倍数;

PrivateFunctionGcd(MAsInteger,NAsInteger)AsInteger‘最大公约数

  DimRAsInteger

  R=MModN

  DoWhileR<>0

    M=N

    N=R

    R=MModN

  Loop

  Gcd=N

EndFunction

PrivateFunctionLcm(MAsInteger,NAsInteger)AsLong‘最小公倍数

  DimRAsLong

  IfM>NThenR=NElseR=M

  Lcm=R

  Do

    IfLcmModN=0AndLcmModM=0Then

      ExitFunction

    Else

      Lcm=Lcm+R

    EndIf

  Loop

EndFunction

PrivateFunctionnixu(NAsInteger)AsInteger‘逆序数

  Do

    nixu=nixu*10+NMod10

    N=N\10

  LoopWhileN>0

EndFunction

PrivateFunctionhuiwen(NAsInteger)AsBoolean‘回文数

  DimSAsString,LAsInteger,IAsInteger

  S=CStr(N)

  L=Len(S)

  ForI=1ToL/2

    IfMid(S,I,1)<>Mid(S,L-I+1,1)ThenExitFunction

  Next

  huiwen=True

EndFunction

'统计一个数中有几个不同的数字

PrivateSubCommand1_Click()

DimNAsLong,SAsString,IAsInteger

DimSt(0To9)AsInteger,chAsString

DimSumAsInteger

Randomize

N=Int(900000*Rnd)+100000

PrintN

S=CStr(N)

ForI=1ToLen(S)

ch=Mid(S,I,1)

St(Val(ch))=1

Next

ForI=0To9

Sum=Sum+St(I)

Next

PrintSum

EndSub

 

1、编程求出1

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2