版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章常用控件
7.1单选按钮和复选框
7.2框架
7.3列表框和组合框
7.4滚动条和滚动滑块
7.5时钟
7.6进度条*7.7数字增减按钮*7.8Animation控件*7.9SSTab控件
7.10鼠标器、键盘*7.11剪贴板VB可使用的三类控件内部控件位于工具箱中,不能删除ActiveX控件扩展名为.ocx的独立文件图标控件:工程—部件—控件添加到工具箱中代码控件:工程—引用不能添加到工具箱中可插入对象其他应用程序创建的对象,如Excel工作表等,可以添加到工具箱中作为控件使用工程—部件—可插入对象1.单选按钮从多个选项(标题)中选择一个
Name—option Caption—标题 Value(默认属性)—True选定 False未选定Alignment—确定按钮和标题的相对位置 0:按钮在左,标题在右(缺省设置) 1:按钮在右,标题在左单选按钮标题7.1单选按钮(OptionButton)和复选框(CheckBox)
Style—确定标题和按钮的显示方式0--Standard:标准方式(显示标题及按钮) 1--Graphical:图形方式(只显示标题)
Picture(Style=1) 放置未选中时的图标、位图或文字 DownPicture(Style=1) 放置选中时的图标、位图或文字 DisabledPicture(Style=1) 放置禁止选择时的图标、位图或文字事件 Click鼠标单击后,其Value值将自动改变
2.复选框也叫检查框,可以同时选择多个标题。Name—CheckCaption—标题Value(默认属性)—确定是否被选中0—Unchecked未被选定1—Checked选定2—Grayed灰色,禁止选择Alighment:同单选按钮Style:同单选按钮例7.1通过单选按钮和复选框使文本框内的文字显示不同的字体和修饰。用click()编程复选框标题Style=1Style=07.2框架(Frame)框架内控件的创建方法:
建立独立控件的方法:先创建框架,再单击工具箱上的控件,然后用鼠标(此时鼠标光标出现“+”)在框架内适当位置拖拉出适当大小的控件(不能使用双击工具箱上控件的自动方式)
建立控件数组的方法:先创建框架,建立第一个控件,然后通过“剪切”和粘贴(Ctrl+V)的方法将选定的控件粘贴到框架内,从而建立一个控件数组(不能直接用鼠标拖动控件的方式)框架的作用是将若干个单选按钮作为一个组,或者对一组控件进行整体激活或屏蔽操作。
框架设Caption为"字体"Name—Frame Caption—框架标题 Enabled—确定该控件是否可用 False:标题呈灰色,框架内的对象被屏蔽,不允许进行操作
True:标题呈正常显示,允许对框架内控件进行操作 Visible—确定该控件是否可见 True:框架及其控件可见 False:框架及其控件被隐藏事件 框架可以响应Click、DblClick事件,但一般不用编写有关框架的事件过程。例7.2设计字体和字号两个框架,其中各有若干个字体和字号单选按钮。在选择了某个字体和字号后,按“确定”按钮,使文本框内的文字按指定的字体和字号显示。
7.3列表框(ListBox)和组合框(ComboBox)1.列表框用来显示项目列表,程序运行时,用户可从其中可以选择一项或多项。如果列表框中选项较多,在列表框中装不下时,列表框会自动加上垂直滚动条。在列表框中可以单列显示,也可以多列显示,还可以在选项左边增加复选框。Style=0Style=1(1)主要属性Name—List List—是一个字符型数组,存放列表项,List(0)表示第1个列表项内容,List(i)表示第i+1个列表项内容①在属性窗口的List属性中输入:每输入一项用Ctrl+回车键,可继续输入下一项②在程序中用AddItem方法加入:List1.AddItem列表项[,索引号]ListIndex—获得选中项目的序号,没有项目选中时为-1Selected—逻辑型数组,Selected(i)的值为True表示第i+1项被选中,否则没有选中。ListCount—列表框中项目总数,ListCount-1是最后一项的下标Sorted—确定List中列表项的排列方式。True:按字母顺序排列;False:按加入先后顺序排列Text(默认属性)—被选中列表项的内容引用List1.List(ListIndex)与List1.Text具有相同的值MultiSelect—确定是否可以进行多项选择0--None:禁止多项选择1--Simple:简单多项选择(鼠标每击一次可选中一个,按空格键取消最近的选择)2--Extended:按住Ctrl,用鼠标单击可选中不连续的多项或空格键取消选择;按住Shift同时用鼠标或光标移动键可选择连续的多项Style—列表框样式0—只显示列表项文本1—列表项文本前带复选框Column—指定列表框中列的数目0—垂直单列显示,垂直滚动n—n列显示,先显示第1列,再显示第2列,水平滚动ListIndex、ListCount、Selected、Text只能在程序中引用Sorted必须在属性窗口中设置ListIndex和Selected分别用来检测选中的列表项的序号及某个列表项是否被选择,它们既可以在程序中被引用,也可以在程序中设置Column=0Column=3(2)方法① AddItem方法可以在列表框中加入一个项目 对象.AddItemitem[,index]List1.AddItem“计算机软件技术基础”,3(Item若为其他类型的常数,则按字符串对待) ② RemoveItem方法可以从列表框中删除一个项目对象.RemoveItemindexList1.RemoveItem7 ③ Clear方法可以清除列表框中的所有项目 对象.Clear(3)事件Click事件,一般不必编程,因为通常List控件与命令按钮联合使用,在选择列表框中的项目时,需要按命令按钮,可使用命令按钮的Click事件来读取列表框Text属性值。
例7.3①在Form_Load()事件中用AddItem方法在列表框中加入5个项目。②允许通过“添加”操作将文本框中输入的内容作为项目添加到列表框中③当选中列表框的某个项目后单击“删除”按钮,可将选中的项目删除掉;④当选中列表框中的项目然后单击“修改”按钮时,可将选中的项目内容放入文本框中由用户进行修改,然后单击“修改确认”按钮确认修改结果。初始时,“修改确认”按钮是不可选的编制5个事件过程
①Form_Load()添加5项②Command1_Click()将文本框的内容添加到列表框中③Command2_Click()删除选中的项④Command3_Click()将选中的项放入文本框⑤Command4_Click()将文本框的内容替换列表框内容2.组合框(ComboBox)
组合框将文本框和列表框组合成一个控件,用户既可以在列表框中选定项目,也可以在文本框中输入文本来选定项目。设计状态运行状态设计状态运行状态下拉式组合框Style=0只显示文本框和下拉箭头,不显示列表框,文本框高度不能改变可直接输入文本,也可单击下拉箭头弹出列表框,选中某项后,该项先写入文本框,同时下拉列表消失简单组合框Style=1同时显示文本框和列表框,没有下拉箭头,列表框的大小必须在设计时拉出,且在运行中不再改变。可直接输入文本,也可从列表框选中项目,文本框内显示,列表框始终显示。下拉式列表框Style=2与下拉式组合框相同与下拉式组合框相似,不同的是:只能从列表项中选择,不能输入文本列表框中的项目清单只有在程序运行时才能看到。下拉式组合框和简单组合框的文本框中输入的数据不能自动添加到列表框中。(1)主要属性Name—ComboStyle—设置组合框样式0—下拉式组合框(默认样式)1—简单组合框2—下拉列表框属性List、ListIndex、ListCount、Sorted、Text(默认属性)与列表框相同属性SelStart,SelLength,SelText与文本框相同(2)方法主要使用与列表框相同的AddItem、RemoveItem和Clear方法,用于在列表框中添加、删除或清除项目(3)事件三种风格的组合框均响应Click()事件简单组合框可响应DblClick事件例7.4在窗口中选择复选框“计算机”后,可在下拉式组合框的下拉列表框中选择计算机型号,也可直接在组合框的文本框中输入计算机型号,当选取操作系统的类型并按了“OK”按钮后,右边文本框中显示您所选择的计算机、台数及操作系统类型。需要编制5个事件过程:Form_Load()初始化Check1_Click()设置Combo1和Text1可用与否Check2_Click()设置Option1和Option2可用与否Combo1_LostFocus()将Combo1.text装入Combo1.List中将选中的信息装入列表框Command1_Click()7.4滚动条(ScrollBar)和滚动滑块(Slider)1.滚动条滚动条的主要作用是:①与不支持滚动的控件(如窗体)配合使用,给它们提供滚动查看的功能。②实现数据的连续调整,如控制声音音量或调整图片颜色等。滚动条分为垂直滚动条VScroll和水平滚动条HScroll(1)主要属性Name—HScroll,VScrollMax—最大值(-32,768~32,767)Min—最小值(-32,768~32,767)SmallChange:单击滚动条两端箭头时,滑块移动的增量LargeChange:单击滚动条空白处时,滑块移动的增量Value(默认属性)—滑块位置所代表的值水平滚动条垂直滚动条SmallChangeMinValueMaxSmallChangeLargeChangeLargeChange(2)主要事件 Scroll:拖动滑块时会触发Scroll事件。 Change:Value属性改变时触发Change事件。例7.5用一个文本框(Text1)显示水平滚动条(HScroll1)中滑块当前位置所代表的值。初始设置:Min=0Max=100Value=50Smallchange=2Largechange=10滚动条HScroll1的Change事件过程:SubHScroll1_Change()Text1.Text=HScroll1.ValueEndSub
请将上述change事件过程改为scroll事件过程,观察运行结果的变化。例7.6设计一个调色板程序,用三个水平滚动条改变三基色比例,合成的颜色显示在右边的文本框Text1中(用合成的颜色设置其BackColor属性);用同样的方法设置文本框Text2的前景和背景色。用滚动条的Value值表示各种颜色的比例,合成颜色=Red+Green*256+Blue*256*256对三个滚动条分别进行change或scroll事件编程,确定文本框1的背景色对两个命令按钮进行click事件编程,确定文本框2的前景色和背景色2.滚动滑块Slider滚动滑块是Windows操作系统提供的一种ActiveX控件,位于MicrosoftWindowsCommonControl6.0中。它由刻度和“滑块”共同构成。其中标尺由Min和Max属性定义。“滑块”可由用户通过鼠标或光标移动键控制。滚动滑块经常用来设置图形中某个点的值,设定要传送给数组的数的范围,改变窗体、字段或其它图形对象的大小等。运行时,可动态设置Min和Max属性以反映新的取值范围。Value属性返回滑块的当前位置。通过使用MouseDown和MouseUp等事件,Slider控件可以图形方式从一定的取值范围内选取一个值。(1)主要属性Name—SliderMax,Min,SmallChange,LargeChange,Value属性与滚动条相同TickStyle—设置标尺的位置及滑块的形状0123TickFrequency—设置滑块的滑动频率,值为n表示每隔n个单位显示一个刻度点。刻度数目=(Max-Min)/TickFrequency+1TextPosition—设置鼠标操作时,当前刻度值的提示位置(2)主要事件与滚动条相同,有Scroll和Change事件例7.7通过移动滑块来改变文本框中文字的大小。PrivateSubForm_Load()Slider1.Min=8Slider1.Max=72Slider1.SmallChange=2Slider1.LargeChange=8Slider1.TickFrequency=2EndSubPrivateSubSlider1_Scroll()Text1.FontSize=Slider1.ValueEndSub
时钟控件以Interval为时间间隔产生Timer事件。可用Timer事件来计时,或控制某一程序的运行。 1.主要属性 Name—TimerInterval—控制触发Timer事件的间隔时间,单位为毫秒(0.001s),取值范围为0~65535,即65.535秒。 Interval=0:屏蔽计时器,即不触发Timer事件。 Enabled(默认属性)—设置时钟是否计时 True:有效计时False:停止时钟工作 2.事件 Timer事件每隔Interval时间被触发一次,通过该事件可以产生系统时间或控制程序的运行时间。7.5时钟(Timer)【例】用时钟控件进行计时,在标签中以数字形式显示系统时间,每隔1秒跳字.将系统函数Time$()得到的系统时间存入标签的Caption属性中,并通过设置时钟的interval=1000使时钟每秒产生一个Timer事件触发标签的显示。设计时窗体上会出现时钟控件,但运行时,该控件消失。PrivateSubTimer1_Timer()Label1.Caption=Time$()EndSub数字时钟Dimh%,m%,s%PrivateSubCommand1_Click()Timer1.Enabled=TrueEndSubPrivateSubForm_Load()h=0:m=1:s=0hh=Format$(h,"00")mm=Format$(m,"00")ss=Format$(s,"00")Label1=hh&":"&mm&":"&ssTimer1.Enabled=FalseEndSubPrivateSubTimer1_Timer()Ifm=0Andh>0Thenh=h-1:m=60EndIfIfs=0Andm>0Thenm=m-1:s=60EndIfIfs>0Thens=s-1EndIfhh=Format$(h,"00")mm=Format$(m,"00")ss=Format$(s,"00")Label1=hh&":"&mm&":"&ssIfh=0Andm=0Ands=0ThenMsgBox("时间到!")EndEndIfEndSub【例】用时钟控件进行倒计时,在标签中以数字形式显示系统时间,每隔1秒跳字.演示例7.8设计一个定时闹钟。用户在两个文本框中输入定时的小时和分,然后按“定时”按钮启动时钟,时钟以1秒间隔显示系统时间。“停止”按钮用来制止铃响,“结束”按钮用来终止程序运行。
PrivateSubTimer1_Timer()Label5.Caption=Time$‘自动显示系统时间IfMid$(Time$,1,5)=hour+":"+minuteThenFori=1To100Beep‘定时响铃NextiEndIfEndSubTime$的表示形式为:hh:mm:ss例7.9用时钟控件控制蝴蝶从窗体内飞走的动画。设计三个Image控件,通过picture属性在Image2和Image3中各装入一个不同形态蝴蝶飞舞的图片,运行时,在Image1中每隔0.08秒依次装入两幅图片,形成动态效果,并通过move方法将Image1从左下角移到右上角。PrivateSubTimer1_Timer()StaticpickbmpAsBooleanImage1.MoveImage1.Left+20,Image1.Top-10IfpickbmpThenImage1.Picture=Image2.PictureElseImage1.Picture=Image3.PictureEndIfpickbmp=NotpickbmpEndSub进度条控件用来显示某种操作的进度,它也是一种ActiveX控件,由Windows操作系统提供,位于MicrosoftWindowsCommonControl6.0中。1.主要属性Max进度条的最大值(左边界值)Min进度条的最小值(右边界值)Value进度条当前值,该属性只能在程序中设置和引用。其中,Min<=Value<=Max,Value/(Max-Min)的百分比数即为被填充的蓝色方块数2.事件Click事件7.6进度条(ProgressBar)例7.10设计一个进度条,用来指示一个大数组冗长的操作进度,即进度条的进度表示处理数组的进展情况。假设数组有25000个元素,将ProgressBar1的Min和Max分别设置为数组的下界和上界,开始时ProgressBar1的Value值设置为Min。在循环中每对一个数组元素进行操作,就把数组元素的下标值赋给ProressBar1的Value。随着Value的增加,蓝色方块逐步向右延伸用来制作“数字增减”按钮,位于MicrosoftWindowsCommonControl-26.0中。它往往与其他控件“捆绑”在一起使用,方便用户修改与它关联的伙伴控件。例如,它经常与文本框或命令按钮捆绑使用。当单击向上或向下的箭头时,文本框或命令按钮中的值会相应地增加或减少。①在窗体中绘制伙伴控件②在窗体中绘制UpDown控件③用鼠标右键单击UpDown控件,并单击“属性”弹出“属性页”对话框④选择“合作者”选项卡⑤选中“自动合作者”复选框(即将AutoBuddy属性设置为True)⑥选中“同步合作者”复选框(即将SyncBuddy属性设置为True)*7.7UpDown控件(1)UpDown控件的属性页有三个选项卡:“通用”选项卡,指明UpDown控件的位置、方向“合作者”选项卡,指明其伙伴控件的名称及属性“滚动”选项卡中,指明最大值、最小值及增减量(2)UpDown可通过UpClick()和DownClick()事件触发。例:将UpDown控件与Text1和Label1联合使用,分别将Text1.text和Label1.Caption设为0,UpDown1和UpDown2的Max值设为20和100,Increment值分别设为1和10,则不必编程,Text1中的数字按1进行增减,直到20和0为止;Label1中的数字按10进行增减,直到100和0为止。①用“合作者”属性页将Uodown1和Text1合作,将UpDown2与Label1合作②用“滚动”属性页设置UpDown1和UpDown2的Value、Max、Min和Increment属性值③运行时,直接点击数字增减按钮1.Animation控件用来显示无声的AVI视频文件或无声动画片,它位于MicrosoftWindowsCommonControl-26.0中。在ProgramFiles\MicrosoftVisualStudio\Common\Graphics\AVIS中可以找到许多无声的.avi文件*7.8Animation和MMControl控件(2)方法①Open打开文件Animation1.Open文件名②Play播放Animation1.Playn播放n次Animation1.Play循环播放③Stop停止Animation1.Stop④Close关闭文件Animation1.Close(1)Animation主要属性Name:AnimationCenter(居中):为True时,动画在控件的中央播放AutoPlay(自动播放):为True时,用Open打开文件时自动播放,否则,必须用Play播放。PrivateSubAnimation1_Click()WithCommonDialog1.Filter="avi(*.avi)|*.avi".ShowOpenEndWithWithAnimation1.Autoplay=True.OpenCommonDialog1.FilenameEndWithEndSub例7.11动画片播放窗体上设置四个命令按钮,分别表示“打开”、“播放”、“停止”和“关闭”,一个框架,内有一个复选框和一个文本框。要求:“打开”—打开filecopy.avi文件“播放”—若选定复选框,则重复10次播放fiilecopy.avi(次数保存在文本框Text1中);否则,循环播放“停止”—停止播放“关闭”—关闭动画窗口PrivateSubCommand2_Click()IfCheck1ThenAnimation1.PlayVal(Text1)ElseAnimation1.PlayEndIfCommand3.Enabled=TrueEndSub
用来播放Wave、AVI、MIDI、CD等类型的文件,它位于MocrosoftMultimediaControl6.0中。2.MMControl控件前一个下一个播放暂停前进后退停止录制弹出(1)主要属性Name:MMControlAutoEnable:是否自动检测各按钮的状态DeviceType:设置多媒体设备的类型播放AVI文件用MControl1.DeviceType=“AVIVideo”Command:用于向媒体设备发出各种命令,共14种命令Back退后一步Close关闭一个文件Eject弹出光盘Next到下一轨道的起始点Open打开一个媒体文件Pause暂停播放Play播放一个文件Prev回到当前轨道的起点Record对一个设备进行记录Save保存打开的文件Sound播音Seek寻找位置(位置由To属性给出)Step前进一步Stop停止播放或记录例如:MMControl1mand=“open”打开一个媒体设备(2)视频播放器PrivateSubForm_Load()MMControl1.FileName=“C:\ProgramFiles\MicrosoftVisualStudio\Common\Graphics\videos\blur24.avi”MMControl1.hWndDiplay=Picture1.hWnd‘hWnd为句柄MMControl1.DeviceType=“avivideo"MMControl1.Command="Open"EndSubPrivateSubMMControl1_PlayClick(CancelAsInteger)MMControl1.Notify=TrueEndSubPrivateSubMMControl1_Done(NotifyCodeAsInteger)IfMMControl1.NotifyValue=1ThenMMControl1.To=0MMControl1.Command=“Seek”EndIfEndSub视频播放器(3)CD播放器(4)同时播放Wave和MIDI的播放器用来制作包括多个选项卡(标签)的对话框,它位于MicrosoftTabbedDialogControl6.0中(1)SSTab控件的属性页
Style决定SSTab控件上选项卡的样式Tabs决定选项卡的数量TabsPerRow决定SSTab控件上每一行选项卡的数量Rows决定SSTab上选项卡的行数(2)SSTab控件的主要属性*7.9SSTab控件例7.12设计一个具有两个选项卡(标签)的对话框制作步骤:(1)将SSTab控件添加到工具箱中,并在窗体上创建一个SSTab控件(2)通过SSTab的属性页设置其属性(包括选项卡数Tabs=2及其标题)(3)在每个选项卡中添加一个Text控件,其中存放一段文字(可用Form_load()编程将某段文字赋给Text1.Text,另一段文字赋给Text2.Text)7.10鼠标器和键盘鼠标和键盘是主要的输入设备,对鼠标和键盘事件进行编程是VB程序设计的基本技术。鼠标事件和键盘事件用来监视用户是否对鼠标或键盘进行了操作。鼠标事件:检测鼠标指针的位置,判断按了哪个鼠标按钮,识别鼠标按钮是否与Shift、Ctrl或Alt键同时按下等。窗体和大部分控件都能响应鼠标事件。键盘事件:检测是否按了某个键,是上档键还是下档键;测试键盘上的某个键是按下还是释放;识别按键的扫描码和ASCII码;设置功能键等。窗体、复选框、命令按钮、文本框等都能响应键盘事件。7.10.1鼠标事件可供窗体或其他控件对象识别鼠标的位置或动作的事件1.Click事件(1)当在一个对象上按下然后释放一个鼠标按钮时,或者某些控件的值发生改变时,将触发Click事件。(2)单击一个控件除了产生Click事件以外还可产生MouseDown和MouseUp事件。这三种事件发生的顺序根据控件的不同而不同。对ListBox和CommandButton控件来说,这些事件按下列顺序发生:MouseDown、Click、MouseUp。对FileListBox,Label或PictureBox控件来说,这些事件按下列顺序发生:MouseDown、MouseUp和Click。(3)Click事件不区分按了鼠标的哪个键,当要区别鼠标的左、右、中按钮时,应使用MouseDown和MouseUp事件2.DblClick事件双击鼠标左键时发生3.MouseDown事件SubObject_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)4.MouseUp事件SubObject_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)5.MouseMove事件SubObject_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)Button=1或ButtonAnd1≠0左键Button=2或ButtonAnd2≠0右键Button=4或ButtonAnd4≠0中键Shift=1或ShiftAnd1≠0Shift键Shift=2或ShiftAnd2≠0Ctrl键Shift=4或ShiftAnd4≠0Alt键例7.13用MouseMove事件检测鼠标在窗体上的位置。在窗体上设置两个文本框,一个显示鼠标位置的x值,另一个显示y值,使用MouseMove事件编程:PrivateSubForm_MouseMove(ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)Text1.Text=xText2.Text=yEndSub程序运行时,随着鼠标在窗体上移动,显示不同的坐标值。例7.14联合使用MouseMove、MouseDown和MouseUp事件设计一个简单的画图程序(按右键画圆,按住左键并移动画线)。MouseDown事件判定是按了左键还是右键:若是左键,则保存线条的起点坐标;若是右键,则画一个直径为280的圆;MouseMove事件用来画线(从起点到终点)MouseUp事件表示释放鼠标,从而解除画图状态窗体属性:MousePoint:鼠标指针形状取值0~15,99(用户定义)MouseIcon:自定义鼠标图标(当MousePointer为99时,由窗体的MouseIcon属性设置鼠标光标的形状)7.10.2键盘事件
可供文本框等控件接受键盘的输入或动作1.三个键盘事件(1)KeyPress事件(当按下并释放一个键时被触发,返回按键的ASCII代码,不包括编辑键和F功能键)SubObject_KeyPress(keyasciiAsInteger)Subobject_KeyPress([indexAsInteger,]keyasciiAsInteger)(2)KeyDown事件(按任一键时被触发,返回该键的扫描码)SubForm_KeyDown(keycodeAsInteger,shiftAsInteger)Subobject_KeyDown([indexAsInteger,]keycodeAsInteger,shiftAsInteger)(3)KeyUp事件(释放任一键时被触发,返回该键的扫描码)
SubForm_KeyUp(keycodeAsInteger,shiftAsInteger)Subobject_KeyUp([indexAsInteger,]keycodeAsInteger,shiftAsInteger)KeyAscii:按键的ASCII码Keycode:按键的扫描码Shift:与鼠标器的Shift相同PrivateSubText1_KeyDown(KeyCodeAsInteger,ShiftAsInteger)ShiftKey=ShiftAnd7‘表示取后三位SelectCaseShiftKeyCase1'或vbShiftMaskPrint"YoupressedtheSHIFTkey."Case2'或vbCtrlMaskPrint"YoupressedtheCTRLkey."Case4'或vbAltMaskPrint"YoupressedtheALTkey."Case3Print"YoupressedbothSHIFTandCTRL."Case5Print"YoupressedbothSHIFTandALT."Case6Print"YoupressedbothCTRLandALT."Case7Print"YoupressedSHIFT,CTRL,andALT."EndSelectEndSubKeyPressKeyDownKeyUp事件发生的时间输入一个ASCII字符按下任意一个键释放按键参数值KeyAscii接收到按键的ASCII值KeyCode接收到按键的扫描码KeyCode接收到按键的扫描码按Shift+A时事件发生的次数事件发生一次事件发生两次事件发生两次按Shift+A时参数值(键盘处于大写状态)97(a)第一次是16(Shift)第二次是65(A)第一次是65(A)第二次是16(Shift)按Shift+A时参数值(键盘处于小写状态)65(A)第一次是16(Shift)第二次是65(A)第一次是65(A)第二次是16(Shift)2.KeyPress事件与KeyDown及KeyUp事件的区别按大键盘“1”494949按小键盘“1”4997973.当窗体和其他控件都使用了KeyPress事件时,例如:SubForm_KeyPress(KeyAsciiAsInteger)KeyAscii=KeyAscii+2EndSub SubText1_KeyPress(KeyAsciiAsInteger)KeyAscii=KeyAscii+2EndSub应先设置窗体的KeyPreview属性若KeyPreview=True窗体先接收键盘事件,然后其他活动控件才能接收键盘事件若KeyPreview=False其他活动控件先接收键盘事件,然后窗体才能接收键盘事件当KeyPreview=True,从键盘输入字母“a”时,Text1接收到字母“e”;当KeyPreview=False,从键盘输入字母“a”时,Text1接收到字母“c”。4.KryPress事件的应用①限制数据输入SubText1_KeyPress(KeyAsciiAsInteger) IfKeyAscii<48OrKeyAscii>57Then KeyAscii=0EndIfEndSub‘文本框只能接收“0”~“9”的数字字符,其他字符均不予显示②修改输入的数据PrivateSubText1_KeyPress(KeyAsciiAsInteger)Text2=Text2+Chr(KeyAscii)KeyAscii=0:Text1=Text1+"*"EndSub‘文本框1中显示“*”,文本框2中显示原字符5.KeyDown和KeyUp的应用用下面的程序段以十六进制形式显示键盘上各个键的keycode码。
SubForm_KeyDown(KeyCodeAsInteger,ShiftAsInteger) PrintChr(KeyCode);"--";Hex(KeyCode)EndSub运行时,按下H键(不管大小写),窗体上显示“H--48”。例7.15将功能键Alt+F5设置为结束程序运行。功能键F5的扫描码为vbkeyF5(符号常数)先将KeyPreview属性设置True,然后编制下列程序:PrivateSubForm_KeyDown(KeyCodeAsInteger,ShiftAsInteger)IfKeyCode=vbKeyF5And(ShiftAnd4)ThenEndEndIfEndSub例7.16“锤打红心”游戏①用上、下、左、右四个箭头键控制“铁锤” “”:37(&H25) “”:38(&H26) “”:39(&H27) “”:40(&H28)②如果Abs(Image1.Left-Image2.left<300)AndAbs(Image1.Top-Image2.Top<300)成立,则认为是重叠,“铁锤”锤打到“红心”③用时钟控件(Timer1)的Timer事件控制图像框“红心”的移动。Timer1的Interval属性为200,即每1秒产生5个Timer事件7.10.3拖放“拖放”指的是用鼠标把一个对象拖到另一个对象上,或拖到同一对象的另一个位置上。1.拖放过程将鼠标指针移到源对象上----按下鼠标左键,并拖动鼠标到另一位置或目标对象上----放开鼠标,源对象就被移动到了松开鼠标时鼠标指针所在的位置2.两种拖放方式为使源对象能被拖放,须在源对象的MouseDown事件过程中设置源对象的DragMode属性:DragMode=0手工拖放方式
DragMode=1自动拖放方式手工方式比自动方式可以提供更多控制。例如,手工方式允许指定对象可拖动的时间及不可拖动的时间,还可在开始拖动前识别MouseDown事件,从而记录鼠标的位置;而在自动方式下,总能拖动对象(1)自动拖放:只要将鼠标置于需要拖动的对象上,按住左键不放,然后拖动鼠标即可,但只有在OLE容器控件没有焦点时,它才能自动地被拖动(2)手工拖放:将源对象的DragMode属性设置为0,在按住鼠标时必须在MouseDown事件中用Drag方法启动“拖”操作3.拖放的实现拖放演示窗体上有图形框picture1,装有某个图形,它能作为源对象被拖放到该窗体的某个地方。如果图形框被拖动到“取消拖放”标签(label1)上方,则取消拖放操作。(1)手工拖放的实现步骤①将源对象的DragMode属性设置为0(缺省值),可以在设计状态的属性窗口中设置,也可以在源对象的MouseDown事件中用赋值语句设置②在源对象的MouseDown事件中用Drag方法启动拖操作
SubPicture1_MouseDown(Button%,Shif%,X!,Y!)Picture1.Drag1EndSub‘启动拖操作③由于源对象在窗体内移动,故目标对象是窗体,在窗体的DragDrop事件中用Move方法编制代码实现源对象的移动
SubForm_DragDrop(SourceAsControl,X!,Y!)Source.Move(X-Source.Width/2),(Y-Source.Height/2)EndSub
源图形框被拖动到窗体的指定位置,且中央落在鼠标指针位置上④根据题目要求,当源对象拖放到标签Label1时,在Label1的DragOver事件中用Drag方法编码,取消拖放操作SubLabel1_DragOver(SourceAsControl,X!,Y!,State%)Source.Drag0‘取消拖放操作
EndSub(2)自动拖放的实现步骤自动拖放可省去人工拖放中的第②步。无论是自动或人工拖放,当鼠标拖动到某一地方释放时,都要在DragDrop事件中用Move方法实现移动;取消拖放时,要对DragOver事件用Drag方法取消拖动操作。4.拖放的属性设置及方法(1)源对象的属性设置 DragIcon属性:拖动过程中显示的图标(Ico或Cur文件)。
lblExample1.DragIcon=LoadPicture("C:\Icons\Mail.ico") lblExample2.DragIcon=picIcon.Picture(2)Drag拖放方法:启动或停止手工拖动 当DragMode为0时,需在源对象上用 [Object.]Drag参数来启动或取消或结束拖动操作0:取消拖动操作1(缺省):开始拖动操作2:结束拖动操作DragMode属性和Drag方法用来指定开始拖动的方法5.DragDrop和DragOver事件(1)DragOver事件在拖放操作正在进行时引发。Object_DragOver(sourceAsControl,xAsSingle,yAsSingle,stateAsInteger)
source:正在被拖动的控件x,y:当前鼠标指针在目标窗体或控件中的位置state:正被拖动的源对象的转变状态0=进入(源控件正被向一个目标范围内拖动)1=离去(源控件正被向一个目标范围外拖动)此事件可对鼠标指针在一个有效目标上的进入、离开或停顿等进行监控。鼠标指针的位置决定接收此事件的目标对象,通常在开始拖动时,用DragOver事件过程来处理位于DragDrop事件前面的事件(2)DragDrop事件:当源对象在拖动过程中鼠标被释放时,或使用Drag方法,且Drag参数值为2时被引发。Objiect_DragDrop(sourceAsControl,xAsSingle,yAsSingle)DragDrop事件过程用来控制在一个拖动操作完成时将会发生的情况。例如,可将源控件移到一个新的位置或将一个文件从一个位置复制到另一个位置。当source参数中可能使用多个控件时:应使用TypeOf
关键字和If语句一起确定与source表示的控件的类型应使用该控件的Tag属性来标识一个控件,然后使用DragDrop
事件过程例7.18窗体上有一个图像框、一个标签和一个图形框。用手工方式将图像框Image1拖动到图形框Picture1中,且图像框小时,其中的图片则保留在图形框中;用自动方式将标签Label1拖动到图形框Picture1中,并弹出“Error”的信息框。在拖动Image1时,其中的图片作为拖动图标使用。①将Image1和Label1的DragMode属性分别设置为0和1②在Image1_MouseDown事件中,用Drag方法启动拖动操作,并将其中的图片作为拖动图标DragIcon③在Picture1_DragDrop事件中,若源控件的类型为Image,则将Image1中的图片装入Picture1的Picture属性中,并使Image1不可见;否则,用MsgBox()显示“ERROR”7.10.4OLE拖放
可以将数据从一个控件或应用程序中移动到另一个控件或应用程序中。
1.OLE拖放的两种方式
OLEDragMode(源控件设置) 0----Manual:缺省,手工1----Automatic:自动OLEDropMode属性(目标控件设置)0----None:缺省,目标控件不接受“放”1----Manual:手工实现“放”操作2----Automatic:自动实现“放”完全支持自动OLE拖放:图形框、图像框和文本框支持自动“拖”操作,不支持自动“放”:组合框、列表框、文件列表框和目录列表框没有OLEDragMode,有OLEDropMode但不能设置为2:复选框、框架、单选按钮、命令按钮、标签、驱动器列表框和数据控件(Data)当执行OLE拖放操作时,在源端和目标端会产生某些事件。无论拖放操作是自动操作还是手工操作,都总要生成与源对象关联的事件。但是,只在手工拖放操作时才生成目标端事件。2.OLE拖放的实现(1)完全自动拖放不需编程,若作为源对象,设置其OLEDragMode=1,若作为目标对象,设置其OLEDropMode=2(2)自动拖、手工放作为源对象,设置其OLEDragMode=1,不必编程;若作为目标对象,设置其OLEDropMode=1,并在其OLEDragDrop事件或OLEDragOver事件中编程OLEDragMode设为1(Automatic)OLEDropMode设为1(Manual)SubList2_OLEDragDrop(…)List2.AddItemData.GetData(vbCFText)EndSubSubLabel1_OLEDragDrop(…)Label1.Caption=Data.Files(1)EndSub例7.19手工方式实现从列表框到文本框OLE拖放,要求删除源数。①启动源对象的OLE拖动操作SubLabel1_MouseDown(…) '启动OLE拖动操作,产生OLEStartDrag事件 Label1.OLEDragEndSub②源对象的实际拖动操作SubLabel1_OLEStartDrag(DataAsDataObject,AllowedEffectsAsLong) '将数据放到DataObject对象,并且指定数据格式 Data.SetDataLabel1.Caption,vbCFText '指定允许拖放效果 AllowedEffects=vbDropEffectMove EndSub③目标对象的放操作SubText1_OLEDragDrop(DataAsDataObject,EffectAsLong,ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle) ‘查询DataObject中数据格式IfData.GetFormat(vbCFText)Then ‘从DataObject获取数据Text1.Text=Data.GetData(vbCFText) EndIf Effect=vbDropEffectMoveEndSub④删除源对象中的数据SubLabel1_OLECompleteDrag(EffectAsLong) IfEffect=vbDropEffectMoveThen Label1.Caption=“” '删除原数据 EndIfEndSub例7.20将“Windows资源管理器”中选定的一组文本文件,拖放到一个文本框中。
PrivateSubLabel1_OLEDragDrop(DataAsDataObject,EffectAsLong,ButtonAsIntege
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年唐山海运职业学院高职单招语文2018-2024历年参考题库频考点含答案解析
- 2025年哈尔滨传媒职业学院高职单招高职单招英语2016-2024历年频考点试题含答案解析
- 2025年南阳农业职业学院高职单招职业适应性测试近5年常考版参考题库含答案解析
- 2025年南阳农业职业学院高职单招语文2018-2024历年参考题库频考点含答案解析
- 2025至2031年中国磷酸根分析仪行业投资前景及策略咨询研究报告
- 机器人感知与决策-第6篇-深度研究
- 企业招聘与离职率控制-深度研究
- 2025年度事业单位聘用合同解除与员工离职后竞业禁止协议
- 2025年度轻伤刑事和解协议书附带刑事和解风险评估合同
- 二零二五年度舞蹈工作室舞蹈版权授权与合作合同
- 2024年1月高考适应性测试“九省联考”英语 试题(学生版+解析版)
- 2024浙江省农发集团社会招聘笔试参考题库附带答案详解
- 慢性压力对身体健康的影响与调理方法
- 《白蛇缘起》赏析
- Interstellar-星际穿越课件
- 苏教版2022-2023学年三年级数学下册开学摸底考试卷(五)含答案与解析
- 2023学年度第一学期高三英语备课组工作总结
- 临建标准化图集新版
- 安监人员考核细则(2篇)
- 生活老师培训资料课件
- 腹主动脉瘤(护理业务学习)
评论
0/150
提交评论