精简第七章用户界面设计课件_第1页
精简第七章用户界面设计课件_第2页
精简第七章用户界面设计课件_第3页
精简第七章用户界面设计课件_第4页
精简第七章用户界面设计课件_第5页
已阅读5页,还剩191页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第7章用户界面设计

7.17.2通用对话框7.3菜单设计7.4多重窗体

7.5鼠标和键盘7.6综合应用第7章用户界面设计7.117.1常用控件

在VB中控件大致分为三类:标准控件:在工具箱中默认显示ActiveX控件:是扩展名为.ocx的独立文件,是VB工具箱的扩充部分可插入对象:是Windows应用程序的对象添加删除ActiveX控件ActiveX控件在使用前需要执行“工程”菜单下的“部件”命令,在打开的“部件”对话框中选择“控件”标签,然后选择需要加入工具箱中的ActiveX控件名,单击“确定”即可将控件加入到工具箱中7.1常用控件在VB中控件大致分为三类:27.1.1单选按钮、复选框和框架1.单选按钮(OptionButton)单选按钮以组的形式出现,只允许选择一项重要属性

Caption属性按钮上显示的文本Value属性表示单选按钮的状态:

True——被选定

False——未被选定重要事件Click事件:单击后使Value属性为TrueSetFocus方法是单选钮控件最常用的方法,可以在代码中通过该方法将Value属性设置为TrueOption2.SetFocus7.1.1单选按钮、复选框和框架3用于给定选项的选取,可以同时选取多项(复选)Value属性值为整型,表示复选框的状态:0--vbUnchecked未选定1--vbChecked被选定2--vbGrayed灰色,并显示一个选中标记Caption:复选框标题文字重要事件Click事件:用户单击后,复选框自动改变状态2.复选框(CheckBox)

用于给定选项的选取,可以同时选取多项(复选)2.复选框(Ch43.框架(Frame)

作为容器,用于放置控件,可以整体移动。主要用于单选钮的分组,一组中的单选钮互斥,与另一组单选钮无关Caption属性,给出框架的标题注意:1.必须先有框架,再向框架中放入其他控件2.若用框架将现有的控件分组,则选定控件剪切、选中框架再粘贴框架可以响应Click和DoubleClick事件,但一般不需要编写事件过程

框架设Caption为"字体"3.框架(Frame)作为容器,用于放置控件,可以整体移5例:窗体上有一个名称为Frame1的框架,若要把框架上显示的“Frame1”改为汉字“框架”下面正确的语句是A)Frame1.Name="框架“B)Frame1.Caption="框架“C)Frame1.Text="框架“D)Frame1.Value="框架"例:窗体上有一个名称为Frame1的框架,若要把框架上显示的6例:窗体上画两个单选按钮(Option1、Option2,标题分别为“宋体”“黑体”)1个复选框(Check1,标题为“粗体”)1个文本框(Text1,Text属性为“改变文字字体”),程序运行后要求“宋体”单选按钮和“粗体”复选框被选中,则能实现的语句是:A)Option1.Value=FalseCheck1.Value=TrueB)Option1.Value=TrueCheck1.Value=0C)Option1.Value=FalseCheck1.Value=2D)Option1.Value=TrueCheck1.Value=1例:窗体上画两个单选按钮(Option1、Option2,标7例7.2PrivateSubOption1_Click()Text1.FontName="宋体"EndSubPrivateSubOption2_Click()Text1.FontName="黑体"EndSubPrivateSubCheck1_Click()Text1.FontBold=NotText1.FontBoldEndSubPrivateSubCheck2_Click()Text1.FontItalic=NotText1.FontItalicEndSubPrivateSubCheck3_Click()Text1.FontStrikethru=NotText1.FontStrikethruEndSubPrivateSubCheck4_Click()Text1.FontUnderline=NotText1.FontUnderlineEndSub例7.28例7.2对象属性Frame1Frame2Check1计算机Check2操作系统Option1Windows2000Option2Windows98Combo1Text1Label1品牌:Label2数量:Command1OKList1例7.2对象属性Frame1Frame2Check1计算机C9PrivateSubForm_Load()Combo1.Enabled=FalseText1.Enabled=FalseOption1.Enabled=FalseOption2.Enabled=FalseEndSubPrivateSubCheck1_Click()Combo1.Enabled=NotCombo1.EnabledText1.Enabled=NotText1.EnabledEndSubPrivateSubCheck2_Click()Option1.Enabled=NotOption1.EnabledOption2.Enabled=NotOption2.EnabledEndSubPrivateSubForm_Load()10PrivateSubCombo1_LostFocus()flag=FalseFori=0ToCombo1.ListCount–1IfCombo1.List(i)=Combo1.TextThenflag=TrueExitForEndIfNextiIfNotflagThenCombo1.AddItemCombo1.TextEndIfEndSubPrivateSubCombo1_LostFocus()11PrivateSubCommand1_Click()IfCheck1.Value=1ThenList1.AddItemCombo1.TextList1.AddItemText1EndIfIfCheck2.Value=1ThenIfOption1.ValueThenList1.AddItem"Windows2000“ElseList1.AddItem"Windows98“EndIfEndIfEndSubPrivateSubCommand1_Click()127.1.2滚动条和进度条

滚动条(ScrollBar)通常附在窗体上协助观察数据或确定位置,也可作为数据输入工具进度条(ProgressBar)用来指示事务处理的进度7.1.2滚动条和进度条滚动条(ScrollBar)通常13滚动条属性滚动条控件(ScrollBar)分为水平滚动(HScrollbar)和垂直滚动条(VscrollBar)Value:滑块当前位置的值(缺省为0)Min:滑块处最小位置的值(缺省为0)Max:

滑块处在最大位置的值SmallChange单击滚动条两端的箭头时,Value属性(滑块位置)增加或减少的值LargeChange单击滚动条的空白区域时,Value属性增加或减少的值滚动条属性滚动条控件(ScrollBar)分为水平滚动(HS14滚动条事件(1)Change事件改变Value属性值(滚动条内滑块位置改变)时发生单击滚动条两端的箭头或空白处将引发Change事(2)Scroll事件按水平方向或垂直方向滚动时,Scroll事件发生拖动滑块时会触发Scroll事件Scroll事件与Change事件的区别:当滚动条控件滚动时Scroll事件一直发生,而Change事件只是在滚动结束之后才发生一次滚动条事件(1)Change事件15例7.3计算0~18之间某个数阶乘,数据由滚动条获得。滚动条属性设置:Max属性18,Min属性0,Value初值0

SmallChange属性为1,LargeChange属性为3PrivateSubHScroll1_Change()DimiAsInteger,sAsDoubles=1n=HScroll1.ValueIfn<>0ThenFori=1Tons=s*iNextiEndIfLabel2.Caption=n&"!="&sEndSub例7.3计算0~18之间某个数阶乘,数据由滚动条获得。Pri16例7.4设计一个调色板应用程序,使用三个滚动条作为三种基本颜色的输入工具。三个滚动条属性设置:Max属性255Min属性0,Value初值0

SmallChange属性为1,LargeChange属性为25两个按钮,一个文本框一个标签例7.4设计一个调色板应用程序,使用三个滚动条作为三个滚17DimRed&,Green&,BlueAsLongPrivateSubCommand2_Click()Text1.BackColor=Label1.BackColorEndSubPrivateSubCommand1_Click()Text1.ForeColor=Label1.BackColorEndSubPrivateSubHScroll1_Change()Red=HScroll1.ValueGreen=HScroll2.ValueBlue=HScroll3.ValueLabel1.BackColor=RGB(Red,Green,Blue)EndSubDimRed&,Green&,BlueAsLong18PrivateSubHScroll2_Change()Red=HScroll1.ValueGreen=HScroll2.ValueBlue=HScroll3.ValueLabel1.BackColor=RGB(Red,Green,Blue)EndSubPrivateSubHScroll3_Change()Red=HScroll1.ValueGreen=HScroll2.ValueBlue=HScroll3.ValueLabel1.BackColor=RGB(Red,Green,Blue)EndSubPrivateSubHScroll2_Change()19例、窗体上有一个名称为Hscroll1的滚动条,程序运行后,当单击滚动条两端的箭头时,立即在窗体上显示滚动块的位置(即刻度值),能实现操作的过程是

A)PrivateSubHScroll1_Changc()PrintHScroll1.ValueEndSubB)PrivateSubHSctroll1_Change()

PrintHScroll1.SmallChange

EndSub

C)PrivateSubHScroll1_Scroll()PrintHScroll1.ValueEndSubD)PrivateSubHScroll1_Scroll()

PrintHScroll1.SmallChange

EndSub例、窗体上有一个名称为Hscroll1的滚动条,程序运20例:设窗体上有一个名称为HScroll1的水平滚动条,当滚动块移动位置后,能够在窗体上输出移动的距离(即新位置与原位置的刻度值之差,向右移动为正数,向左移动为负数)。下面可实现此功能程序,请填写

Dim

AsIntegerPrivateSubForm_Load()pos=HScroll1.ValueEndSubPrivateSubHScroll1_Change()Print

-pospos=HScroll1.ValueEndSub

HScroll1.value

pos例:设窗体上有一个名称为HScroll1的水平滚动条,HSc21ProgressBar控件

ProcessBar控件位于MicrosoftWindowsCommonControls6.0部件中,其添加到工具箱后的图标ProcessBar控件用于:监视一个较长操作完成的进度,它通过从左到右用一些方块填充矩形的形式来表示操作处理的进程。属性:Orientation:决定进度条有水平和垂直两种

0ccOrientationHorizontal(默认)1ccOrientationVerticalProgressBar控件ProcessBa22Max和Min设置控件的界限Value控件执行阶段被填充的数目,直到等于Max.控件显示的填充数是Value属性与Max和Min属性之间的比值(如:Max=5和Min=0,Value=2,那么就填充五分之二)在对ProgressBar编程时,必须先确定Value属性上限Max和Min设置控件的界限23例7.5用进度条来指示一个大数组的元素赋值进度。SubCommand1_Click()DimiAsInteger,a(25000)AsStringProgressBar1.Min=LBound(a)ProgressBar1.Max=UBound(a)ProgressBar1.Visible=TrueProgressBar1.Value=ProgressBar1.MinFori=LBound(a)ToUBound(a)a(i)="Initialvalue"&iProgressBar1.Value=iNextiProgressBar1.Visible=FalseProgressBar1.Value=ProgressBar1.MinFori=1To10Printa(i)NextiEndSub例7.5用进度条来指示一个大数组的元素赋值进度。247.1.3图形框和图像框图形框PictureBox控件作用:显示图片,也可作为其他控件的容器在程序运行时装入图形:Picture1.Picture=LoadPicture(“图形文件路径及名称")删除图形框中图形Picture1.Picture=LoadPicture(“”)装入另一个图形框中的图形Picture1.Picture=Picture2.Picture

Autosize属性

True图形框自动调整大小与图片匹配

False图形超过图形框的部分将被剪裁掉7.1.3图形框和图像框图形框PictureBox控件25图像框Image

使用方法与图形框相同区别:1.图形框作为一个“容器”,可以把其他控件放在其内作为它的“子控件”,当图形发生位移,其内的子控件也跟着一起移动。图像框内不能存放其他控件

2.没有Autosize属性,但有Stretch属性3.图形框可通过Print方法显示文本,而图像框不能

Stretch属性

False:图像框自动改变大小适应其中的图形

True:图形根据图像框的大小自动调整尺寸图像框Image使用方法与图形框相同26例7.6说明图像框的Stretch属性对加载的图形的影响Max属性20、Min属性0,Value初值10DimH&,WAsLongSubCheck1_Click()Image1.Stretch=Check1.ValueEndSubSubForm_Load()H=Image1.HeightW=Image1.WidthEndSubSubHScroll1_Scroll()Image1.Height=H*HScroll1.Value/10Image1.Width=W*HScroll1.Value/10EndSub例7.6说明图像框的Stretch属性对加载的图形的影响277.1.4定时器

时钟控件(Timer)又称定时器控件,用于有规律地定时执行指定的工作如计时、倒计时、动画等在程序运行阶段,时钟控件不可见。定时器以一定的时间间隔产生Timer事件属性(1)Interval属性(缺省设置为0

)单位:为毫秒(0.001秒),表示计时间隔若将Interval属性设置为0或负数,则计时器停止工作

(2)Enabled属性(缺省设置为True)设置为True,而且Interval>0,则计时器开始工作(以Interval属性值为间隔,触发Timer事件)设置为False可使时钟控件无效,即计时器停止工作。7.1.4定时器时钟控件(Timer)又称定时器控件,用28事件:时钟控件只有Timer事件当Enabled属性值为True且Interval属性值大于0时,该事件以Interval属性指定的时间间隔发生常常将需要定时执行的操作放在Timer事件过程中事件:29例、设窗体上有一个标签Label1和一个计时器Timer1,Timer1的Interval设置为1000,Enabled设置为True。程序运行时每秒在标签中显示一次系统当前时间A)PrivateSubTimer1_Timer()Label1.Caption=True

EndSub

B)PrivateSubTimer1_Timer()

Label1.Caption=Time

EndSub

C)PrivateSubTimer1_Timer()Label1.Interval=1EndSubD)PrivateSubTimer1_Timer()

Fork=lToTimer1.Interval

Label1.Caption=Timer

Nextk

EndSub

例、设窗体上有一个标签Label1和一个计时器Timer130例:某人在窗体上画了一个Timer1的计时器,属性设置为Enabled=True,Interval=0,一个标签Label1的并编程如下。希望在每2秒在标签上显示一次系统当前时间

PrivateSubTimer1_Timer()

Label1.Caption=Time

EndSub

程序执行时发现未能实现上述目的那么应做的修改是

A)通过属性窗口把计时器的Interval属性设置为2000

B)通过属性窗口把计时器的Enabled属生设置为False

C)把事件过程中的Label1.Caption=Time语句改为Timer1.Interval=Time

D)把事件过程中的Label1.Caption=Time语句改为Label1.Caption=Timer1.Time例:某人在窗体上画了一个Timer1的计时器,属性设置31例7.7设计一个倒计时应用程序:设置Enabled=False,Interval=1000DimtAsIntegerSubCommand1_Click()t=60*Val(Text1.Text)Timer1.Enabled=TrueEndSubSubTimer1_Timer()Dimm%,sAsIntegert=t-1m=t\60s=tMod60Label1.Caption=m&"分"&s&"秒"If(t=0)ThenTimer1.Enabled=FalseMsgBox("时间到!")EndIfEndSub例7.7设计一个倒计时应用程序:设置Enabled=Fal32例7.8用一个定时器控制蝴蝶在窗体内的飞舞

对象名属性设置Command1Caption退出Timer1Interval200Image1PictureBfly1.bmpImage2PictureVisibleBfly2.bmpFalseImage3PictureVisibleBfly1.bmpFalse例7.8用一个定时器控制蝴蝶在窗体内的飞舞对象名属性设置C33PrivateSubTimer1_Timer()StaticxAsIntegerIfx=0ThenImage1.Picture=Image2.Picturex=1ElseImage1.Picture=Image3.Picturex=0EndIfEndSubPrivateSubTimer1_Timer()34PrivateSubTimer1_Timer()StaticxAsIntegerImage1.MoveImage1.Left+150,Image1.Top–100IfImage1.Top<=0ThenImage1.Left=0Image1.Top=2320EndIfIfx=0ThenImage1.Picture=Image2.Picturex=1ElseImage1.Picture=Image3.Picturex=0EndIfEndSubPrivateSubTimer1_Timer()357.2通用对话框

VB提供了一组标准对话框利用通用对话框控件可在窗体上创建打开文件、保存文件、颜色、字体、打印等对话框。

工程

选定部件标签选定MicrosoftCommonDialogControl6.0通用对话框添加到工具箱确定7.2通用对话框VB提供了一组标准对话框工程选定部件标36例7.9通过打开文件对话框,选择一个.bmp图片文件,在图形框中显示该图片

PrivateSubCommand1_Click()CommonDialog1.ShowOpenImage1.Picture=LoadPicture(CommonDialog1.FileName)EndSub例7.9通过打开文件对话框,选择一个.bmp图片文件,在37通用对话框的属性设置方法:1.在“属性页”对话框中设置2.在程序代码中设置,必须设置在显示对话框之前CommonDialog1.FileName="*.bmp“CommonDialog1.InitDir="C:\“CommonDialog1.Filter="pictures(*.bmp)|*.bmp|ALLfiles(*.*)|*.*“CommonDialog1.FilterIndex=1CommonDialog1.ShowOpen通用对话框的属性设置方法:CommonDialog1.Fil38通用对话框的基本属性和方法

(1)Action属性和Show方法:打开对话框

ShowHelp6帮助(Help)对话框ShowPrinter5打印(Print)对话框ShowFont4字体(Font)对话框ShowColor3颜色(Color)对话框ShowSave2另存为(SaveAs)对话框ShowOpen1打开(Open)文件对话框Show方法Action属性通用对话框的类型该属性只能在程序中赋值CommonDialog1.Action=1

CommonDialog1.ShowOpen通用对话框的基本属性和方法(1)Action属性和Sho39通用对话框的基本属性和方法(2)DialogTiltle属性:设置通用对话框标题(3)CancelError属性:逻辑型值,表示用户在与对话框进行信息交换时,按下“取消”按钮时是否产生出错信息。

True:选择取消按钮,出现错误信息(错误标志Err设置为32755Cancelwasselected

)False:选择取消按钮,没有错误警告。通用对话框的基本属性和方法(2)DialogTiltle属40由ShowOpen或Action属性为1来实现重要属性:(1)FileName(文件名称):用户所要打开的文件名(2)InitDir(初始化路径):指定打开对话框中的初始目录(3)Filter(过滤器):确定文件列表框中所显示文件的类型(多组用|分隔)若在“文件类型”列表框显示三种文件类型供用户选择

Documents(*.DOC)扩展名为DOC的Word文件

TextFiles(*.TXT)扩展名为TXT的文本文件

AllFiles(*.*)所有文件Documents(*.DOC)|*.DOC|TextFiles(*.TXT)|*.TXT|AllFiles(*.*)|*.*7.2.1打开文件对话框由ShowOpen或Action属性为1来实现7.2.1打41DialogTiltleFileName

InitDirFilterFilterIndexDefaultExt(4)FilterIndex(过滤器索引)属性:为整型值表示用户在文件类型列表框选定了第几组文件类型。(5)DefaultExt属性:字符型确定保存文件的缺省扩展名DialogTiltleFileNameInitDirFi42FilterFileNameInitDir

FilterIndexDialogTiltleFilterFileNameInitDirFilterIn43例7.10编写一个简单的文本文件编辑程序当用户要求单击“打开”就弹出打开对话框,当用户选择一文本文件,便可将该文件内容读入到文本框;对象属性设置TextBoxNameText1MultiLineTrueScrollBars2-VerticalCommonDialogNameCommonDialog1FileName*.TXTInitDirC:\FilterTextFiles(*.TXT)|*.TXT|AllFiles(*.*)|*.*FilterIndex1例7.10编写一个简单的文本文件编辑程序对象属性设置Name44PrivateSubCommand1_Click()CommonDialog1.ShowOpenText1.Text=""OpenCommonDialog1.FileNameForInputAs#1DoWhileNotEOF(1)LineInput#1,inputdataText1.Text=Text1+inputdata+vbCrLfLoopClose#1EndSubPrivateSubCommand6_Click()EndEndSubPrivateSubCommand1_Click()457.2.2保存文件对话框

由ShowSave方法或Action属性为2来实现与打开文件对话框的属性基本相同特有的属性是DefaultExt,用于设置缺省的扩展名例7.10中另存命令按钮编写代码,保存文本框内信息SubCommand2_Click()CommonDialog1.FileName="Default.DOC"CommonDialog1.DefaultExt="DOC"CommonDialog1.ShowSave OpenCommonDialog1.FilenameForOutputAs#1Print#1,Text1.Text

Close#1 EndSub

7.2.2保存文件对话框由ShowSave方法或Act467.2.3颜色对话框

由ShowColor或Action属性为3实现打开颜色对话框重要属性Color:用来返回或设置选定的颜色例7.10颜色命令按钮编写事件过程设置文本框前景色SubCommand3_Click()CommonDialog1.ShowColorText1.ForeColor=CommonDialog1.ColorEndSub7.2.3颜色对话框由ShowColor或Action属477.2.4字体对话框

由ShowFont方法或Action属性为4来实现字体对话框重要的属性有:Color,FontName,FontSize,FontBoldFontItalic,FontStrikethru,FontUnderline等

FontName

FontBold、FontItalicFontSizeFontStrikethruFontUnderline

Color7.2.4字体对话框由ShowFont方法或Action48显示字体对话框前必须设置Flags属性,否则发生不存在字体错误Flags属性:设置所显示的字体类型,按下表取值常数值说明cdlCFScreenFonts&H1屏幕字体cdlCFPrinterFonts&H2打印机字体cdlCFBoth&H3打印机字体和屏幕字体cdlCFEffects&H100显示删除线和下划线检查框以及颜色组合框cdlCFEffects不能单独使用和其他三种用Or连接使用显示字体对话框前必须设置Flags属性,否则发生不存在字体错49例7.10中的字体按钮编写设置文本框字体的过程PrivateSubCommand4_Click()CommonDialog1.Flags=cdlCFBothOrcdlCFEffectsCommonDialog1.ShowFontText1.FontName=CommonDialog1.FontNameText1.FontSize=CommonDialog1.FontSizeText1.FontBold=CommonDialog1.FontBoldText1.FontItalic=CommonDialog1.FontItalicText1.FontStrikethru=CommonDialog1.FontStrikethruText1.FontUnderline=CommonDialog1.FontUnderlineText1.ForeColor=CommonDialog1.ColorEndSub例7.10中的字体按钮编写设置文本框字体的过程507.2.5打印对话框

由ShowPrinter方法或Action属性为5来实现打印对话框重要的属性有:FromPage:整型起始页号Topage:整型终止页号Copies:整型打印份数FromPageTopageCopies7.2.5打印对话框由ShowPrinter方法或Act51

例10.5

例10.2中“打印...”按钮的事件过程PrivateSubCommand5_Click()CommonDialog1.Action=5Fori=1ToCommonDialog1.CopiesPrinter.PrintText1.TextNextiPrinter.EndDocEndSub例10.5例10.2中“打印...”按钮的事件过程52对上述程序,下列叙述中错误的是A)单击“打开”按钮显示打开文件对话框

B)单击“保存”按钮显示保存文件对话框

C)单击“打印”按钮,能够设置打印选项,并执行打印操作

D)单击“退出”按钮,结束程序的运行例、窗体上有一个名称为CD1的通用对话框控件和由四个命令按钮组成的控件数Command1,其下标从左到右分别为0、1、2、3,窗体外观如图所示

PrivateSubCommand1_Click(IndexAsInteger)

SelectCaseIndex

Case0

CD1.Action=1

Case1

CD1.ShowSave

Case2

CD1.Action=5

Case3

End

EndSelectEndSub对上述程序,下列叙述中错误的是例、窗体上有一个名称为CD1的53例:在窗体上有1个名为Cd1的通用对话框,为了在运行程序时打开保存文件对话框,则在程序总应使用的语句是()

A)Cd1.Action=2

B)Cd1.Action=1

C)Cd1.ShowSave=Ture

D)Cd1.ShowSave=0

例:在窗体上有1个名为Cd1的通用对话框,为了在547.3菜单设计

菜单是Windows应用程序中十分关键的要素之一,它以分组的形式组织多个命令或操作,为用户灵活操作应用程序提供了便捷的手段。菜单可分为两种基本类型:下拉式和弹出式菜单下拉式菜单:一般通过单击菜单栏中菜单标题(如“文件”、“编辑”、“视图”等)的方式打开弹出式菜单:则通过用鼠标右键单击某一区域打开快捷键热键子菜单标记主菜单菜单项子菜单名分隔线7.3菜单设计菜单是Windows应用程557.3.1菜单编辑器

菜单列表框菜单项属性

操作按钮分隔线:在标题栏输入一个连字符“-”启动菜单编辑器:“工具”———“菜单编辑器”7.3.1菜单编辑器菜单列表框菜单项属性操作按钮分隔56菜单编辑器的使用技巧1.标题(Caption)2.名称(Name)3.快捷键(Shortcut)4.下一个(Next)5.←和→按钮6.插入(Insert)按钮7.删除(Delete)按钮8.↓和↑按钮 9.复选Checked检查框10.有效Enabled,可见Visible检查框根据设计要求,依次输入或选择项目,即可菜单编辑器的使用技巧1.标题(Caption)根据设计要求571.标题(Caption):若输入文件(&F)热键:Alt+F

2.名称(Name): 菜单项的名称,分界符-也应有名称3.快捷键(Shortcut):下拉列表框选择一个键4.下一个(Next): 设置下一个菜单项5.←和→:“→”下一级菜单项;“←”上一级菜单项6.插入(Insert)按钮:插入菜单项7.删除(Delete)按钮:删除菜单项8.↓和↑按钮: 改变菜单项位置9.复选(Checked)检查框:菜单项为选定项10.有效(Enabled)检查框:True:菜单项可选;False:不可选。1.标题(Caption):若输入文件(&F)热键:Alt58菜单项除了Name、Visible、Enabled等属性之外,还具有下列重要属性:(1)标题(Caption)菜单项上显示的标题文本在字符前加一个&符号构成热键。例如:输入“新建(&N)”,则菜单显示“新建(N)”,N为热键(用Alt+N来打开菜单)菜单项的分隔符,输入一个减号“-”。(2)Checked控制菜单项左边是否显示“√”菜单项的事件Click

为菜单项编写程序菜单项除了Name、Visible、Enabled等属性之外591.设计下拉菜单:2.设计子菜单或改变子菜单级别:3.为菜单项分组:菜单名用减号“-”4.为菜单项指定访问键和快捷键5.为菜单项加上复选标记6.禁止使用菜单项在程序代码中可以通过程序代码:菜单名.Enabled=False7.菜单项的增减

菜单设计的步骤:1.设计下拉菜单:菜单设计的步骤:60例7.15将例7.10中的命令组织成菜单在窗体上放置一个文本框,一个通用对话框标题名称快捷键标题名称快捷键文件File编辑Edit…新建NewCtrl+N…复制CopyCtrl+C…打开OpenCtrl+O…剪切CutCtrl+X…另存为SaveAsCtrl+S…粘贴PasteCtrl+V…打印Print格式Format…结束Exit…字体Font…颜色Color例7.15将例7.10中的命令组织成菜单标题名称快捷键标题名61PrivateSubOpen_Click()CommonDialog1.ShowOpenText1.Text=""OpenCommonDialog1.FileNameForInputAs#1DoWhileNotEOF(1)LineInput#1,inputdataText1.Text=Text1+inputdata+vbCrLfLoopClose#1EndSubPrivateSubNew_Click()Text1.Text=""EndSubPrivateSubOpen_Click()62DimstAsStringPrivateSubCopy_Click()st=Text1.SelTextEndSubPrivateSubCut_Click()st=Text1.SelTextText1.SelText="“EndSubPrivateSubPaste_Click()Text1.SelText=stEndSubPrivateSubExit_Click()EndEndSubDimstAsString637.3.2弹出菜单

用户在某个对象上单击鼠标右键时的位置,弹出菜单项设计过程与普通菜单相同。菜单弹出的方法:对象.PopupMenu菜单名,标志参数,x,y菜单名不能省略标志参数,表示弹出的位置和性能,用Or组合x,y:指定弹出菜单显示的位置分类常数值说明位置vbPopupMenuLeftAlign0x位置确定弹出菜单的左边界(默认)vbPopupMenuCenterAlign4弹出菜单以x为中心vbPopupMenuRightAlign8x位置确定弹出菜单的右边界性能vbPopupMenuLeftButton0鼠标左键弹出菜单vbPopupMenuRightButton2鼠标右键弹出菜单7.3.2弹出菜单用户在某个对象上单击鼠标右键时的位置64为创建一个不显示在菜单栏里的菜单,可在设计时使顶级菜单项目为不可见(“Visible”复选框没有被选上)当VB显示一个弹出式菜单时,指定的顶级菜单的Visible属性会被忽略例:实现弹出式菜单标题名称标题名称字体txtfont形式Styl…宋体st…粗体ct…楷体kt…斜体xt…黑体ht…下划线xhx为创建一个不显示在菜单栏里的菜单,可在设计时使例:实现弹出式65PrivateSubLabel1_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle) IfButton=2Then PopupMenuStyl,6 EndIfEndSubPrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle) IfButton=2Then PopupMenutxtfont,6 EndIfEndSubPrivateSubLabel1_MouseDown(B667.4多重窗体

指一个应用程序中有多个并列的普通窗体,每个窗体有自己的界面和代码,完成不同的功能1.添加窗体工程——添加窗体,每个窗体有独立的Form文件,同一工程不能有相同名称的窗体。2.设置启动对(开始窗体)工程工程1属性启动对象(缺省为Form1窗体)7.4多重窗体指一个应用程序中有多个并列的普通窗体,每67SubMain过程:需要在启动程序时执行一个特定的过程。在VB中,这样的过程称为启动过程,并命名为SubMainSubMain过程不能在窗体模块内,必须在标准模块中。其建立方法如下:1)选择“工程”菜单中的“添加模块”菜单项2)在该模块(默认名称为Module1)的代码窗口中键入:SubMain后按回车键,系统自动给出过程的开始行和结束行3)在其中输入过程代码,并保存模块文件Module1.bas4)选择“工程”菜单中的“工程属性”菜单项,打开“工程属性”对话框5)选择“通用”选项卡,在“启动对象”下拉列表中,选择SubMain,并按“确定”按钮SubMain过程:需要在启动程序时执行一个特定的过程。在68窗体语句和方法(1)Load语句:装入窗体到内存可以引用窗体中的各对象,如控件及其各种属性,但此时窗体没有显示出来形式:Load窗体名称(2)Unload语句从内存删除窗体形式:

Unload窗体名称或

UnloadMe(3)Show方法:显示窗体(加载并显示两种功能)形式:

窗体名称.Show

模式

模式为0:可以同时对其它窗体进行操作(默认值)模式为1:关闭才能对其它窗体进行操作

(4)Hide方法:隐藏窗体(没从内存删掉)形式:

窗体名称.Hide窗体语句和方法(1)Load语句:装入窗体到内存可以引用窗体69不同窗体数据的存取(1)直接访问另一个窗体上的控件数据另一个窗体名.控件名.属性

Text1=Val(Form2.Text1)+Val(Form2.Text2)(2)访问另一个窗体中的全局变量另一个窗体名.全局变量名(3)在模块定义公共变量,实现相互访问在Module1定义变量:PublicxAsString不同窗体数据的存取(1)直接访问另一个窗体上的控件数据70例:应用程序增加一个“登录”窗体来控制非法用户使用在窗体Form2中输入密码,正确后弹出窗体Form1选择Form2作为启动窗体在窗体Form1中编辑代码PrivateSubForm_Load()Label1.Caption="欢迎使用"&Chr(13)&"飞腾公司销售系统"EndSub例:应用程序增加一个“登录”窗体来控制非法用户使用在窗体Fo71在窗体Form2中编辑代码

PrivateSubCommand1_Click() IfLCase(Text1.Text)="abcde"Then UnloadForm2

Form1.Show Else MsgBox"对不起,口令错!" Text1.Text="" Text1.SetFocus EndIfEndSubPrivateSubCommand2_Click() EndEndSub在窗体Form2中编辑代码72例7.17多重窗体应用:输入学生五门课程的成绩,计算总分及平均分并在不同窗体内显示在窗体Module1中通用处编辑代码PublicMath!,Physics!,Chemistry!,Chinese!,English

AsInterger例7.17多重窗体应用:输入学生五门课程的成绩,计算在窗体M73在窗体Form1中编辑代码PrivateSubCommand1_Click()Form1.Hide:Form2.ShowEndSubPrivateSubCommand2_Click()Form1.Hide:Form3.ShowEndSubPrivateSubCommand3_Click()EndEndSub在窗体Form2中编辑代码PrivateSubCommand1_Click()Math=Val(Text1.Text)Physics=Val(Text2.Text)Chemistry=Val(Text3.Text)Chinese=Val(Text4.Text)English=Val(Text5.Text)Form2.Hide:Form1.ShowEndSub在窗体Form1中编辑代码74在窗体Form3中编辑代码PrivateSubCommand1_Click()Form3.HideForm1.ShowEndSubPrivateSubForm_Activate()DimTotalAsSingleTotal=Math+Physics+Chemistry+Chinese+EnglishText1.Text=Total/5Text2.Text=TotalEndSub在窗体Form3中编辑代码757.5鼠标和键盘

7.5.1鼠标鼠标事件需要注意事件发生在哪一个对象上Click、DblClick事件MouseDown:按下任意一个鼠标按钮时被触发MouseUp:释放任意一个鼠标按钮时被触发MouseMove:移动鼠标时被触发7.5鼠标和键盘7.5.1鼠标76MouseMove、MouseDown、MouseUp三个事件的过程的语法格式如下:SubObject_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)SubObject_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)SubObject_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)其中:1.Object是可选的一个对象表达式,可以是窗体对象和大多数可视控件。2.Button参数是表示按下或松开鼠标哪个按钮

MouseMove、MouseDown、MouseUp三个事77参数Button值参数(Button) 值 说明vbLeftButton 1 左按钮被按下vbRightButton 2 右按钮被按下vbMiddleButton 4 中间按钮被按下Shift参数:包含了键盘的Shift、Ctrl和Alt键的状态信息参数Shift值参数(Shift)值 描述vbShiftMask1 SHIFT键被按下vbCtrlMask 2 CTRL键被按下vbAltMask 4 ALT键被按下参数X、Y:X,Y鼠标指针的坐标位置参数Button值S78例7.18显示鼠标器指针所指的位置PrivateSubForm_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)Text1.Text=XText2.Text=YEndSub

例7.18显示鼠标器指针所指的位置79例7.19设计一个最简单的画图程序。程序运行时,按住鼠标右键移动画圆,按住鼠标左键移动画线。DimDrawStateAsBooleanDimPreXAsSingleDimPreYAsSinglePrivateSubForm_Load()DrawState=FalseEndSubPrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)IfButton=1ThenDrawState=TruePreX=XPreY=YEndIfIfButton=2ThenCircle(X,Y),280EndIfEndSub例7.19设计一个最简单的画图程序。程序运行时,按住80PrivateSubForm_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)IfDrawState=TrueThenLine(PreX,PreY)-(X,Y)PreX=XPreY=YEndIfEndSubPrivateSubForm_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)IfButton=1ThenDrawState=FalseEndIfEndSubPrivateSubForm_MouseMove(But81例:在菜单编辑器中建立1个名称为Menu0的菜单项,将其“可见”属性设置为False,并建立若干子菜单

PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)

IfButton=1Then

PopupMenuMenu0

EndIf

EndSub

则以下叙述中错误的是。

A)该过程的作用是弹出一个菜单

B)单击鼠标右键时弹出菜单

C)Menu0是在菜单编辑器中定义的弹出菜单的名称

D)参数X、Y指明鼠标当前位置的坐标例:在菜单编辑器中建立1个名称为Menu0的菜单项,827.5.2键盘

KeyPress、KeyDown、KeyUp三种键盘事件,窗体和接受键盘输入的控件都识别这三种事件

KeyPress:按下并释放对应某ASCII字符的键KeyDown:按下键盘的任意键KeyUp:释放键盘的任意键1.KeyPress事件当用户按下和松开一个ASCII字符键时发生。该事件被触发时,被按键的ASCII码将自动传递给事件过程的KeyAscii参数格式是:SubObject_KeyPress(KeyAsciiAsInteger)7.5.2键盘KeyPress、KeyDown、Key83例如,如果希望将文本框中的所有字符都强制转换为大写字符,则可在输入时使用此事件转换大小写:PrivateSubText1_KeyPress(KeyAsciiAsInteger)KeyAscii=Asc(Ucase(Chr(KeyAscii)))EndSub例如,如果希望将文本框中的所有字符都强制转换为大写字符,则可842.KeyDown事件和KeyUp事件当焦点在某个对象时,用户按下键盘上的任一键,便引发该对象KeyDown事件,释放按键便触发KeyUp事件(窗体的KeyPreview属性设置为Ture)PrivateSub对象名_KeyDown(KeyCodeAsInteger,ShiftAsInteger)PrivateSub对象名_KeyUp(KeyCodeAsInteger,ShiftAsInteger)KeyCode参数项用于返回被按键的扫描代码由于扫描码主要反映物理键位,因此通过该参数不能区分字母大小写。所以“A”和“a”的keycode都是由Asc(“A”)值上档键字符和下档键字符也是使用同一键,它们的Keycode值相同2.KeyDown事件和KeyUp事件852.shift参数shift 表示是在该事件发生时响应SHIFT、CTRL和ALT键的状态,它是一个整数。其含义与上一节中MouseMove、MouseDown、MouseUp事件中的shift参数完全相同;例7.20编写程序按下Alt+F5组合键可终止程序的运行PrivateSubForm_KeyDown(KeyCodeAsInteger,ShiftAsInteger)If(KeyCode=vbKeyF5)And(Shift=4)ThenEndEndIfEndSub2.shift参数例7.20编写程序按下Alt+F5组合键可86例、文本框Text1的KeyDown事件过程如下:

PrivateSubText1_KeyDown(KeyCodeAsInteger,ShiftAsInteger)

EndSub

其中参数KeyCode的值表示的是发生此事件时A)是否按下了Alt键或Ctrl键B)按下的是哪个数字键

C)所按的键盘键的键码D)按下的是哪个鼠标键

例、文本框Text1的KeyDown事件过程如下:

Priv87例、窗体上有两个Text1、Text2的文本框。Text1的KeyUp的事件过程如下:

PrivateSubText1_KeyUp(KeyCodeAsInteger,shiftASInteger)

DimxASStringx=KeyCodeText2.Text=Chr(x+3)

EndSub

当向文本框Text1中输入小写字母a时,文本框Text2中显示的是

A)AB)aC)DD)d

例、窗体上有两个Text1、Text2的文本框。88例:在窗体上画一个命令按钮和两上文本,分别为

Command1、Text1和Text2,然后编写如下程序:

DimS1AsString,S2AsString

PrivateSubText1_KeyDown(KeyCodeAsInteger,ShiftAsInteger)

S2=S2&Chr(KeyCode)

EndSub

PrivateSubText1_KeyPress(KeyAsciiAsInteger)

S1=S1&chr(KeyAscii)

EndSub

PrivateSubCommand1_Click()

Text1.Text=S2:Text2.Text=S1

EndSub

程序运行后,在Text1中输入“abc”,然后单击命令按钮,在文本框Text1和Text2中显示的内容分别为

A)abc和ABCB)abc和abcC)ABC和abcD)ABC和ABC

例:在窗体上画一个命令按钮和两上文本,分别为89例:在窗体上画1个命令按钮和1个文本框,分别为Command1和Text1,写如下代码:

DimSaveAllAsString

PrivateSubCommand1_Click()

Text1.Text=Left(UCase(SaveAll),4)

EndSub

PrivateSubText1_KeyPress(KeyAsci

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论