下载

0下载券

加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 VB入门教程之一

VB入门教程之一.doc

VB入门教程之一

一个很怀旧的大男孩
2017-10-15 0人阅读 举报 0 0 0 暂无简介

简介:本文档为《VB入门教程之一doc》,可适用于综合领域

VB入门教程之一ggggggggggggggggVB入门教程之一我们需要什么我们需要什么,当我们在一个精彩的游戏世界中游历了一番之后,或是惊叹于某一工具软件的小巧精致之余,多少总会产生些许编程的冲动。编程吗,在以前如果你对电脑还是一个门外汉,那实在是一件可望而不可及的事情。如果运用基于DOS下的编程语言,譬如C、Qbasic、Pascal等等,真不知何年何月才能有所成就。编程是需要天赋的,你必须在大脑中对整个程序有一个清晰的轮廓,一个高效的流程,这并不是每个人都能做到的,你必须思之慎之,这也使编程变成一件最枯燥无味的事情。但在第四代计算机语言,可视化编程,出现后,可以确切的说它开发了人们的更多天赋,并不局限于那些头脑异常清晰的人,每一个人都可以发现自己也可以编出一些从前不敢问津的程序,想象力的充分发挥才是第四代语言的精粹。VisualBasic,以下简称VB,可以说是可视化语言的先驱了,而且它也是可视化程度最高的一个,从几年前VB诞生之日起到现在,它已经经历了五个版本,而且现在微软正在紧张的进行着VB的研制、测试,这么高的更新率,不外乎说明两个问题,用户对VB的热衷,微软对VB的重视。不可否认微软对市场的预测能力是极为高明的,而它强大的技术、财力支持也使它在许多以前未进入的领域,在不长的时间内有成为最有力的竞争对手,如IE之于浏览器领域,《帝国时代》之于游戏都是最好的例证。对于VB现在也有一个很强的竞争对手――Delphi,有人把它称作VB杀手,这显然有偏激之处,VB的确有它的不足之处,但Delphi又何尝不是呢,而且以微软对VB的倾心,VB的功能必然会越来越强大。VB的诞生VB的出现可以说是MicrosoftWindows的日渐成熟的必然产物。MicrosoftWindows为程序员和最终用户提供了一个共同的人机界面。对用户,Windows提供了一个图形鼠标的操作环境,该环境对所有的应用程序都一样,对于程序员,Windows提供了一组预定义工具称之为MicrosoftWindows的软件开发工具箱,SDK,,该工具能使程序员建立一个与Windows界面相同的应用程序,而且,程序员不必关心最终用户的硬件配置情况。在这一开发环境中,程序员唯一困难的是MicrosoftSDK提供了六百多个函数和与其一致的事件驱动,eventdriven,编程技术。两种新方法的交叉使众ag=TrueTextText=StrNumVB入门教程之四第四章按钮,二,下面会复杂一些,我们先跳过等号,而来处理四则运算,先在General里声明新变量,DimRunsignAsInteger'储存运算符号DimSignFlagAsBoolean'判断是否已有运算符号然后在FormLoad中进行初赋值,Runsign=SignFlag=False在接下的CommandClick中继续输入代码,CaseToFirstNum=True’使下一次可以输入新数据PointFlag=False'还原标记值IfSignFlagThen’前面已有运算符未运算CallRunElseSignFlag=TrueStrNum=StrNum’把字符串复制给字符串StrNum=""’字符串清空EndIfRunsign=Index‘储存键入的运算符里面运算的部分我用了一个过程,是因为在按下等号时还会调用到运算过程,这样可以减少代码的输入,也使程序便于浏览。建立过程,Procedure,,可以在General部分直接输入,也可以通过菜单里的“AddProcedure”添加。Run的代码如下,SubRun()Num=Val(StrNum)Num=Val(StrNum)SelectCaseRunsignCase’加equal=NumNumCase’减equal=NumNumCase’乘equal=Num*NumCase’除equal=NumNumEndSelectStrNum=Str(equal)StrNum=StrNumTextText=StrNumEndSub下面是其余的代码,,在CommandClick事件里,接着写)CaseIfNotSignFlagThenTextText=StrNumequal=Val(StrNum)FirstNum=TruePointFlag=FalseElseCallRunSignFlag=FalseEndIfCaseElse’清除按钮CallClearData里面又用到了一个ClearData过程,实际上就是FormLoad里的变量初赋值,代码如下,SubClearData()Num=Num=StrNum=""StrNum=""FirstNum=TruePointFlag=FalseRunsign=SignFlag=FalseTextText=""EndSub这样完整的程序就完成了,本章介绍了VB的第一个控件――按钮,并且举例,希望你继续看下一章――菜单。下面给出完整的程序代码,DimNum,NumAsSingleDimStrNum,StrNumAsStringDimFirstNumAsBoolean'判断是否是数字开头DimPointFlagAsBoolean'判断是否已有小数点DimRunsignAsInteger'储存运算符号DimSignFlagAsBoolean'判断是否已有运算符号SubClearData()Num=Num=StrNum=""StrNum=""FirstNum=TruePointFlag=FalseRunsign=SignFlag=FalseTextText=""EndSubSubRun()Num=Val(StrNum)Num=Val(StrNum)SelectCaseRunsignCaseequal=NumNumCaseequal=NumNumCaseequal=Num*NumCaseequal=NumNumEndSelectStrNum=Str(equal)StrNum=StrNumTextText=StrNumEndSubPrivateSubaboutClick()MsgBox"Createby周晓阳。",vbDefaultButton,"VB教程第四章范例"EndSubPrivateSubCommandClick(IndexAsInteger)SelectCaseIndexCaseToIfFirstNumThenStrNum=Str(Index)FirstNum=FalseElseStrNum=StrNumStr(Index)EndIfTextText=StrNumCaseIfNotPointFlagThenIfFirstNumThenStrNum=""FirstNum=FalseElseStrNum=StrNum""EndIfElseExitSubEndIfPointFlag=TrueTextText=StrNumCaseToFirstNum=TruePointFlag=False'还原标记值IfSignFlagThenCallRunElseSignFlag=TrueStrNum=StrNumStrNum=""EndIfRunsign=IndexCaseIfNotSignFlagThenTextText=StrNumequal=Val(StrNum)FirstNum=TruePointFlag=FalseElseCallRunSignFlag=FalseEndIfCaseElseCallClearDataEndSelectEndSubPrivateSubFormLoad()CallClearDataEndSub补充说明按钮还有两个重要的属性Default(默认属性)和Cancel(取消属性)两个属性都以布尔赋值把Default设为True则在按下回车键时不论焦点处于何处都会触发该按钮的Click事件而当Cancel属性被设为True在按下ESC键时该按钮的Click属性发生。下面举个例子:建立一个新窗体和两个按钮Name属性分别为cmdOK和cmdCancel把前者的Default设为True后者的Cancel设为TrueCaption属性分别为OK和Cancel。如图,。填写代码后运行:PrivateSubcmdCancelClick()MsgBox"Cancel按钮被按下",vbDefaultButton,"提示"EndSubPrivateSubcmdOKClick()MsgBox"OK按钮被按下",vbDefaultButton,"提示"EndSub结果如图,、,:快捷键大家一定都知道在VB如何实现呢。其实很简单在刚才的例子里在建立一个按钮Command把它的Caption属性设为ClickME如图,在M的下面有一条下划线运行程序当你按下AltM的时候就触发了CommandClick事件:PrivateSubCommandClick()MsgBox"ClickME按钮被按下",vbDefaultButton,"提示"EndSub据我所知有许多用户有使用快捷键的习惯注意细节上的问题能够使将来你的程序得到更多人的欣赏不是吗,VB入门教程之五第五章菜单我们经常在Windows操作里遇到各种各样的菜单,菜单的操作把各种命令结构化、分分类化,也节省了命令所占的空间,从作用上来讲,菜单类似于按钮,但它只有一个事件――Click。VB作为Windows下的可视编程工具,菜单的设计当然很容易实现,VB按下CtrlM,VB以上的版本请按下CtrlE,便可呼叫出菜设计的窗口,无论VB的版本,这个窗口的样式是大同小异的,请见图,。前面说过,菜单相当于简单的按钮,它有几个属性,其中的大部分我们都曾经见过,包括Name、Caption、Index、Checked、Enabled、Visible、快捷键和热键等等。其中Name是必须的。下面请跟我一起设计第一个菜单。首先在Caption添入“文件”,Name为“mnuFile”,按下Next按钮,这样就建立了第一级菜单,注意菜单设计窗口的左中有四个箭头,按下向右的箭头,出现了一排小点,如图,,在VB里这叫缩排,这样就可以开始建立第二级菜单。小知识,实际上我们在生活就中经常用到缩排,写文章时开头要空两格就是一种缩排,在编写程序时更需要缩排,这样使程序结构化,便于观察,当然菜单设计里的缩排有更多的用处。接着填写下一菜单项,Caption为“新文件”,Name为“mnuFileNew”,按下Next键。小知识,VB一共如许建立级子菜单,如图,,尽量不要建立这样的菜单,要知道藏在越深处的菜单项越难以被人发现,一个友好的程序界面应该让用户马上找到需要的命令。接着重复以上步骤,创建以下三个菜单项,Caption保存NamemnuFileSaveLevelCaption另存为NamemnuFileSaveAsLevelCaption载入NamemnuFileLoadLevel我们在菜单里还经常看到把不同项分开的分隔条,在VB里也很容易做到,把Caption设为“”,减号,,Name为mnuBar。最后增加这个菜单条的最后一项,Caption为“退出”,Name为mnuFileExit。现在可以退出菜单设计窗口,菜单如图,。怎么样,经过几章的学习,是不是觉得Windows世界也不是那么神秘,也对,也不对。的确,我们很轻易的实现了这么多的功能,但如果你仔细想想,我们的程序还什么也不会做呢可以说是徒有其表,要实现强大的功能,恐怕要学很长很长时间,而现在仅仅是个开头,并不是想入非非的时候,我们还要继续努力现在再次按下CtrlE,重回菜单设计窗口,接着添加菜单。,按下向左的箭头,可以使菜单上升一级,Level代表菜单的级别,,根据下表添加新的菜单项,Caption编辑NamemnuEditLevelCaption剪切NamemnuEditCutLevelShortCutCtrlXCaption复制NamemnuEditCopyLevelShortCutCtrlCCaption粘贴NamemnuEditPasteLevelShortCutCtrlVCaption关于NamemnuAboutLevel其中ShortCut就是平常我们说的热键,你可以在菜单设计窗口中找到,设置一个你需要的组合键,这样不论窗口的焦点处于何处,菜单在第几层,只要按下热键,就相当于调用了该项的Click事件。结果如图,。从Win以来程序里引入了鼠标右键功能,使鼠标有了更大的用处,在VB里我们也很容易实现。打开FormMouseDown事件,该事件有两个参数,Button,当按下左键时Button返回,当按下右键时Button返回,,Shift,是指在点击鼠标时按下的键盘键,如Shift、Ctrl、Alt,这些我们将在以后讨论,但很难避免在一章中不涉及到不该涉及的内容,学习时有个大概的理解即可。下面在该事件里添加代码,效果如图,,,PrivateSubFormMouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)IfButton=ThenPopupMenumnuEdit,vbPopupMenuLeftAlignElseExitSubEndIfEndSub在上面的代码中我们用到了PopupMenu方法,它的语法是,objectPopupMenu菜单名,标记,X坐标,Y坐标标记是用来表明弹出菜单位于鼠标指针位置的,它有三个值,vbPopupMenuLeftAlign位于鼠标左vbPopupMenuRightAlign位于鼠标右VbPopupMenuCenterAlign位于鼠标中部X、Y值可以用来制定菜单弹出的位置,可以省略。关于菜单的Visible、Enabled等属性请自己尝试。VB入门教程之六第六章输入,一,我们为什么要设计计算机程序呢,当然是为了计算机能为我们完成工作,但是要完成不同的任务,我们就必须对计算机下达命令,然后计算机在把信息返馈回来――任务是否完成。以上就是所谓的人机对话或交互功能,尤其是在Windows操作里我们需要进行更多的输入工作,我们需要填写各种各样的表格,设置程序的重要参数,把数据输入给计算机,再又它完成既定的工作就是今天我们本章要重点讨论的问题――在VB中如何建立完整的输入机制。在VB中提供了一个函数InputBox能帮助我们建立一个最简单的输入窗体,语法如下,InputBox,prompt,title,default,xpos,ypos,helpfile,context,该函数返回一个字符串表达式,其参数含义为,,“”表示可缺省,prompt――字符串表达式,最大长度为字符,窗体上的提示部分。Title――字符串表达式,显示标题栏里的文本。Default――字符串表达式,窗体中文本框的缺省值。xpos,ypos――数值表达式,以Twips为单位指定窗体出现在屏幕上的位置。helpfile――字符串表达式,是帮助文件的完整路径。Context――数值表达式,指定适合的帮助主题。可能你看了上面的说明并不明白,那么下面我们就用Input语句完成一个最简单的程序。小知识,屏幕坐标在计算机的屏幕上也有一个类似于我们在中学里常用到的直角坐标系,之不过它的原点不在左下,而是在屏幕的右上角,屏幕的最右上方坐标为,,,,它的横坐标和我们的习惯是一致的,而纵坐标则是越向下越大,不仅是屏幕,所有的对象里都是一样,需要记清。见图,新建一个项目,project,,在Formload里填写一行代码,a$=InputBox("举荐你最欣赏的网站","最佳网站投票","VB小驿")’按下F运行程序,在Form出现之前先会弹出一个输入对话框,如图,。这时,无论你按下OK还是Cancel都是没有区别的,因为我们并没有对输入数据进行处理,下面我们完成一个更加复杂些的程序。新建一个项目文件,把窗口布局成类似于图,的结构,各对象属性如下表,FormCaption“最佳网站投票演示”BorderStyle’不可调整大小ControlBox’FalseFrameCaption“输入框属性“LabelAutosize’TrueIndex至至Caption“提示语句”“标题”“缺省网站”“X坐标”“Y坐标”“”IndexEnabledFalseIndexEnabledFalseTextText“”’,空字符串,Index至IndexTextIndexTextCheckCaption“指定输入框位置”ButtonIndex,IndexCaption“显示输入框”Caption“退出程序”本例中出现了一个Frame控件,它是一种框架,可以用来把窗体分成好几个部分,首先应该在窗体上画出Frame控件,然后再选择相应的控件,在Frame上描出轮廓,使其是出现在Frame之上,本例中除去两个按钮,其余都在Frame上面。本例中用到了几组控件数组,其创建方法是,在选定的点右键,选择Copy,再在窗体其他部位单击右键,选择Paste即可,注意,若要使粘贴的对象在Frame上,请在Frame上单击右键选择Paste。我们通过这个窗体,对输入框进行完整的控制,原理是这样的,当我们把窗体中要填写的对输入框的参数完成后按下OK按钮,就会出现我们设计的那个输入框,我们从输入框退出时则返回我们投票的结果,代码如下窗体初次被装入时,Label()、Label()和Text()、Text()的Enabled属性都是False,我们需要通过改变Check的Value,,被选中,,未选中,是他们有效或无效。声明全局变量,General,,DimPosChkAsBoolean'检查X、Y坐标是否有效CheckClick事件,PrivateSubCheckClick()IfCheckValue=ThenLabel()Enabled=TrueLabel()Enabled=TrueText()Enabled=TrueText()Enabled=TruePosChk=TrueElseLabel()Enabled=FalseLabel()Enabled=FalseText()Enabled=FalseText()Enabled=FalsePosChk=FalseEndIfEndSub接着在按钮中填写代码,PrivateSubCommandClick(IndexAsInteger)DimPrompt,Title,DefaultAsStringDimxPos,yPosAsIntegerSelectCaseIndexCasePrompt=Text()TextTitle=Text()TextDefault=Text()TextIfPosChkThenxPos=Val(Text()Text)yPos=Val(Text()Text)a$=InputBox(Prompt,Title,Default,xPos,yPos)Elsea$=InputBox(Prompt,Title,Default,xPos,yPos)EndIfLabel()Caption="谢谢您的投票,您的选择是"a$""CaseUnloadMeEndSelectEndSub按下F运行程序,你会看到这样的结果。图,,,。是不是有种受骗的感觉,啊哟哟,可不是我的错,就是这么容易嘛从刚才的例子里,我们接触了一些VB中的输入方法,其实数据输入不仅仅局限于向Text框中输入数据,数据的输入还有许多其他的方法,譬如前面的Check也是向程序发出一定的信息,只要是通过操作向计算机发布命令就可以叫做输入,下面我们来一一介绍。首先要介绍的当然是输入用到最多的Text框。Text没有Click事件,它的缺省事件是Change,也就是当Text框里的一旦内容改变就会激发该事件发生,还是让我们用实例说话吧。Text有几个特殊的属性,一是MultiLine,多行,属性,MultiLine属性为False的时候,不论文本有多长,它都会在一行里显示下去,换行符无效,当它为True的时候,字符串显示到Text框边缘的时候就会自动换行。另一个与之配合的属性是ScrollBars属性,它有个值,到,分别是没有滚动条,水平滚动条,垂直滚动条,和二者都有,它是一个只读属性,也就是说只有在程序设计过程中才能改变,而不能在程序运行中改变,但是我们可以通过API解决运行中改变的问题,我们放在以后再讲。PasswordChart属性,我们经常在程序操作中遇到要填写密码的部分,为了保密起见,在屏幕上显示的字符一般“*”表示,并且这时是无法用剪贴板的,这在VB中非常容易做到,把PasswordChart中设一个用来代替字符串的字符即可,并不一定是“*”哦。下面我们完成一个有趣的小程序,是我以前遇到过的一个程序,我对其进行了部分修改。程序的意思是这样的,假设你是一个司机应超速被警察扣留,现在需要你向警察陈述你的理由,如果你的话能打动他,就可以免交罚金,如果你在规定的字数里没有说出什么有震撼力的话,那老兄你可就惨了,交钱吧。J这个程序比原来的英文程序有了几点不同,第一,由于用到的是双字节中文的中文,所以对于检测中文字符和英文有很大不同,第二,原来的英文程序不管你说多少,警察依然是依法从事,本例中给了犯规者的免罚机会,有点无聊……L,不过也是为了学一些东东嘛,。下面就跟我来设计窗体吧。,如图,,FormIconStop图标Caption停车检查BorderStyleLabelCaption警官,我超速是有原因的,请听我说,BackColorHForeColorHLabelCaption你必须在字之内完成你理由的申诉,否则将受到罚款BackColorHForeColorHFFTextMultiLinkTrueText“”PictureAutosizeTrueBackColorHVisibleTruePictureAutosizeTrueBackColorHVisibleFalsePictureAutosizeTrueBackColorHVisibleFalseCommandVisibleFalse三个图片框Picture,的Picture属性分别为绿灯,黄灯和红灯,这些图标在VB目录下的GraphicsIconsTraffic下,VB,,或是VB目录下的IconsTraffic下,VB、VB,,你还可以为Label在Font属性里选一个合适的字体和字重。下面我们来看代码,首先初始化程序,PrivateSubFormLoad()'把Command放在水平的中央CommandTop=LabelTopCommandLeft=(FormWidthCommandWidth)'重叠三个图片框PictureLeft=PictureLeftPictureTop=PictureTopPictureLeft=PictureLeftPictureTop=PictureTopEndSub下面我来讲一讲程序是怎样运行的,我们将用到Text的Change事件,每当字符串改变一次就对它进行一次检查,算出已经说的字数,当字数超过时,下面的红绿灯会变成黄色,并且在这时随机抽取一个数,它在一个范围内出现的可能是,如果在这个范围内就可以免交罚金,如果不在范围则继续,当文字超过的时候,红绿灯会变成红色,再一次抽取随机数字,步骤同上,如果个字已满,再进行一次检查,如果你真的那么不幸就该罚款了。程序的步骤清楚了,我们在来看看程序的要点。由于中文是双字节字符,也就是说一个汉字占两个ASC码的位置,而VB显然是为英语国家设计的用Len函数无法返回汉字字节,也就是说一个汉字和和一个ASC字符在Len函数中得到的值是一样的,这就需要特殊处理。用Asc,,函数,在括号内放入一个ASC字符或字符串,它会把第一个ASC码转化为,的数值,而把一个汉字放入,它的值必然不在,,这也就可以作为判定汉字的基础。我们可以把英文算作半个汉字。VB入门教程之六第六章输入,二,下面我们来看看代码,在General里声明窗体级变量,DimLevelAsIntegerPrivateSubCommandClick()UnloadMeEndSubPrivateSubTextChange()DimStrLengthAsInteger’字符串长度DimRandomNumAsSingle’随机数DimStrAsStringDimaAsStringDimi,TempStrLength=’每次开始时把字符串长度还原为a=TextTextFori=ToLen(a)’Len(a)代表字符串的长度Temp=Asc(Mid$(a,i,))’挨个取字符IfTemp>OrTemp<Then’不是ASC码StrLength=StrLengthElseStrLength=StrLengthEndIfNextiStrLength=StrLengthSelectCaseStrLengthCaseToPictureVisible=TruePictureVisible=FalsePictureVisible=FalseLabelCaption="慢慢说。你还有"Str(StrLength)"个字可以说"Level=CaseToIfLevel=ThenRandomNum=Rnd*’得到随机数IfRandomNum<=AndRandomNum>ThenTextEnabled=FalseLabelCaption="很抱歉这是个误会……"CommandVisible=TrueCommandCaption="您可以离开了"EndIfLevel=ElsePictureVisible=FalsePictureVisible=TruePictureVisible=FalseStr="怎么还没说完"LabelCaption=Str"你还有"Str(StrLength)"个字可以说"EndIfCaseToIfLevel=ThenRandomNum=Rnd*IfRandomNum<=AndRandomNum>ThenTextEnabled=FalseLabelCaption="很抱歉这是个误会……"CommandVisible=TrueCommandCaption="您可以离开了"EndIfLevel=ElsePictureVisible=FalsePictureVisible=FalsePictureVisible=TrueStr="我已经不耐烦了"LabelCaption=Str"你还有"Str(StrLength)"个字可以说"EndIfCaseElseTextEnabled=FalseLabelCaption="你已经没有机会了"CommandVisible=TrueCommandCaption="交钱吧,肇事犯"EndSelectEndSub中间有几个函数需要解释一下,Mid可以从字符串中取出一部分,返回字符型,格式:Mid(字符串,从第几个字符开始,取字符的长度)Asc可以把字符转换为ASCII码,格式,Asc(字符串)Rnd,取得大于但小于的数值,可以没有参数。怎么样,十分简单吧,我们将在下一次继续讨论VB的输入机制在继续上面的内容时我想再回顾和强调几个在字符串操作中经常函数:先是几个已经接触过的Mid()Asc()Len()它们的语法分别是:Mid(字符型起始字符长度)返回子字符串如果从字符串的第一个字符取起起始字符为依此类推。Asc(字符型)返回数值如果参数不是一个字符而是字符串(多个字符)将返回参数的第一个字符ASCII值。Len(字符型)返回字符串的长度。下面我再为你解释几个新的函数:Left(字符串长度)将返回字符型从字符串的第一个字符向左取字符串与之相对应的是Right()它将从字符串的最后一个字符向右取字符串。Chr(数值型)该数值范围从,返回字符型如Chr()可返回字符“A”这样可以输入一些用键盘无法输入的字符。Str(数值型)该函数把数值型转换为字符型也许你觉得数值“”和字符串“”没什么区别但在内存中一个ASCII字符是占一个字节也就是说字符串“”占个字节而当数值“”是整型时它占两个字符当它是长整型时占个字节。与之向对应的是Val(数值型)它把数值型转换为字符型。上面的函数都是以后要经常用到的请将它们熟悉。上次讲到文本框的用处还有意思吗,你是否能把上次的程序稍稍变动一下来计算出输入的单词数提示一下单词与单词之间是用空格分隔开的。输入不仅仅是向文本框输入字符凡是从外界向程序传递数据都可以叫做输入我们一一说明白。无线钮记得我们曾在第一章中完成过我们的第一个程序――“HelloWorld~”它就是一种输入的方法在设计VB程序时可以通过一组这样的无线钮它们之间互相排斥也就是说只能有一个按钮被选中。它因为很象无线电收音机上的按钮因而得名无线钮。如果要在一个窗体内放置多组无线钮必须用Frame控件把它们区分开来。下面我们在来完成一个例子顺便熟悉一下另外两个处理字符串的函数――LTrim()和Rtrim()它们分别用来删除字符串左边的空格和右边的空格让我们看看它们是如何工作的。程序窗体如图,由于窗体比较简单无需修改更多的属性一共有三个文本框(Text到)分别用来显示输入字符显示把空格换成星号的字符和经过处理的字符还有三个无线钮(Option到)要修改的只有Caption属性分别是“删除左边的空格”、“删除右边的空格”和“删除两边的空格”。因为空格在我们在文本框中无法看到空格所以我们通过一个称作AddStar的函数把原有字符串中的空格转换为星号使我们能够看到函数的效果。下面在程序中添加代码首先在General中声明窗体级变量:DimLTrimmedword$,RTrimmedword$'删除左边空格和右边空格后的字符串DimLRTrimmedword$'删除两边空格后的字符串然后我们通过一个叫做addstar的函数为字符串加上星号以前曾说过函数与过程的分别函数会返回一个函数值所以addstar也就相当于一个变量其实这很好理解就象中学代数中的函数函数就相当于变量Y而函数中的参数则相当于自变量X当然可能有很多自变量X、X„„请原谅我并不想在这里上数学课因为我厌恶那玩意儿特别是上了大学之后好在大二以后就再也不会有数学课了哈哈„„Functionaddstar(tempwordAsString)AsStringDimcharindexDimpasteword$'加星号后的字符串Forcharindex=ToLen(tempword)IfMid(tempword,charindex,)=""Then'如果字符为空格pasteword=pasteword"*"Else:pasteword=pastewordMid(tempword,charindex,)EndIfNextaddstar=pasteword'返回函数值EndFunction下面的代码很简单并且我为它做了注释就不再一一解释了我只想简要的提几句Ltrim和Rtrim只有一个参数(字符型)另外下面用到了焦点事件我们曾在第三章中介绍过当Text得到焦点(GotFocus)时清空所有的文本框当它失去焦点(LostFocus)时对字符进行addstar并且在Text中显示。PrivateSubTextGotFocus()'但焦点于Text'清除所有文本框中的字符TextText=""TextText=""TextText=""EndSubPrivateSubTextLostFocus()DimOrigionwordAsStringOrigionword=TextTextTextText=addstar(Origionword)LTrimmedword=addstar(LTrim(Origionword))RTrimmedword=addstar(RTrim(Origionword))LRTrimmedword=LTrim(RTrim(Origionword))EndSubPrivateSubOptionClick()TextText=LTrimmedword'显示删除左空格后的字符串EndSubPrivateSubOptionClick()TextText=RTrimmedword'显示删除右空格后的字符串EndSubPrivateSubOptionClick()TextText=LRTrimmedword'显示删除两边空格后的字符串EndSub最后结果如图,。与无线钮相对的是检查框在同一范围内一组无线钮只能有一个被选中而检查框则可以有多个选择就象在添表时性别那项只能有一个选择而在描述你以前的职业时可以有学生、程序员、家庭教师或者什么总之有很多选择下面我们举一个简单的例子加以说明。假设编写了一个共享软件在让用户注册的时候你想知道你的用户使用的计算机情况你就需要一个调查表为了使这个调查表不止枯燥可以在这个程序中加入一些图形。新建一个项目文件窗体布局如图,。程序很简单一共有两个框架(Frame和Frame)它们的Caption分别为“选择你的计算机拥有的配置”和“这是你的计算机系统”在Frame有四个检查框(Check到Check)Caption分别为“网络系统”、“鼠标”、“密码保护”和“电子邮件”另把Check的Enabled属性改为False使其无效在Frame中放置四个图片框(Picture到Picture)与四个检查框向对应请把所有图片框的BorderStyle属性设为(无边框)它们的Picture属性请根据上图在存放图标的目录中找到相对的图标。下面是程序代码:PrivateSubCheckClick()IfCheckValueThenCheckEnabled=PictureVisible=Else:CheckEnabled=PictureVisible=CheckValue=PictureVisible=EndIfEndSubPrivateSubCheckClick()IfCheckValueThenPictureVisible=Else:PictureVisible=EndIfEndSubPrivateSubCheckClick()IfCheckValueThenPictureVisible=Else:PictureVisible=EndIfEndSubPrivateSubCheckClick()IfCheckValueThenPictureVisible=Else:PictureVisible=EndIfEndSub这个程序比我们见过的任何程序都简单就不再做说明。VB入门教程之六第六章输入,三,滚动条(ScrollBar)在视窗中也是一个不可缺少的部分由于面积所限我们不得把屏幕上的内容滚来滚去以显示大量的内容这就是我们经常要用到的滚动条。但滚动条除去滚动窗口还有一个很重要的作用――输入想想你经常用到的一些家用电器上调节声音或别的什么东西的滑块你把它滑向大的一方音量就会增大而你把它滑向小的一方音量就会减小或者一个控制左右两个音箱的均衡器当滑块在正中央的时候两个音箱的音量是相同的当你把滑块偏向一方时音箱的音量有了大小之分在Windows操作中我们也经常要用到类似的效果。在VB中提供了两个常规的滚动条控件――Vscroll和Hscroll分别代表垂直的和水平的滚动条它们只不过是方向不同而已而它们的属性以及会发生的事件都是相同的。滚动条有几个特殊的属性:Value属性当滑块挪动后停在某一位置时就改变了滚动条的Value属性。Max和Min属性用来设置滚动条的最大值和最小值譬如把Max设为把Min设为时滚动条的Value就在到之间移动当Max和Min倒置时滚动条的方向也会相反也就是说当Max<Min时原来Value增加的方向就会变成相反的方向。Max和Min也可设为负值。SmallChange和LargeChange属性当鼠标在滚动条两头的箭头上单击时就会把滚动条向相应的方向挪动一点这时用到的就是SmallChange属性当你把它设为时每点一下滚动条的Value就改变当鼠标在滚动条上点击时用到的就是LargeChange当设为时每点击一下滚动条Value就改变。下面我们看一个实例。大家都知道物体之所以会有颜色是因为物体表面的材料吸收了太阳光中的部分色光而还有部分色光没被吸收而被反射回来它就成了我们看到的颜色黑色就是物体吸收了所有的太阳光的所有色光没有反射颜色所以在我们看来是黑的而当物体反射了所有的色光我们看到的就是白色。在计算机中颜色的表示就是象我们刚才描述的样子它把颜色分为红(R)、绿(G)和蓝(B)。众所周知计算机的机器语言是使用二进制表示的为了方便查阅我们看到的往往是十六进制代码一个字节包括两位十六进制数字从,(十六进制表示,FF)而一个字节是由八位二进制数值表示(^的次方)计算机中用分别用一个字节也就是八位表示一种颜色和在一起也就是三个字节(位)表示所有的颜色这就是我们平时常说的位真彩它一共可以组成××(^)种颜色对于我们的肉眼是根本分辨不出来相邻两个不同的颜色的比如用FFFFFF表示白色就好象我们刚才说的物体反射了所有的色光相反的可以用表示黑色它吸收了所有的色光还可以用FF表示红色在HTML语言中就是这样表示颜色的。小知识:现在你可以根据你的显卡的显存来计算一下显卡在位真彩下可以以多大的分辨率显示计算是这样的用显存的字节数(位色),显示器宽的象素数×显示器高的象素数宽的象素数:高的象素数,:比如兆显存就应该是××,×。在下面的小程序中我们通过三个滚动条分别代表R、G、B滚动滚动条将在右边的图片框中显示相应的颜色并且在下面的文本框中显示颜色的十六进制数值。现在新建一个项目文件在Form中如图,布局控件各控件属性如下表:HsrollBarNameHscrollIndex、、(共同属性)MaxMinLargeChangeSmallChangeLabelNameLabelIndex、、IndexCaption“红:”IndexCaption“绿:”IndexCaption“蓝:”LabelNameLabelCaption“颜色值”TextBoxNameTextText“”PictureBoxNamePicuture为了把十进制数值换成十六进制数值要使用一个叫做Hex()的函数它把十进制数值转化为十六进制的字符但对于只有一位的十六进制字符这个函数并不在高位补零为了视觉上的正确我设计了一个小函数帮助它给一位的十六进制字符补零程序代码很简单见下:DimRedStr,GreenStr,BlueStrAsString’RGB的字符DimRedNum,GreenNum,BlueNumAsInteger’RGB的数值FunctionGetColorValue()AsString‘获得输入值RedNum=HScroll()ValueGreenNum=HScroll()ValueBlueNum=HScroll()ValueRedStr=Hex(RedNum)IfLen(RedStr)<ThenRedStr=""RedStr’补零GreenStr=Hex(GreenNum)IfLen(GreenStr)<ThenGreenStr=""GreenStrBlueStr=Hex(BlueNum)IfLen(BlueStr)<ThenBlueStr=""BlueStrGetColorValue=RedStrGreenStrBlueStr’合并EndFunctionPrivateSubFormLoad()‘初始化程序TextText=GetColorValuePictureBackColor=RGB(RedNum,GreenNum,BlueNum)'RGB函数返回颜色值EndSubPrivateSubHScrollChange(IndexAsInteger)‘当滚动条被改变时TextText=GetColorValuePictureBackColor=RGB(RedNum,GreenNum,BlueNum)EndSub运行如图,。列表框(ListBox)和复合列表框(ComboBox)也是我们经常见到的视窗元素我们从它所列示的条目中选出所需的两种列表框只是在外观上略有不同但从本质和操作方法来说它们是很相象的它们也有一些特殊的属性:List属性你可以利于该属性象列表框或复合列表框中添加条目但也可以在程序设计中通过AddItem方法添加。ListCount属性返回列表框或复合列表框中条目的数目。ListIndex属性表示列表框或复合列表框的第几项条目。(从到ListCount)Sorted属性可以通过该属性对列表框或复合列表框中的条目根据字母顺序排序。MultiSelect属性表示不能多选表示简单多选表示宽展多选仅限于列表框。Columns属性表示条目是以一列显示还是两列显示仅限于列表框。Style属性:表示列表框或复合列表框以何种风格显示二者参数不同。举两个简单的例子。例子一建立一个新项目文件在Form上添加一个List控件调整适当的尺寸无需改变任何属性。填写以下代码。PrivateSubFormLoad()WithListAddItem"Default"AddItem"Arrow"AddItem"Cross"AddItem"IBeam"AddItem"Icon"AddItem"Size"AddItem"SizeNESW"AddItem"SizeNS"AddItem"SizeNWSE"AddItem"SizeWE"AddItem"UpArrow"AddItem"Hourglass"AddItem"NoDrag"AddItem"ArrowAndHourglass"AddItem"ArrowAndQuestion"AddItem"SizeAll"EndWithEndSubPrivateSubListClick()MousePointer=ListListIndex’这里的MousePointer是窗体全局内的属性EndSub当你点在不同项上面鼠标指针也会随着改变如图,。AddItem方法语法如下:ListObject“字符串”,数值字符串后的数值可以指定条目加入在第几个条目的位置上如果没有的话添加项将逐次排下去。下面举一个复合列表框的例子例子通过选择复合列表框中的选项来改变文本框的字体。请新建一个项目文件在窗体中添加一个ComboBox(Combo)和一个TextBox(Text)添加如下代码。PrivateSubComboClick()TextFontName=ComboList(ComboListIndex)EndSubPrivateSubFormLoad()WithComboAddItem"宋体"AddItem"隶书"AddItem"黑体"AddItem"楷体"ListIndex='把第一个条目作为初始项EndWithTextFontSize=’放大字体TextFontName=ComboList()’初始字体为“宋体”EndSub如图,。(第六章完)VB入门教程之七第七章输出上一章里我们讨论的VB的输人机制这次我们来集中讨论VB中信息的输出。输入和输出是不可分割的人们输入的最终目的是希望计算机作出反应任何一个程序都不可能避开这个问题所以就算要完成一个最基本的程序也要有输出的部分复杂的程序更是如此。在输入的一章里我们学习的第一个输入方法是InputBox相应的在输出中我们第一个要接触的是MsgBox(MessageBox)和InputBox相似MsgBox也是简化了的窗体可以以函数的形式返回操作。它的基本语法是:MsgBox"显示内容",按钮值,"标题"通过这个函数可以产生一个标准的Windows消息框象我们平时经常接触的“YesNo”、“OKCancel”“RetryAbortIgnore”等等这些都是在按钮值中设定的按钮值如下:数值含义OKOK和CancelAbort、Retry和IgnoreYes、No和CancelYes和NoRetry和Cancel并且不同的消息可以搭配不同的图标比如帮助文件用问号一般提示用一个圈里一个I等等它们也是按钮值的一部分:数值含义表示危险表示问号表示警告表示信息但是如何既显示按钮也显示相应的图标呢请看一会儿下面的例子。前面说过MsgBox是函数那么它就会有返回值当你按下某个按钮就会返回一个数值以便对用户不同动作的捕捉返回值如下:数值含义OKCancelAbortRetryIgnoreYesNo说了这么多可能你已经不知所措了不过看过下面的例子后相信一切都会迎刃而解。首先建立一个新项目文件并添加以下对象(见图,)――一个Button(Command)两个ComboBox(Combo和Combo)不要对其属性做更多的修改只需把Command的Caption改为“ClickMe”。这个程序的目的是自由组合上面的按钮值以显示各种消息框并且返回按下的按钮Combo和Combo分别用来选择按钮值首先在FormLoad中初始化程序:PrivateSubFormLoad()ComboAddItem"OK"ComboAddItem"OKandCancel"ComboAddItem"Abort,RetryandIgnore"ComboAddItem"Yes,No,Cancel"ComboAddItem"Yes,No"ComboAddItem"Retry,Cancel"ComboListIndex=ComboAddItem"危险"ComboAddItem"询问"ComboAddItem"警告"ComboAddItem"信息"ComboListIndex=EndSubComboBox的用法已经在上一章中讨论过在此不再赘述ListIndex属性用来把第一个元素放在选择位置。但是如何显示需要的按钮和图标呢,很简单只需把它们相加比如说要显示OK、Cancel按钮和警告的图标只需把和相加得到即可于是我们在Command中填写这样一行:PrivateSubCommandClick()message=MsgBox("显示"ComboList(ComboListIndex)"和"ComboList(ComboListIndex),ComboListIndex(ComboListIndex)*,"消息演示")EndSub因为图标值是从开始的所以要把Combo的ListIndex加再乘以。小知识:按钮值并非简单的相加按钮值并非简单的相加我们知道在计算机里最终的语言是机器语言而机器语言是以和的二进制表示的在这里用到的实际上不是相加而是逻辑操作符“OR”你知道OR和AND是怎样工作的吗,正如你所知TrueAndFalse得到False而TrueOrFalse得到True这是怎么形成的呢,我们有时也用代表False用或,代表True(其实只要非零都可以代表True)而和在二进制中还是本身于是True、False的运算就变成的和的运算我们可以把And叫做补运算把Or叫做补运算当用And处理两个二进制数的时候它们逐位比较如果相同的位上都是或都是则没有变化而如果一位上是另一位上是最后结果上相应的位上就变成。比如(十进制中)And(十进制中)最后就得(十进制中)相同的Or亦是如此只不过在不同的地方补。在位数不同时前面补你可以在VB中试试看。但为什么要讲这些呢原因是我不想让大家真的以为这个例子中就是相加只不过碰巧它们的和处在不同的位置上并且这个小知识在今后的位图操作和API操作中很有用处。下面在来判断用户按下的按钮。PrivateSubCommandClick()message=MsgBox("显示"ComboList(ComboListIndex)"和"ComboList(ComboListIndex),ComboListIndex(ComboListIndex)*,"消息演示")SelectCasemessageCaseMsgBox"你按下了OK钮"CaseMsgBox"你按下了Cancel按钮"CaseMsgBox"你按下了Abort按钮"CaseMsgBox"你按下了Retry按钮"CaseMsgBox"你按下了Ignore按钮"CaseMsgBox"你按下了Yes按钮"CaseMsgBox"你按下了No按钮"EndSelectEndSub运行程序结果如图,,。第七章未完待

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

评分:

/72

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利