VisualBasic基础经典教程1.文件的系统控件PrivateSubDrive1_Change()’Dir1Dir1.Path=Drive1.Drive’File1Dir1EndSubPrivateSubCommand1_Click()DimSelectFileAsStringIfRinght[File1.Path,1]“\”ThenSelectFile=File1.Path&“\”&File1.filenameElseSelectFile=File1.Path&File1.filenameEndIfMsgBox“你选择了文件”&SelectFile’显示被选择的文件全名EndSub2.文件访问(1)顺序文件写:AppendOpen“C:\TESTFILE.TXT”ForOutputAs#1Print#1,“Visual”,“Basic”’分写两打印区Print#1,“Visual”,“Basic”’紧随写入Write#1,“Data1”,100,“Data2”’加入逗号,省空间,易读Close#1读:DimFileDataAsStringOpen“C:\TESTFILE.TXT”ForIutputAs#1DoUntilEOF[1]LineInput#1,FileDataText1.Text=Text1.Text&FileData&Chr[13]&Chr[10]’Text1.Multiline设为trueLoopClose#1(2)随机型文件适用于读写有固定长度记录结构的文本或二进制文件通用OptionExplictPrivateTypeScoreRecord’定义自定义数据记录类型IDAsIntegerNameAsString*20’Name为长度为20的字符串EndType事件DimMyRecordAsScoreRecord’声明变量DimRecordNumAsIntegerOpen“C:\RECFILE.TXT”ForRandamAs#1Len=Len[MyRecord]ForRecordNum=1To5MyRecord.ID=RecordNum’定义IDMyRecord.Name=“Name”&RecordNum写:Put#1,RecordNum,MyRecord’将记录写入文件Next读:Get#1,3,MyRecord’第三个记录Text1.Text=MyRecord.NameClose#1(3)二进制文件能读取任意有结构的文件,比随机文件更为灵活Open“…”ForBinaryAs#1Text1.Text=Input[LOF(1)’文件长度,#1]’读整个文件,中英常用格式:Put#fielname,position,variableGet#fielname,position,variable3.多窗口(MDI)程序的设计mnuNew事件click:staticWindowsCountAsInteger’第几个窗口DimfrmDAsForm1’定义子窗口变量WindowsCount=WindowCount+1SetfrmD=NewForm1’标题frmD.Caption=“ChildWindow”&WindowCountfrmD.Show’显示子窗口mnuCascade层叠click:Me.ArragevbCascade’vbTileHorizontal横向平铺vbTileVertical纵向vbArrangeIcons排列子窗口图标WindowState属性:2Max添加模块(好习惯)OptionExplicitPublicfMainFormAsADIForm1’主窗口对象Submain[]SetfmainForm=NewMDIForm1fMainForm.Show’显示主窗口EndSub工程菜单/工程1属性启动对象:SubMain由通用对象模块开始执行4.多媒体公用对话控件属性Filter.AVI.MID.WAVForm.Load:PrivateSubForm.Load()MMControl1.Wait=False’设置打开设备所需属性EndSubCommand1.Click:CommonDialog1.ShowOpen’显示打开文件对话框IfCommonDialog1.filename‘.’Then’判断文件后缀SelectCaseUCase[Right[CommonDialog1.filename,3]]Case“WAV”’波形文件MMControl1.DeviceType=“WaveAudio”…Else’SequencerAviVideoEndSelectMMControl1.filename=CommonDialog1.filenameIfNotMMControl1.Mode=mciModeNotOpenThenMMComtrol1.Command=“Close”’如果已打开,先关闭EndIfMMControl1.Command=“Open”’打开设备EndIfForm.Unload:PrivateSubformUnload[cancelAsInteger]MMControl1.Command=“Close”’确保关闭EndSub5.数据访问Data控件可用三类Recordset对象表Table一个记录集合,代表能用来添加,更新或删除记录表的单个数据库表。动态集Dynaset一个记录的集合动态,代表一个数据库或包含从一个或多个表取出的字段的查询结果,可从dynaset类型的Recordset里添加,更新或删除记录,并且任何改变都会反映在基本表上。快照Snapshot一个记录的集合静态副本,可用于寻找数据或生成报告。一个快照类型的Recordset能包含从一个或多个在同一数据库中的表里取出的字段,但字段不能更改。实例:数据控件属性Data1.Connect:Access,DatabaseName:Biblio.mdb数据集对象RecordsetType:缺省1-Dynaset,RecordSource:Authors文本框Text1.DataSource:Data1绑定,DataField字段名(查看、修改)Authors标签AAuthor绑定控件:菜单工程/部件-D..B.Grid:DataSource:Data1右键菜单检索字段.编辑,删除,追加/属性/列/Column2标题NameofAuthor数据字段:Author.AllowUpdate:False不能更新文本框locked:True只能浏览数据控件Data1.RecordsetType:2-Snap或ReadOnly:True设置RecordSource.Form:DimSQLAsString‘SQL语句SQL=“Select*fromAuthorswhereAu_ID100andAu_ID120Data1.RecordSource=SQL外接程序/可视化数据管理器…7.OLE实现Excel数据透视表功能OLE控件—插入对象ExcelWorksheet取消:在代码中引用已有工作表三选项按钮Option1,2,3:分别,按性别,按部门查看工程菜单/引用—ExcelObjectLibrary视图/对象浏览器或F—ExcelForm1:DimMyXlsAsObject’声明一个对象变量Form_load[]:SetMyXls=GetObject[“C:\Company.xls”]OLE1.CreateLink“C:\Company.xls”Form_Unload[CancelAsInteger]SetMyXls=NothingOption.Click:WithMyXls.PivotTables[“数据透视表1”].PivotField[“部门”]SelectCaseIndexCase0.Orientation=xlColumnField.Position=1Case1.Orientation=xlRowField.Position=2Case2.Orientation=xlRowField.Position=1EndSelectEndWithOLE控件属性:SizeMode:-Stretch8.拖放Picture1+图.Picture2.Picture1.DragMode属性:AutoDragIcon指定拖放操作中作为指针显示对象的图标,若不指定将显示一白色轮廓Image1,Image2Picture:(Icon分别为拖、放)Form_load[]:Picture1.DragIcon=Image1.PicturePicture2_DragDrop:IfSource=Picture1ThenPicture2.Picture=Picture1.PictureEndIfPicture2_DragOver:SelectCaseState拖动操作进行时发生CasevbEnter’进入Picture1.DragIcon=Image2.PictureCasevbLeave’离开Picture1.DragIcon=Image1.PictureEndSelect资源管理器拖图片—Form1图片框:Picture2Picture2.OLEDropMode:MannualOLEDrop:IfData.GetFormat[vbCFFiles]=TureThen’格式:文件第一个Picture2.Picture=LoadPictureData.Files.Item[1]9.OOP编程、工程/添加类模块——名称:car工具/添加过程——名:Brand自动添加查询赋值模块Get:Brand=vBrand返回品牌值类型改为StringLet:类型String利用内部属性检查IfvNewValue“Audi”AndvNewValue“Santana”ThenMsgBox“CannotacceptthisBrand”ElsevBrand=vNewValue’接受新属性值EndIf添加油量属性Gas删除LetGas置为只读GetGas[]AsInteger:Gas=vGas’读出油量添加Run方法Run[]:vGas=vGas–10’减少油量添加AddGas方法AddGas[]:vGas=100’加满油加NoGas事件EventNoGas[],在Run[]中触发IfvGas0ThenvGas=vGas–10’减少油量ElseRaiseEventNoGas’触发NoGas事件EndIf对象框ClassInitialize:vBrand=“Audi”窗体加文本框品牌BrandvGas=100’初始化类中的数据油量Gas对应后面Text1、2命令按钮RunAddGasForm1通用:PrivateWithEnventsMyCarAsCar’声明Car类的对象变量MyCar:MyCar_NoGas:MsgBox“没油了!不能再跑了…”,vbCriticalForm_Load[]:SetMyCar=NewCar’创建Car对象实例Text1.Text=MyCar.Brand‘显示品牌Text2.Text=Format[MyCar.Gas]’显示油量Form_Unload:SetMyCar=Noting‘清除引用Command1_chlick[]:’Run按钮:MyCar.RunText2.Text=Format[MyCar.Gas]’更新油量显示Command2.click’AddGas按钮MyCar.AddGasText2.Text=Format[MyCar.Gas]’更新油量显示Text1_KeyPress更新品牌:IfKeyAscii=vbKeyReturnThen’Enter键MyCar.Brand=Text1.Text’写入Brand属性值Text1.Text=MyCar.Brand’更新显示EndIf10.创建ActiveX控件新建MyClock加Timer控件.ocx.Interval:1000间隔1秒加标签控件Label1显示时间U