《鼠标、键盘和OLE》PPT课件.ppt_第1页
《鼠标、键盘和OLE》PPT课件.ppt_第2页
《鼠标、键盘和OLE》PPT课件.ppt_第3页
《鼠标、键盘和OLE》PPT课件.ppt_第4页
《鼠标、键盘和OLE》PPT课件.ppt_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

第9章鼠标、键盘和OLE控件,鼠标,键盘事件,拖放,使用OLE控件,9.1鼠标,9.1.1鼠标事件在程序运行时,有时需要对鼠标指针的位置和状态变化作出响应,因此除了常用的Click和DblClick事件之外,还需要使用鼠标事件,鼠标事件包括MouseUp、MouseDown和MouseMove。1.鼠标事件的格式鼠标事件包括MouseUp、MouseDown和MouseMove,分别是当释放鼠标、按下鼠标和移动鼠标时触发的。MouseUp、MouseDown和MouseMove鼠标事件的语法格式是统一的。语法:PrivateSub对象_鼠标事件(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle),9.1.1鼠标事件,说明:(1)Button表示是哪个鼠标键被按下或释放。用0、1、2三个位表示鼠标的左、右、中键,每位用0、1表示被按下或释放,三个位的二进制转换成十进制就是Button的值,如图9.1所示,表9.1列出了按钮与常数值的对应关系。,表9.1Button常数值,图9.1Button键,9.1.1鼠标事件,(2)Shift表示当鼠标键被按下或被释放时,Shift、Ctrl、Alt键的按下或释放状态。用0、1、2三个位表示鼠标的Shift、Ctrl、Alt键,三个位的二进制转换成十进制数就是Shift的值。Shift、Ctrl、Alt键切换常数如表9.2所示。,表9.2Shift的常数值,9.1.1鼠标事件,(3)X、Y表示鼠标指针的坐标位置。如果鼠标指针在窗体或图片框中,用该对象内部的坐标系,其他控件则用控件对象所在容器的坐标系。关于鼠标键事件有几点说明:移动鼠标连续触发MouseMove事件。按下鼠标键,触发MouseDown事件。释放鼠标键,触发MouseUp事件。MouseUp事件之后,触发Click事件。鼠标事件可以区分鼠标的左、右、中键与Shift、Ctrl、Alt键,并可识别和响应各种鼠标状态。Click和DblClick事件不能识别鼠标的左、右、中键与Shift、Ctrl、Alt键。鼠标事件是由鼠标指针所在的窗体或控件来识别的。如果按下鼠标不放,则对象将继续识别所有鼠标事件(即使指针已离开对象仍继续识别),直到用户释放鼠标为止。,9.1.1鼠标事件,2.MouseDown和MouseUp事件MouseDown和MouseUp事件分别当鼠标按下和释放时触发,通常可以用来在运行时调整控件的位置,或实现某些图形效果。MouseDown事件更常用些。【例9-1】在窗体中制作一个画线和画方块的程序。界面设计:放置一个图片框Picture1用来绘图,三个按钮Command1Command3,其中Command1和Command2分别为“直线”和“方块”。功能要求:单击Command1或Command2按钮后,在图片框中单击鼠标当鼠标按下时确定一个端点,当鼠标释放时确定另一个端点来画直线或画方块。Command3在图片框中清除图形。运行界面如图9.2所示。,图9.2运行界面,9.1.1鼠标事件,程序代码如下:DimC1AsIntegerDimX1AsInteger,Y1AsIntegerPrivateSubCommand1_Click()单击直线按钮C1=1EndSubPrivateSubCommand3_Click()单击方块按钮C1=2EndSubPrivateSubForm_Load()装载窗体C1=0EndSub,9.1.1鼠标事件,在图片框中按下鼠标键时确定一个端点。PrivateSubPicture1_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)在图片框中按下鼠标键IfButton=1ThenX1=XY1=YEndIfEndSub,9.1.1鼠标事件,在图片框中释放鼠标键则确定另一个端点,根据单击的按钮,在图片框中由两端点画直线和画方块。PrivateSubPicture1_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)在图片框中释放鼠标键IfButton=1ThenSelectCaseC1Case1Picture1.Line(X1,Y1)-(X,Y)Case2Picture1.Line(X1,Y1)-(X,Y),BEndSelectEndIfEndSubPrivateSubForm_Load()装载窗体C1=0EndSub,9.1.1鼠标事件,3MouseMove事件MouseMove事件是鼠标在屏幕上移动时触发的,窗体和控件都能识别MouseMove事件,当鼠标指针在对象的边界范围内时该对象就能接收MouseMove事件,除非有另一个对象捕获了鼠标。当移动鼠标时,Button参数对于MouseMove事件与MouseDown和MouseUp事件不同,MouseMove事件的Button值表示所有按键的状态,而MouseDown和MouseUp事件的Button的值无法检测是否同时按下两个以上的按键。【例9-2】在图片框中绘制连续的线和方块。使用MouseMove事件可以连续地画线和方块,当鼠标移动时在不断触发的MouseMove事件中画线和方块。运行界面如图9.3所示。程序代码如下。,9.1.1鼠标事件,当第一次按下鼠标时,开始画线或方块,第二次按下鼠标就停止。PrivateSubPicture1_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)在图片框中按下鼠标键IfButton=1AndC2=0ThenC2=1SelectCaseC1Case1Picture1.CurrentX=XPicture1.CurrentY=YCase2X1=XY1=YEndSelectElseC2=0EndIfEndSub,9.1.1鼠标事件,当在图片框中移动鼠标时,不断地画线和画方块,实现连续画线和方块。PrivateSubPicture1_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)在图片框中移动鼠标IfButton=1AndC2=1ThenSelectCaseC1Case1Picture1.Line-(X,Y)Case2Picture1.Line(X1,Y1)-(X,Y),BFEndSelectEndIfEndSub,9.1.2改变鼠标指针,1MousePionter属性对象的MousePionter属性用于设置鼠标指针的形状。在运行时对于控件,当鼠标经过时就会显示MousePionter属性设置的形状;对于窗体,当鼠标经过空白区域或窗体中的MousePionter属性为0的控件时,就会显示窗体的MousePionter属性设置的形状。MousePionter属性的设置值与形状如表9.3所示。,9.1.2改变鼠标指针,表9.3MousePionter属性值,9.1.2改变鼠标指针,2MouseIcon属性当MousePionter属性设置为99时,可以使用MouseIcon属性来确定鼠标指针的形状。有两种方法设置MouseIcon属性:(1)在属性窗口中选择MouseIcon属性,单击按钮,出现“加载图标”对话框,选择一个图形文件为鼠标指针形状,可以是.ico或.cur文件。(2)在程序中使用LoadPicture函数来加载图形文件。例如,将经过窗体时鼠标指针设置为用户定义的图标:Form1.MouseIcon=LoadPicture(c:windowswinupd.ico),9.2键盘事件,1.查看键盘按键的ASC码值如果不清楚键盘各按键的ASC码值,可以通过对象浏览器窗口来查看。在工具栏单击“对象浏览器”按钮,打开“对象浏览器”如图9.4所示。在搜索栏键入“KeyCodeConstants”,单击搜索按钮。在“成员”栏出现各种键盘按键常数,选择某一个按键常数就可以在下面的描述中显示按键的ASC码值。,图9.4查看键代码,9.2键盘事件,2.KeyPress事件KeyPress事件是当键盘有键按下时触发的。KeyPress事件检测的键有Enter、Tab、BackSpace以及键盘上的字母、数字和标点符号键,对于其他功能键、编辑键和定位键,则不作响应。语法:PrivateSub对象_KeyPress(KeyAsciiAsInteger)说明:对象:是接受键盘事件的对象,由具有焦点的对象接收。KeyAscii:是按键对应的ASC码值。将keyAscii改为0时可取消本次击键,这样对象便接收不到按键的字符。,9.2键盘事件,【例9-3】在文本框中输入学生的学号和密码,并在输入时检测按键的有效性。功能要求:在输入用户名的文本框中输入用户名,在按键时判断如果不是字母键则将按键取消并将焦点设置在文本框,输入用户名超过8位时提示出错。运行界面如图9.5所示,当输入用户名超过8位时的显示。,图9.5运行界面,9.2键盘事件,程序代码如下:PrivateSubText1_KeyPress(KeyAsciiAsInteger)在用户名文本框按键IfKeyAscii122Or(KeyAscii90)Then按键不是大小写字母KeyAscii=0Text1.SetFocusEndIfIfLen(Text1.Text)8Then超过8位MsgBox用户名超过8位,vbOKOnly,输入出错KeyAscii=0Text1.SetFocusEndIfEndSub,9.2键盘事件,3KeyDown和KeyUp事件KeyDown事件是当按下按键时触发,KeyUp事件是当释放按键时触发,这两个事件提供了最低级的键盘响应,可以报告键盘的物理状态。语法:PrivateSub对象_KeyDown(KeyCodeAsInteger,ShiftAsInteger)PrivateSub对象_KeyUp(KeyCodeAsInteger,ShiftAsInteger),9.2键盘事件,【例9-4】在图片框中用键盘键控制小球的运动。功能要求:在图片框Picture1中放置一个形状控件Shape1,窗体还有两个按钮Command1和Command2分别为“开始”和“结束”,单击“开始”按钮黄色小球Shape1出现,单击箭头键“”和“”小球向运动左和右移动,单击空格键小球向上或向下跳动。窗体中对象的属性设置如表9.4所示。,表9.4窗体中对象的属性设置,9.2键盘事件,程序代码如下。程序分析:箭头键“”的ASC码值为37,“”的ASC码值为39,空格键为32。运行界面如图9.6所示。,图9.6运行界面,9.3拖放,1属性(1)DragMode属性DragMode属性确定拖放操作是自动方式还是手动方式。默认值为0手动方式,可以用手动方式来确定拖放操作何时开始或结束,当DragMode属性设置为1自动方式时,能够对一个对象执行自动拖放操作。(2)DragIcon属性DragIcon属性是设置拖动操作时显示的图标,默认源对象的灰色轮廓作为拖动的图标,也可以设置为.ico图标文件作为拖动操作的图标。,9.3拖放,2事件(1)DragDrop事件DragDrop事件是当一个完整的拖放动作完成时触发,即将一个控件拖动到一个对象上,并释放鼠标按钮,或使用Drag方法并将其动作参数设置为2(Drop)时触发。DragDrop事件可用来控制在拖动操作完成时将会发生的情况。语法:PrivateSub对象_DragDrop(SourceAsControl,XAsSingle,YAsSingle)(2)DragOver事件DragOver事件是当拖放操作正在进行时发生,当拖动对象越过一个控件时触发该事件。语法:PrivateSub对象_DragOver(SourceAsControl,XAsSingle,YAsSingle,StateAsInteger),9.3拖放,3.方法Drag方法用于在代码中对象的拖放行动。Drag方法可以启动、停止或取消手工拖动。语法:对象.DragAction拖放操作的步骤如下:(1)设置DragMode属性为1,使对象可以自动被拖放。(2)设置DragIcon属性决定对象被拖动时鼠标指针的形状,可以是任何位图或图标。(3)为目标对象编写DragDrop和DragOver事件。【例9-5】在窗体中将图像框进行拖放。功能要求:在窗体中放置四个图像框Image1Image4,一个框架Frame1和一个标签Label1,将三个小图像框Image1Image3拖放到大图像框Image4中,就会将图像放置到Image4中,并将文本在标签Label1中显示。,9.3拖放,属性设置如表9.5所示,设计界面如图9.7(a)所示,运行界面如图9.7(b)所示,显示将Image1中的图片拖放到Image4中。,表9.5窗体中对象的属性设置,9.3拖放,程序代码如下:在图像框Image4是目的对象,在拖放事件中将Source对象的图形装载到图像框Image4中,并根据Source所对应的拖动源对象,用分支结构显示标签Label1的内容。PrivateSubImage4_DragDrop(SourceAsControl,XAsSingle,YAsSingle)在图像框中拖放图像Image4.Picture=Source.PictureIfSource=Image1ThenLabel1.Caption=鸵鸟ElseIfSource=Image2ThenLabel1.Caption=钟ElseLabel1.Caption=五角星EndIfEndSub,9.4使用OLE控件,9.4.1添加OLE容器控件1在设计时嵌入或链接对象(1)使用OLE控件直接嵌入对象将OLE控件OLE1放置在窗体上时,就会出现“插入对象”的对话框,如图9.8所示。选择“新建”选项按钮,并在“对象类型”框中选择的一种对象类型,单击“确定”按钮,就嵌入了一个OLE对象。,图9.8插入对象对话框,9.4.1添加OLE容器控件,例如,在上图中OLE1嵌入“媒体剪辑”对象,运行工程时,在窗体上会显示出播放媒体的菜单,运行界面如图9.9所示。,9.4.1添加OLE容器控件,(2)使用OLE控件从文件嵌入对象在图9.10中单击“从文件创建”选项按钮,单击“浏览”按钮选择文件,将所选的文件当作OLE对象插入。如图9.10所示。(3)使用OLE控件链接对象如果在图9.8或图9.10中选择“链接”复选框,就会插入一个链接对象。使用链接对象,当应用程序没有运行时,对象的数据可能被另一个应用程序更改。,图9.10从文件创建,9.4.1添加OLE容器控件,(4)选择性粘贴文件如果只需要利用文件的一部分,可以使用“选择性粘贴”来创建OLE对象。使用“选择性粘贴”的步骤如下:运行需要选择的文件,将需要选择的部分复制到剪贴板上。在VB中用鼠标右键单击“OLE容器控件”,从快捷菜单中选择“特殊粘贴”菜单项,出现“选择性粘贴”对话框如图9.11所示。在对话框中选择“粘贴”或“粘贴链接”选项,单击“确定”按钮就创建了OLE对象。选择“粘贴”复选框是插入一个嵌入对象,选择“粘贴链接”复选框是插入一个链接对象。在图9.11中,选择粘贴Word中的文本内容。,图9.11选择性粘贴Word文本,9.4.1添加OLE容器控件,3在运行时创建显示“插入对象”对话框如果在设计时不选择OLE对象,则在运行时也可以使用OLE对象的InsertObjDlg和PasteSpecialDlg方法来显示“选择性粘贴”和“插入对象”对话框,并在对话框中创建OLE对象。语法:对象.InsertObjDlg对象.PasteSpecialDlg(1)InsertObjDlg方法InsertObjDlg方法用来显示“插入对象”对话框,提供可用的对象清单,并根据用户的选择创建对象。例如,显示“插入对象”对话框:OLE1.InsertObjDlg(2)PasteSpecialDlg方法PasteSpecialDlg方法用来显示“选择性粘贴”对话框,允许用户从系统剪贴板中将对象粘贴到OLE控件。,9.4.1添加OLE容器控件,4在运行时创建链接或嵌入对象(1)创建链接对象用OLE控件的CreateLink方法,在运行时从文件中创建一个链接对象。语法:CreateLinkSourceDoc,SourceItem说明:SourceDoc:为文件参数,从该文件创建对象。SourceItem:从源文件中链接的数据。例如,创建链接对象:OLE1.CreateLinkC:WINDOWSMediachord.wav(2)创建嵌入对象在运行时,从文件中创建一个嵌入的对象,可以使用CreateEmbed方法。语法:CreateEmbedSourcedoc,Class,9.4.2OLE容器控件的属性、方法和事件,1.OLE控件的常用属性(1)Object属性通过使用OLE控件的Object属性,可以使用链接或嵌入对象的属性和方法。Object属性在运行时是只读属性,它保持对OLE控件中对象的引用。使用该属性OLE控件必须包含可编程的对象。语法:OLE控件名.Object.属性|方法(2)AutoActive属性AutoActive属性用于设置激活OLE控件对象的方式,该属性对应的各种方式如表9.6所示。,表9.6各种激活方式,9.4.2OLE容器控件的属性、方法和事件,(3)OLEType属性OLEType属性返回OLE容器控件中对象的状态。0-vbOLELinked表示链接,1-vbOLEEmbedded表示嵌入,2-vbOLENone表示不包含对象。(4)Class属性Class属性为内嵌对象的类名。例如,当嵌入“媒体剪辑”时,OLE1控件设置为“OLE1.Class=MPlayer”。(5)SizeMode属性SizeMode属性用来指定OLE对象如何调整大小,或如何显示图像。0为剪裁,对象按实际大小显示;1为伸展,调整对象图像的大小使其充满OLE控件;2为自动,如果显示对象的大小作了改变,OLE控件自动调整大小;3为缩放,重新调整对象的大小使其尽可能充满OLE控件,且仍然维持该对象原来的比例。,9.4.2OLE容器控件的属性、方法和事件,2.OLE控件的常用方法(1)Update方法要在OLE控件中显示当前的最新数据,则要使用控件的Update方法。运行时对源文件的更改不会自动出现在OLE控件中,必须使用Update方法。语法:OLE对象名.Update(2)Delete方法Delete方法删除指定对象,释放关联的内存,用于显式地删除对象。当关闭窗体或对象被一个新对象取代时,对象都将被自动删除。(3)DoVerb方法在运行时,可以使用OLE控件的DoVerb方法激活一个对象,进行编辑等操作。有些嵌入的对象可以通过双击来从OLE控件内部激活,称为现场激活。(4)Close方法如果要退出OLE对象的激活状态,可以调用OLE控件的Close方法。,9.4.2OLE容器控件的属性、方法和事件,【例9-6】在学生

温馨提示

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

评论

0/150

提交评论