版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VisualBasic6.0实验指导书2013
实验1:VisualBasic的基本操作实验目的掌握基本的VisualBasic集成开发环境的使用掌握基本的VisualBasic窗体程序开发流程掌握窗体属性的修改和设置掌握标签(Label)、按钮(CommandButton)、滚动条(ScrollBar)、时间计时器控件(Timer)的使用。实验内容打开VisualBasic6.0的集成开发环境,创建一个新的项目(project),然后保存到以自己的学号为目录名的文件夹中;创建如下的窗体程序:程序运行时,鼠标拖动6滚动条来调整移动速度,速度越大移动越快,速度显示在4标签上;按7“开始”按钮开始运动,运动时2标签左右移动,当到达边界的时候则反向运动,同时标签上显示当前的系统时间,同时按钮的文字变为“暂停”。图1-1UI规划图1-2运行时的界面实验指导打开VB集成开发环境,选择菜单“文件”--“新建工程”,创建一个新的“标准EXE”项目,然后选择“文件”--“保存工程”,在硬盘上创建一个以自己学号为名字的目录,然后保存所有的文件在那个目录中。按照图1-1所示添加相应的控件,并修改相关的属性,如下表所示:序号窗口/控件类型属性名属性值说明1窗体(Form)名称Form1caption实验1:运动的时间窗体的标题2标签(Label)名称LbMoveTimecaption(空)初始值为空,等到时间时就设置为当前时间3标签(Label)名称Lable2Caption移动速度:标签4标签(Label)名称lbMoveSpeedCaption10速度值,10是初始值5计时器(Timer)名称Timer1EnabledFalse设置计时器初始不打开Interval1000设置计时器时间间隔(1000为1000毫秒ms,即为1秒)6水平滚动条(HScroll)名称hsMoveSpeedMin10最小值(滚动条最左端)Max1000最大值(滚动条最右端)SmallChange1最小递增(减)值(按最左最右的箭头按钮)LargeChange100最大递增(减)值(按滚动条的空白区域)Value10当前滚动条滑块的数值7命令按钮(CommandButton)名称cbStartCaption开始编写下面的事件处理程序:(注意,写下面的程序时,先转到代码窗口,在左上角下拉列表中先选择控件变量,然后在右上角下拉列表中选择对应事件,在生成的代码块中编写代码,注意行号不用写)PrivateSubcbStart_Click()PrivateSubcbStart_Click()Timer1.Enabled=NotTimer1.EnabledIf(Timer1.Enabled=True)ThencbStart.Caption="暂停"ElsecbStart.Caption="开始"EndIfEndSubPrivateSubhsMoveSpeed_Change()lbMoveSpeed.Caption=hsMoveSpeed.ValueTimer1.Interval=1010-hsMoveSpeed.ValueEndSubPrivateSubTimer1_Timer()StaticstepxAsIntegerConstSTEP_VALUE=100If(stepx=0)Thenstepx=STEP_VALUEIf(lbMoveTime.Left+lbMoveTime.Width>Form1.Width)Thenstepx=-STEP_VALUEIf(lbMoveTime.Left<=0)Thenstepx=STEP_VALUElbMoveTime.Left=lbMoveTime.Left+stepxlbMoveTime.Caption=NowEndSub思考题上面的第14行为什么要用static?上面的第11行为什么不直接Timer1.Interval=hsMoveSpeed.Value?简单说明如何实现按钮的文字变化。
实验2:窗体综合设计实验目的掌握框架(Frame)、文本框(TextBox)、复选框(CheckBox)、选项按钮(OptionButton)、列表框(ListBox)、下拉列表框(ComboBox),图像框(Image)、图形框(PictureBox)的使用;掌握驱动器列表框(DriveListBox)、目录列表框(DirListBox)、文件列表框(FileListBox)的使用;掌握鼠标事件处理的一般方法。掌握多窗口的相互调用。掌握VB中绘图的方式。实验内容创建如图2-1的画图板应用程序,完成图中所示功能图2-1画图板主窗体标准色包括:"白色","黑色","红色","绿色","黄色","蓝色","品红"读取图片是打开图2-2窗体,右上角是图片预览:图2-2读取图像文件窗体图2-3保存文件对话框保存图片时打开图2-3对话框。实验指导打开VB6.0集成开发环境,选择菜单“文件”---“新建工程”,再选择“文件”---“保存工程”,新建一个以自己学号为名字的文件夹,把所有文件保存在这个文件夹中;对缺省的窗体,作为主窗体,添加控件并设置其相关属性,如图2-4和表2-1所示:图2-4主窗体及其控件安排表2-1主窗体及其控件属性设置序号窗体或控件类型属性属性值说明1窗体(Form)名称mainFormBorderStyle1设置窗体不能自由改变大小Caption画图板标题2框架(Frame)名称Frame1Caption画图工具箱3列表框(ListBox)名称lsDrawTool4框架(Frame)名称Frame2Caption填充选项5复选框(CheckBox)名称ckSolidFillCaption实心填充6框架(Frame)名称Frame4Caption线粗细7选项按钮(OptionButton)名称opLineWeightCaption细线ValueTrue设置为真表示为缺省这个选项被选中Index0创建控件数组,下标为08选项按钮(OptionButton)名称opLineWeightCaption中线ValueFalse没被选中Index1创建控件数组,下标为19选项按钮(OptionButton)名称opLineWeightCaption粗线ValueFalseIndex210框架(Frame)名称Frame5Caption调色板11标签(Label)名称lbColorPad用于显示颜色Caption(空)BorderStyle1加上边框12标签(Label)名称Label1Caption标准色:13组合列表框(ComboBox)名称clStandardColor用于选择标准颜色Style2只能下拉选择,不能自己输入14标签(Label)名称Label3CaptionR15标签(Label)名称Label4CaptionG16标签(Label)名称Label5CaptionB17水平滚动条(HScroll)名称hsRed设置红色分量0~255Min0max255SmallChange1LargeChange10value018水平滚动条(HScroll)名称hsGreen设置绿色分量0~255Min0max255SmallChange1LargeChange10value019水平滚动条(HScroll)名称hsBlue设置蓝色分量0~255Min0max255SmallChange1LargeChange10value020命令按钮(CommandButton)名称cbLoadFileCaption读取图片21命令按钮(CommandButton)名称cbSaveFileCaption保存图片22标签(Label)名称lbFileFullName保存文件名的全路径Caption(空)BorderStyle1加上边框23图形框(PictureBox)名称pbDrawBox画图区域AutoRedrawTrue设为true才能保存自己的图形在主窗体的代码窗口中,编写下列代码(注意,写下面的程序时,先转到代码窗口,在左上角下拉列表中先选择控件变量,然后在右上角下拉列表中选择对应事件,在生成的代码块中编写代码,注意行号不用写)DimbeDrawingAsBoolean,x1AsInteger,y1AsInteger,x2AsInteger,y2AsIntegerDimbeDrawingAsBoolean,x1AsInteger,y1AsInteger,x2AsInteger,y2AsIntegerPrivateSubcbLoadFile_Click()loadFileForm.ShowvbModalIf(lbFileFullName.Caption<>"")ThenpbDrawBox.Picture=LoadPicture(lbFileFullName.Caption)EndIfEndSubPrivateSubcbSaveFile_Click()DimsAsStrings=InputBox("请输入文件名(不要输入扩展名)","保存文件对话框")If(s<>"")ThenlbFileFullName.Caption=App.Path&"\"&s&".bmp"SavePicturepbDrawBox.Image,lbFileFullName.CaptionEndIfEndSubPrivateSubclStandardColor_Click()lbColorPad.BackColor=clStandardColor.ItemData(clStandardColor.ListIndex)EndSubPrivateSubForm_Load()Dims1,s2,s3,iAsIntegers1=Array("白色","黑色","红色","绿色","黄色","蓝色","品红")s2=Array(vbWhite,vbBlack,vbRed,vbGreen,vbYellow,vbBlue,vbMagenta)Fori=0ToUBound(s1)clStandardColor.AddItems1(i),iclStandardColor.ItemData(i)=s2(i)NexticlStandardColor.ListIndex=1clStandardColor.ListIndex=1lbColorPad.BackColor=s2(1)s3=Array("画圆","画直线段","画矩形","自由线段")Fori=0ToUBound(s3)lsDrawTool.AddItems3(i),iNextilsDrawTool.ListIndex=0EndSubPrivateSubhsBlue_Change()lbColorPad.BackColor=RGB(hsRed.Value,hsGreen.Value,hsBlue.Value)EndSubPrivateSubhsGreen_Change()lbColorPad.BackColor=RGB(hsRed.Value,hsGreen.Value,hsBlue.Value)EndSubPrivateSubhsRed_Change()lbColorPad.BackColor=RGB(hsRed.Value,hsGreen.Value,hsBlue.Value)EndSubPrivateSubpbDrawBox_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)SelectCaselsDrawTool.TextCase"画圆","画直线段","画矩形"x1=X:y1=Yx2=X:y2=YpbDrawBox.DrawMode=vbNotXorPenIf(ckSolidFill.Value=vbChecked)ThenpbDrawBox.FillStyle=0pbDrawBox.FillColor=lbColorPad.BackColorElseIf(ckSolidFill.Value=vbUnchecked)ThenpbDrawBox.FillStyle=1EndIfIf(opLineWeight(0).Value=True)ThenpbDrawBox.DrawWidth=1If(opLineWeight(1).Value=True)ThenpbDrawBox.DrawWidth=10If(opLineWeight(2).Value=True)ThenpbDrawBox.DrawWidth=50beDrawing=TrueCase"自由线段"pbDrawBox.Circle(X,Y),10,lbColorPad.BackColorbeDrawing=TrueEndSelectEndSubPrivateSubpbDrawBox_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)DimxcAsInteger,ycAsIntegerIf(beDrawing=True)ThenSelectCaselsDrawTool.TextCase"画圆"pbDrawBox.Circle(x1,y1),Sqr((x2-x1)^2+(y2-y1)^2),lbColorPad.BackColorpbDrawBox.Circle(x1,y1),Sqr((X-x1)^2+(Y-y1)^2),lbColorPad.BackColorx2=X:y2=YCase"画直线段"pbDrawBox.Line(x1,y1)-(x2,y2),lbColorPad.BackColorpbDrawBox.Line(x1,y1)-(X,Y),lbColorPad.BackColorx2=X:y2=YCase"画矩形"pbDrawBox.Line(x1,y1)-(x2,y2),lbColorPad.BackColor,BpbDrawBox.Line(x1,y1)-(X,Y),lbColorPad.BackColor,Bx2=X:y2=YCase"自由线段"pbDrawBox.Circle(X,Y),10,lbColorPad.BackColorEndSelectEndIfEndSubPrivateSubpbDrawBox_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)If(beDrawing=True)ThenSelectCaselsDrawTool.TextCase"画圆"pbDrawBox.Circle(x1,y1),Sqr((x2-x1)^2+(y2-y1)^2),lbColorPad.BackColorpbDrawBox.DrawMode=vbCopyPenpbDrawBox.Circle(x1,y1),Sqr((X-x1)^2+(Y-y1)^2),lbColorPad.BackColorbeDrawing=FalseCase"画直线段"pbDrawBox.Line(x1,y1)-(x2,y2),lbColorPad.BackColorpbDrawBox.DrawMode=vbCopyPenpbDrawBox.Line(x1,y1)-(X,Y),lbColorPad.BackColorbeDrawing=FalseCase"画矩形"pbDrawBox.Line(x1,y1)-(x2,y2),lbColorPad.BackColor,BpbDrawBox.DrawMode=vbCopyPenpbDrawBox.Line(x1,y1)-(X,Y),lbColorPad.BackColor,BbeDrawing=FalseCase"自由线段"beDrawing=FalseEndSelectpbDrawBox.FillStyle=1EndIfEndSub选择菜单“工程”---“添加窗体”,创建一个新的窗体来作为读取文件的对话框,添加控件并设置属性,如图2-5和表2-2。图2-5读取文件对话框表2-2读取文件对话框窗体及控件的属性设置序号窗体或控件类型属性属性值说明1窗体(Form)名称loadFileFormCaption读取图像文件BorderStyle1设置窗体不能自由改变大小2驱动器列表框(DriveListBox)名称Drive13目录列表框(DirListBox)名称Dir14文件列表框(FireListBox)名称File1Pattern*.bmp设置显示文件类型5图像控件(Image)名称imPreview显示预览图StretchTrue图像自动缩放适应控件大小6命令按钮(CommandButton)名称cbLoadCaption读取文件7命令按钮(CommandButton)名称cbCancelCaption取消编写读取文件对话框的事件处理代码PublicfilenameAsStringPublicfilenameAsStringPrivateSubcbCancel_Click()UnloadMeEndSubPrivateSubcbLoad_Click()mainForm.lbFileFullName.Caption=filenameUnloadMeEndSubPrivateSubDir1_Change()File1.Path=Dir1.PathEndSubPrivateSubDrive1_Change()Dir1.Path=Drive1.DriveEndSubPrivateSubFile1_Click()filename=File1.Path&"\"&File1.filenameimPreview.Picture=LoadPicture(filename)EndSub思考为什么显示读取文件对话框要用vbModal(模式对话框)?如何在主窗体中获取另一个对话框中控件的内容?如何知道调用读取文件对话框时用户是选择“读取”而不是“取消”?读取和保存图片文件是如何进行的?如何在鼠标绘图时实现动态擦除临时画出的图形?
实验3:VB文件操作实验目的熟练掌握VB中对基本文件的打开、关闭、读、写操作;熟练掌握VB中对字符串的基本操作。实验内容创建一个普通V带轮的查询程序,关键数据保存在文件中,通过读取文件中的数据进行查询,界面如图3-1。图3-1V带轮标准直径查询程序数据文件格式为文本文件,内容如下表3-1,文件名为“普通V带轮标准直径数据表.txt”,放在和项目文件相同的文件夹中。表3-1普通V带轮标准直径数据表文件内容[型号]YZABCDE-end-[基准直径]2022.4252831.535.54045505663717580859095100106112118125132140150160170180200212224236250265280315355375400425450475500530560630710800900100011201250160020002500-end-[外径]23.225.638.7,5459.2,6066.2,670,750,79,80.583.2,84,85.50,0,90.593.2,94,95.50,0,100.5103.2,104,105.50,0,111.5115.2,116,117.50,0,123.5128.2,129,130.5,1320,0,137.5,1390,144,145.5,1470,154,155.5,157-end-该表来自下表:基准直径dd带型YZABCDE外径da2023.222.425.6……5053.254757980.5……实验指导顺序文本文件读写文件的打开和关闭:Open语句能够对文件输入/输出(I/O)。语法OpenpathnameFormode[Accessaccess][lock]As[#]filenumber[Len=reclength]Open语句的语法具有以下几个部分:部分描述pathname必要。字符串表达式,指定文件名,该文件名可能还包括目录、文件夹及驱动器。mode必要。关键字,指定文件方式,有Append、Binary、Input、Output、或Random方式。如果未指定方式,则以Random访问方式打开文件。access可选。关键字,说明打开的文件可以进行的操作,有Read、Write、或ReadWrite操作。lock可选。关键字,说明限定于其它进程打开的文件的操作,有Shared、LockRead、LockWrite、和LockReadWrite操作。filenumber必要。一个有效的文件号,范围在1到511之间。使用FreeFile函数可得到下一个可用的文件号。reclength可选。小于或等于32,767(字节)的一个数。对于用随机访问方式打开的文件,该值就是记录长度。对于顺序文件,该值就是缓冲字符数。说明对文件做任何I/O操作之前都必须先打开文件。Open语句分配一个缓冲区供文件进行I/O之用,并决定缓冲区所使用的访问方式。如果pathname指定的文件不存在,那么,在用Append、Binary、Output、或Random方式打开文件时,可以建立这一文件。如果文件已由其它进程打开,而且不允许指定的访问类型,则Open操作失败,而且会有错误发生。如果mode是Binary方式,则Len子句会被忽略掉。重要在Binary、Input和Random方式下可以用不同的文件号打开同一文件,而不必先将该文件关闭。在Append和Output方式下,如果要用不同的文件号打开同一文件,则必须在打开文件之前先关闭该文件。Open语句示例本示例示范Open语句的不同用法来做到文件的输出与输入。下列代码以顺序输入模式打开TESTFILE文件。Open"TESTFILE"ForInputAs#1'若要以其他方式打开文件,必需先关闭此文件。Close#1下列代码以只允许写操作的二进制方式打开文件。Open"TESTFILE"ForBinaryAccessWriteAs#1'若要以其他方式打开文件,必需先关闭此文件。Close#1下列代码以随机方式打开文件,文件中含有用户自定义数据类型Record的记录。TypeRecord'定义用户自定义数据类型。IDAsIntegerNameAsString*20EndTypeDimMyRecordAsRecord'声明变量。Open"TESTFILE"ForRandomAs#1Len=Len(MyRecord)'若要以其他方式打开文件,必需先关闭此文件。Close#1下列代码以顺序输出方式打开文件;任何过程都可以读写该文件。Open"TESTFILE"ForOutputSharedAs#1'若要以其他方式打开文件,必需先关闭此文件。Close#1下列代码以只允许读的二进制方式打开文件;其他过程不可以读该文件。Open"TESTFILE"ForBinaryAccessReadLockReadAs#1Close语句关闭Open语句所打开的输入/输出(I/O)文件。语法Close[filenumberlist]可选的filenumberlist参数为一个或多个文件号,其中filenumber为任何有效的文件号,语法如下:[[#]filenumber][,[#]filenumber]...说明若省略filenumberlist,则将关闭Open语句打开的所有活动文件。当关闭Output或Append打开的文件时,将属于此文件的最终输出缓冲区写入操作系统缓冲区。所有与该文件相关联的缓冲区空间都被释放。在执行Close语句时,文件与其文件号之间的关联将终结。文件读写:LineInput#语句从已打开的顺序文件中读出一行并将它分配给String变量。语法LineInput#filenumber,varnameLineInput#语句的语法具有以下几个部分:部分描述filenumber必要。任何有效的文件号。varname必要。有效的Variant或String变量名。说明通常用Print#将LineInput#语句读出的数据从文件中写出来。LineInput#语句一次只从文件中读出一个字符,直到遇到回车符(Chr(13))或回车–换行符(Chr(13)+Chr(10))为止。回车–换行符将被跳过,而不会被附加到字符串上。LineInput#语句示例本示例使用LineInput#语句从顺序文件中读入一行数据,并将该行数据赋予一个变量。本示例假设TESTFILE文件内含数行文本数据。DimTextLineOpen"TESTFILE"ForInputAs#1'打开文件。DoWhileNotEOF(1)'循环至文件尾。LineInput#1,TextLine'读入一行数据并将其赋予某变量。Debug.PrintTextLine'在立即窗口中显示数据。LoopClose#1'关闭文件。Input#语句从已打开的顺序文件中读出数据并将数据指定给变量。语法Input#filenumber,varlistInput#语句的语法具有以下几个部分:部分描述filenumber必要。任何有效的文件号。varlist必要。用逗号分界的变量列表,将文件中读出的值分配给这些变量;这些变量不可能是一个数组或对象变量。但是,可以使用变量描述数组元素或用户定义类型的元素。说明通常用Write#将Input#语句读出的数据写入文件。该语句只能用于以Input或Binary方式打开的文件。在读出数据时不经修改就可直接将标准的字符串或数值数据指定给变量。下表说明如何处理其它输入数据:数据指定给变量的值分隔逗号或空白行Empty#NULL#Null#TRUE#or#FALSE#True或False#yyyy-mm-ddhh:mm:ss#用表达式表示的日期与/或时间#ERRORerrornumber#errornumber(此变量是一个Variant,用来标记错误)输入数据中的双引号符号("")将被忽略。文件中数据项目的顺序必须与varlist中变量的顺序相同,而且与相同数据类型的变量匹配。如果变量为数值类型而数据不是数值类型,则指定变量的值为零。在输入数据项目时,如果已到达文件结尾,则会终止输入,并产生一个错误。注意为了能够用Input#语句将文件的数据正确读入到变量中,在将数据写入文件时,要使用Write#语句而不使用Print#语句。使用Write#语句可以确保将各个单独的数据域正确分隔开。Input#语句示例本示例使用Input#语句将文件内的数据读入两个变量中。本示例假设TESTFILE文件内含数行以Write#语句写入的数据;也就是说,每一行数据中的字符串部分都是用双引号括起来,而与数字用逗号隔开,例如,("Hello",234)。DimMyString,MyNumberOpen"TESTFILE"ForInputAs#1'打开输入文件。DoWhileNotEOF(1)'循环至文件尾。Input#1,MyString,MyNumber'将数据读入两个变量。Debug.PrintMyString,MyNumber'在立即窗口中显示数据。LoopClose#1'关闭文件。Print#语句将格式化显示的数据写入顺序文件中。语法Print#filenumber,[outputlist]Print#语句的语法具有以下几个部分:部分描述filenumber必要。任何有效的文件号。outputlist可选。表达式或是要打印的表达式列表。设置outputlist参数的设置如下:[{Spc(n)|Tab[(n)]}][expression][charpos]设置描述Spc(n)用来在输出数据中插入空白字符,而n指的是要插入的空白字符数。Tab(n)用来将插入点定位在某一绝对列号上,这里,n是列号。使用无参数的Tab将插入点定位在下一个打印区的起始位置。expression要打印的数值表达式或字符串表达式。charpos指定下一个字符的插入点。使用分号将插入点定位在上一个显示字符之后。用Tab(n)将插入点定位在某一绝对的列号上,用无参数的Tab将插入点定位在下一个打印区的起始处。如果省略charpos,则在下一行打印下一个字符。说明通常用LineInput#或Input读出Print#在文件中写入的数据。如果省略参数outputlist,而且,filenumber之后只含有一个列表分隔符,则将一空白行打印到文件中。多个表达式之间可用一个空白或一个分号隔开。空白与分号等效。对于Boolean类型的数据,打印的是True或False。无论在什么国别,都不将True和False这两个关键字翻译出来。使用操作系统所能够辨认的标准短日期格式可将Date类型的数据写入文件中。在未指定日期或时间部件或这些部件的设置为零时,只将指定的部分写入文件中。如果outputlist的数据是Empty,则不将任何数据写入文件。但是,如果outputlist的数据是Null,则将Null写入文件。对于Error类型的数据而言,输出的数据看起来与Errorerrorcode一样。而且无论在什么地区,都不将Error关键字翻译出来。用Print#写入文件的所有数据都是国际通用的;也就是说,可以正确利用十进制分隔符将这些数据格式化。因为Print#将数据的图像写入文件,所以必须将各项数据分隔开来,以便正确打印。如果使用无参数的Tab将打印位置移动到下一个打印区,则Print#也会将打印字段之间的空白写入文件中。注意如果今后想用Input#语句读出文件的数据,就要用Write#语句而不用Print#语句将数据写入文件。因为在使用Write#时,将数据域分界就可确保每个数据域的完整性,因此可用Input#再将数据读出来。使用Write#还能确保任何地区的数据都被正确读出。Print#语句示例本示例使用Print#语句将数据写入一个文件。Open"TESTFILE"ForOutputAs#1'打开输出文件。Print#1,"Thisisatest"'将文本数据写入文件。Print#1,'将空白行写入文件。Print#1,"Zone1";Tab;"Zone2"'数据写入两个区(printzones)。Print#1,"Hello";"";"World"'以空格隔开两个字符串。Print#1,Spc(5);"5leadingspaces"'在字符串之前写入五个空格。Print#1,Tab(10);"Hello"'将数据写在第十列。'赋值Boolean、Date、Null及Error等。DimMyBool,MyDate,MyNull,MyErrorMyBool=False:MyDate=#February12,1969#:MyNull=NullMyError=CVErr(32767)'True、False、Null及Error会根据系统的地区设置自动转换格式。'日期将以标准的短式日期的格式显示。Print#1,MyBool;"isaBooleanvalue"Print#1,MyDate;"isadate"Print#1,MyNull;"isanullvalue"Print#1,MyError;"isanerrorvalue"Close#1'关闭文件。字符串的操作字符串处理关键字总结作用关键字比较两个字符串。StrComp变换字符串。StrConv大小写变换。Format,LCase,UCase建立重复字符的字符串。Space,String计算字符串长度。Len设置字符串格式。Format重排字符串。LSet,RSet处理字符串。InStr,Left,LTrim,Mid,Right,RTrim,Trim设置字符串比较规则。OptionCompare运用ASCII与ANSI值。Asc,Chr字符串的比较、查询操作StrComp函数返回Variant(Integer),为字符串比较的结果。语法StrComp(string1,string2[,compare])StrComp函数的语法有下面的命名参数:部分说明string1必要参数。任何有效的字符串表达式。string2必要参数。任何有效的字符串表达式。Compare可选参数。指定字符串比较的类型。如果compare参数是Null,将发生错误。如果省略compare,OptionCompare的设置将决定比较的类型。设置compare参数设置为:常数值描述vbUseCompareOption-1使用OptionCompare语句设置执行一个比较。vbBinaryCompare0执行一个二进制比较。vbTextCompare1执行一个按照原文的比较。vbDatabaseCompare2仅适用于MicrosoftAccess,执行一个基于数据库信息的比较。返回值StrComp函数有下列返回值:如果StrComp返回string1小于string2-1string1等于string20string1大于string21string1或string2为NullNull“=”比较符直接进行字符串的比较,结果只有true(完全相同)和false(不同)之分,大小写区分。Like运算符用来比较两个字符串。语法result=stringLikepatternLike运算符的语法具有以下几个部分:部分描述result必需的;任何数值变量。string必需的;任何字符串表达式。pattern必需的;任何字符串表达式,遵循“说明”中的模式匹配约定。说明如果string与pattern匹配,则result为True;如果不匹配,则result为False。但是如果string或pattern中有一个为Null,则result为Null。Like运算符的特性随着OptionCompare语句而不同。每个模块的缺省字符串比较方法是OptionCompareBinary。在字符串比较中,OptionCompareBinary的结果是根据字符的内部二进制表示法导出的排序顺序得到的。在MicrosoftWindows中,排序顺序由代码页决定。下例说明通常二进制的排序顺序:A<B<E<Z<a<b<e<z<_<_<_<_<_<�在字符串比较中,OptionCompareText的结果是字符串比较,它建立在不区分大小写的文本排序顺序基础上,而这一排序顺序是由系统的国别确定的。在对相同的字符使用OptionCompareText时会产生以下文本排序顺序:(A=a)<(_=_)<(B=b)<(E=e)<(_=_)<(Z=z)<(_=_)内建的模式匹配功能提供了多种工具来进行字符串比较。有了模式匹配功能就可以使用通配符、字符串列表或字符区间的任何组合来匹配字符串。下列表格指出pattern中允许的字符以及它们与什么进行匹配:pattern中的字符符合string中的?任何单一字符。*零个或多个字符。#任何一个数字(0–9)。[charlist]charlist.中的任何单一字符。[!charlist]不在charlist中的任何单一字符。在中括号([])中,可以用由一个或多个字符(charlist)组成的组与string中的任一字符进行匹配,这个组几乎包括任何一个字符代码以及数字。注意为了与左括号([)、问号(?)、数字符号(#)和星号(*)等特殊字符进行匹配,可以将它们用方括号括起来。不能在一个组内使用右括号(])与自身匹配,但在组外可以作为个别字符使用。通过在范围的上、下限之间用连字符(–),charlist可以指定字符的范围。例如,如果string中相应字符的位置包括A–Z之间的任意大写字母,则[A-Z]得到一个匹配。不需要分界符,方括号内就可以包括多个范围。指定范围的意义取决于运行时的有效字符排序(正如OptionCompare和系统的国别设置所确定的,代码在运行之中)。使用OptionCompareBinary示例可以看到,范围[A–E]与A、B和E相匹配。通过OptionCompareText可以看到,[A–E]与A,a,_,_,B,b,E,e相匹配。此范围与_或_不匹配,因为按照排序顺序,重音字符在非重音字符之后。下面列举的是模式匹配的其它重要规则:charlist开头的惊叹号(!)意味着,如果在string中找到任何不属于charlist的字符,则存在一个匹配。如果在方括号之外使用惊叹号,则惊叹号与自身匹配。连字符(–)可以出现在charlist的开头(如果使用惊叹号,则在惊叹号之后),也可以出现在charlist的结尾与自身匹配。在任何其它地方,连字符用来识别字符的范围。当指定了字符范围时,这些字符必须按照升序(从最小到最大)顺序来显示。[A-Z]是有效模式,但[Z-A]不是。字符序列[]被看作是长度为零的字符串("")。某些语言的字母表中有一些特殊字符,它们表示两个分开的字符。例如,在一些语言中,当字符"a"与"e"同时出现时,用"_"来表示字符"a"与"e"。Like运算符可以辨认出单一的特殊字符和两个个别字符是否相等。当一个语言使用了一个特殊字符,而且这个字符在系统地区设置中已被指定的时候,在pattern或string中出现的单一特殊字符将与其他字符串中等价的两个字符相匹配。与此相似,由方括号括起来的pattern中的单一特殊字符(字符本身在列表或范围内)将与string中等价的两个字符序列匹配。使用Like运算符做字符串的方式比较。DimMyCheckMyCheck="aBBBa"Like"a*a"'返回True。MyCheck="F"Like"[A-Z]"'返回True。MyCheck="F"Like"[!A-Z]"'返回False。MyCheck="a2a"Like"a#a"'返回True。MyCheck="aM5b"Like"a[L-P]#[!c-e]"'返回True。MyCheck="BAT123khg"Like"B?T*"'返回True。MyCheck="CAT123khg"Like"B?T*"'返回False。InStr函数返回Variant(Long),指定一字符串在另一字符串中最先出现的位置。语法InStr([start,]string1,string2[,compare])InStr函数的语法具有下面的参数:部分说明start可选参数。为数值表达式,设置每次搜索的起点。如果省略,将从第一个字符的位置开始。如果start包含Null,将发生错误。如果指定了compare参数,则一定要有start参数。string1必要参数。接受搜索的字符串表达式。string2必要参数。被搜索的字符串表达式。Compare可选参数。指定字符串比较。如果compare是Null,将发生错误。如果省略compare,OptionCompare的设置将决定比较的类型。设置
compare参数设置为:常数值描述vbUseCompareOption-1使用OptionCompare语句设置执行一个比较。vbBinaryCompare0执行一个二进制比较。vbTextCompare1执行一个按照原文的比较。vbDatabaseCompare2仅适用于MicrosoftAccess,执行一个基于数据库中信息的比较。返回值如果InStr返回string1为零长度0string1为NullNullstring2为零长度Startstring2为NullNullstring2找不到0在string1中找到string2找到的位置start>string20说明InStrB函数作用于包含在字符串中的字节数据。所以InStrB返回的是字节位置,而不是字符位置。InStr函数示例本示例使用InStr函数来查找某字符串在另一个字符串中首次出现的位置。DimSearchString,SearchChar,MyPosSearchString="XXpXXpXXPXXP"'被搜索的字符串。SearchChar="P"'要查找字符串"P"。'从第四个字符开始,以文本比较的方式找起。返回值为6(小写p)。'小写p和大写P在文本比较下是一样的。MyPos=Instr(4,SearchString,SearchChar,1)'从第一个字符开使,以二进制比较的方式找起。返回值为9(大写P)。'小写p和大写P在二进制比较下是不一样的。MyPos=Instr(1,SearchString,SearchChar,0)'缺省的比对方式为二进制比较(最后一个参数可省略)。MyPos=Instr(SearchString,SearchChar)'返回9。MyPos=Instr(1,SearchString,"W")'返回0。提取子字符串操作Mid函数返回Variant(String),其中包含字符串中指定数量的字符。语法Mid(string,start[,length])Mid函数的语法具有下面的命名参数:部分说明string必要参数。字符串表达式,从中返回字符。如果string包含Null,将返回Null。start必要参数。为Long。string中被取出部分的字符位置。如果start超过string的字符数,Mid返回零长度字符串("")。length可选参数;为Variant(Long)。要返回的字符数。如果省略或length超过文本的字符数(包括start处的字符),将返回字符串中从start到尾端的所有字符。说明欲知string的字符数,可用Len函数。注意
MidB函数作用于字符串中包含的字节数据,如同在双字节字符集(DBCS)语言中一样。因此其参数指定的是字节数,而不是字符数。对于使用MidB的示例代码,请参阅示例主题中的第二个示例。Mid函数示例本示例使用Mid语句来得到某个字符串中的几个字符。DimMyString,FirstWord,LastWord,MidWordsMyString="MidFunctionDemo"建立一个字符串。FirstWord=Mid(MyString,1,3)'返回"Mid"。LastWord=Mid(MyString,14,4)'返回"Demo"。MidWords=Mid(MyString,5)'返回"FuncionDemo"。Left函数返回Variant(String),其中包含字符串中从左边算起指定数量的字符。语法Left(string,length)Left函数的语法有下面的命名参数:部分说明string必要参数。字符串表达式其中最左边的那些字符将被返回。如果string包含Null,将返回Null。length必要参数;为Variant(Long)。数值表达式,指出将返回多少个字符。如果为0,返回零长度字符串("")。如果大于或等于string的字符数,则返回整个字符串。说明欲知string的字符数,使用Len函数。注意LeftB函数作用于包含在字符串中的字节数据。所以length指定的是字节数,而不是要返回的字符数。Left函数示例本示例使用Left函数来得到某字符串最左边的几个字符。DimAnyString,MyStrAnyString="HelloWorld"'定义字符串。MyStr=Left(AnyString,1)'返回"H"。MyStr=Left(AnyString,7)'返回"HelloW"。MyStr=Left(AnyString,20)'返回"HelloWorld"。Right函数返回Variant(String),其中包含从字符串右边取出的指定数量的字符。语法Right(string,length)Right函数的语法具有下面的命名参数:部分说明string必要参数。字符串表达式,从中最右边的字符将被返回。如果string包含Null,将返回Null。length必要参数;为Variant(Long)。为数值表达式,指出想返回多少字符。如果为0,返回零长度字符串("")。如果大于或等于string的字符数,则返回整个字符串。说明欲知string的字符数,用Len函数。注意RightB函数作用于包含在字符串中的字节数据。所以length指定的是字节数,而不是指定返回的字符数。Right函数示例本示例使用Right函数来返回某字符串右边算起的几个字符。DimAnyString,MyStrAnyString="HelloWorld"'定义字符串。MyStr=Right(AnyString,1)'返回"d"。MyStr=Right(AnyString,6)'返回"World"。MyStr=Right(AnyString,20)'返回"HelloWorld"。LTrim、RTrim与Trim函数返回Variant(String),其中包含指定字符串的拷贝,没有前导空白(LTrim)、尾随空白(RTrim)或前导和尾随空白(Trim)。语法LTrim(string)RTrim(string)Trim(string)必要的string参数可以是任何有效的字符串表达式。如果string包含Null,将返回Null。LTrim,RTrim,及Trim函数示例本示例使用LTrim及RTrim函数将某字符串的开头及结尾的空格全部去除。事实上只使用Trim函数也可以做到将两头空格全部去除。DimMyString,TrimStringMyString="<-Trim->"'设置字符串初值。TrimString=LTrim(MyString)'TrimString="<-Trim->"。TrimString=RTrim(MyString)'TrimString="<-Trim->"。TrimString=LTrim(RTrim(MyString))'TrimString="<-Trim->"。'只使用Trim函数也同样将两头空格去除。TrimString=Trim(MyString)'TrimString="<-Trim->"。具体开发指导创建工程打开VB集成开发环境,新建一个项目,保存在自己学号的文件夹中,并保存。界面设计在主窗体上添加控件,最后如图3-2所示:图3-2窗体界面设计各窗体和控件的属性修改如下表3-2:表3-2窗体和控件属性表序号窗口/控件类型属性属性修改值说明1窗口(Form)(名称)NamefrmPuTongVDaiLunBiaoJingBoderStyle3-fixdialog设置窗体不能改变大小2Image,图像框控件NameImage1用于显示参考图stretchtrue拉伸图片picture插入一幅图片图片自己绘制3frame,框架控件NameFrame1Caption输入参数4frame,框架控件NameFrame2Caption输出参数5label,标签控件NameLabel1CaptionV带型号6label,标签控件NameLabel2Caption初选带轮基准直径7label,标签控件NameLabel3Caption标准基准直径8label,标签控件NameLabel4Caption外径9ComboBox,组合框控件NamecbbVDaiXingHaostyle2设置为简单的下拉列表10TextBox,文本框控件NametxbChuXuanZhiJing11TextBox,文本框控件NametxbBiaoZhunZhiJing12TextBox,文本框控件NametxbWaiJing13CommandButton,命令按钮NamecmbChaXunCaption开始查询事件处理程序编写添加窗体初始化事件和按钮点击事件,编写下面的代码:Dim数据文件名AsString,带型数组(7)AsString,基准直径数组(56)AsDoubleDim外径数组(55,7)AsDoublePrivateSubcmbChaXun_Click()'开始查询Dim带型序号AsInteger,基准直径序号AsIntegerDim初选直径AsDouble,初选外径AsDouble带型序号=cbbVDaiXingHao.ListIndexIf(IsNumeric(txbChuXuanZhiJing.Text)=False)ThenMsgBox("初选带轮基准直径必须是数值")txbChuXuanZhiJing.SetFocusExitSubElse初选直径=Val(txbChuXuanZhiJing.Text)'设置初选带轮直径EndIfFor基准直径序号=0ToUBound(基准直径数组)If(初选直径<=基准直径数组(基准直径序号)And_外径数组(基准直径序号,带型序号)>0)ThenExitForEndIfNext基准直径序号If(带型数组(带型序号)="Y"And基准直径序号=0)Or_(带型数组(带型序号)="Z"And基准直径序号=8)Or_(带型数组(带型序号)="A"And基准直径序号=12)Or_(带型数组(带型序号)="B"And基准直径序号=21)Or_(带型数组(带型序号)="C"And基准直径序号=28)Or_(带型数组(带型序号)="D"And基准直径序号=36)Or_(带型数组(带型序号)="E"And基准直径序号=42)ThentxbBiaoZhunZhiJing.Text=str(基准直径数组(基准直径序号))txbWaiJing.Text=外径数组(基准直径序号,带型序号)EndIfIf(基准直径序号<=UBound(基准直径数组))ThenDimjAsIntegerForj=基准直径序号-1To0Step-1If(外径数组(j,带型序号)>0)ThenIf(Abs(基准直径数组(j)-初选直径)<=_Abs(基准直径数组(基准直径序号)-初选直径))ThentxbBiaoZhunZhiJing.Text=str(基准直径数组(j))txbWaiJing.Text=外径数组(j,带型序号)ExitForElsetxbBiaoZhunZhiJing.Text=str(基准直径数组(基准直径序号))txbWaiJing.Text=外径数组(基准直径序号,带型序号)ExitForEndIfEndIfNextjEndIfEndSubPrivateSubForm_Load()数据文件名=App.Path&"\"&"普通V带轮标准直径数据表.txt"Open数据文件名ForInputAs#1DimstrAsString,stateAsInteger,iAsIntegerstats=0WhileNotEOF(1)LineInput#1,strSelectCasestatsCase0'处于读取段状态SelectCasestrCase"[型号]"stats=1'设置为读取型号数据状态i=0Case"[基准直径]"stats=2'设置为读取基准直径数据状态i=0Case"[外径]"stats=3'设置为读取外径数据状态i=0EndSelectCase1'读取型号数据状态If(str="-end-")ThencbbVDaiXingHao.ListIndex=0stats=0Else带型数组(i)=strcbbVDaiXingHao.AddItemstr,ii=i+1EndIfCase2'读取基准直径数据状态If(str="-end-")Thenstats=0Else基准直径数组(i)=Val(str)i=i+1EndIfCase3'读取外径数据状态If(str="-end-")Thenstats=0ElseDimjAsInteger,posAsInteger,pos1AsInteger,ssAsStringj=0pos=1Dopos1=InStr(pos,str,",")If(pos1<=0)Thenss=Mid(str,pos)外径数组(i,j)=Val(ss)ExitDoElsess=Mid(str,pos,pos1-pos)外径数组(i,j)=Val(ss)pos=pos1+1j=j+1EndIfLoopUntilj>=7i=i+1EndIfEndSelectWendClose#1EndSub思考阅读并运行上面的程序,分析读取文件并区分出各段以及各个数据的部分的代码,画出流程图;
实验4:VB中使用扩展控件实验目的熟练掌握VB引入扩展控件的方法了解VB中的MSChart图表控件的使用方法了解VB中winsock控件进行网络编程的方法实验内容创建两个VB项目,生成两个VB程序,一个是服务器程序,如下:图4-1服务器端界面图4-2客户端界面服务器程序在2013端口进行侦听,按“开始发送”按钮则每隔20ms生成新的正弦波形,更新图表,如果和客户端连接,则向客户端发送当前的角度值(图表中最右边的数值);另一个是客户端程序:图4-3工具箱图4-4部件选择菜单按按钮连接上服务器端,并接收角度值,在本地算出正弦值并添加入列表中。实验指导VB中扩展控件的引入方法:在工具栏(如图4-3)中,在空白处点击鼠标右键,弹出部件选择菜单(如图4-4),选择部件,然后在列表中选择mschart和winsocket两个控件,如图4-5,这样在工具箱中则加入了两个新的控件,如图4-6所示。图4-5控件选择对话框图4-6新的控件工具箱Mschart图表控件的使用方法:属性ChartType属性:用于设置或返回图表类型,MSChart控件图表类型与对应ChartType属性值如表4-1所示。如,ChartType=1则显示二维直方图,ChartType=14则显示饼图。表4-
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《系统的输入输出》同步练习及答案-2026-2027学年川教版(新版)小学信息科技六年级上册
- 2026年环境监测与治理技术试题及答案
- 2026年建筑工程师建筑施工试题及答案
- 2026年药品不良反应监测业务考核试题(附答案)
- 2026年危废仓库日常安全考试题及答案
- 2026年药品到货抽样样品处置培训试题(含答案)
- 2026年卫生系列职称公需科目模拟试题库及答案
- 2026年食品生产企业安全员考试试卷试题及答案
- 2026年医用氧气瓶安全管理三基培训考核计划
- 2026年矿山安全操作规程安全应急处理竞赛试卷课件
- 脑机接口技术在医疗领域的应用
- 2026广东茂名市高校毕业生基层公共就业创业服务岗位招募61人笔试备考试题及答案解析
- 医疗质量安全十八项核心制度(国家卫健委版)
- 2026苏教版二上数学第二单元第6课时《练习四》课件
- 【新教材】2026年秋人教版九年级上册英语:Units 1-8单元写作提升指导+练习题汇编(含答案+范文)
- 第5课《中国人民站起来了》第三课时(教学课件)
- 2026年广东东莞市初二地理生物会考真题试卷(含答案)
- 建筑物消防安全疏散设计规范2025版
- 2025届中国南方航空“明珠优才管培生”全球招聘30人笔试参考题库附带答案详解
- 抗精神病药长效针剂的临床应用与答疑
- 危重症护理中的人文关怀与艺术
评论
0/150
提交评论