动态设定放映内容.doc_第1页
动态设定放映内容.doc_第2页
动态设定放映内容.doc_第3页
动态设定放映内容.doc_第4页
动态设定放映内容.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

利用Application对象事件实现动态设定演示文稿放映内容陈思敏广东教育学院【摘要】PowerPoint通过Application对象提供了作用于演示文稿、幻灯片和演示文稿窗口等非控件的对象的事件。但是对这些事件的编程与对其他标准控件的事件的编程不同,必须要先在类模块里用WithEvents关键字申明一个Application对象,并在另一个标准模块的初始化例程里实例化该类模块和Application对象,然后才能实现对Application对象的事件的编程。可以利用Application对象的幻灯片放映事件来实现在PowerPoint放映时动态设定放映内容。【关键词】PowerPoint,Application对象,事件,演示文稿,动态设定,放映【中图分类号】TP317.1Setting PowerPoints Playing Contents Dynamically through Applying Events of Application ObjectSimin ChenGuangdong Institute of Education【Abstract】PowerPoint has provided events for such non-control objects as presentations, slides and windows. However, programming on these events is quite different from programming on the standard controls: programming on the events of application objects cannot be conducted until an application object has been declared with the key word WithEvents in a class module and this class module as well as its application object has been referenced in the initialization routine in a standard module. Setting the playing contents dynamically when the presentation is being played can be implemented through applying the playing events of the application object.【Key Words】PowerPoint, Application Objects, Events, Presentation, Setting Dynamically, Playing一、引言开发过Microsoft Office解决方案的工程师们都知道,Word解决方案中除了可以给标准控件的事件编程之外,还可以给文档对象Document的三个事件编程:New、Open和Close,以便完成初始化或结束设置等工作。给Document对象的事件编程可以直接在给其他控件编程的代码窗口里完成,因为在这个窗口里可以找到Document对象。然而,在开发PowerPoint解决方案时,在给控件编程的代码窗口里却没有PowerPoint演示文稿对象Presentation,也没有幻灯片对象Slide,因此无法象Word解决方案那样直接给这些非控件对象编程,也就无法控制这些对象被操作时的动作,例如,采用时间控制的方式放映幻灯片时动态设定幻灯片的内容等。事实上PowerPoint提供了这些非控件对象的事件,只是对这些事件的编程与对普通控件的事件的编程方法不一样。本文将深入探讨在PowerPoint解决方案中对这些非控件对象的事件的编程方法,以及对这些事件的典型的应用例子。二、PowerPoint的Application对象的事件PowerPoint提供了三种非控件对象的事件,这三种非控件对象是演示文稿对象Presentation,幻灯片对象Slide,以及窗口对象Window。但是,虽然事件是针对这三种对象的,但从编程方法上来说,所有这些事件都属于Application(应用程序)对象的事件。根据事件发生的场合,这些事件可以分为两大类:在编辑幻灯片时发生的事件和在放映幻灯片时发生的事件。下表列出Microsoft Office PowerPoint 2003所提供的这类事件:事件发生场合事件解释编辑幻灯片AfterNewPresentation新演示文稿被创建后此事件发生AfterPresentationOpen演示文稿被打开后此事件发生ColorSchemeChanged幻灯片设计模板更改后此事件发生NewPresentation新演示被创建后此事件发生PresentationBeforeSave保存演示文稿前此事件发生PresentationClose关闭演示文稿时此事件发生PresentationNewSlide新建幻灯片时此事件发生PresentationOpen打开演示文稿时此事件发生PresentationPrint打印演示文稿前此事件发生PresentationSave保存演示文稿前此事件发生PresentationSync演示文稿与服务器上的副本进行同步时此事件发生SlideSelectionChanged选择另一幻灯片时此事件发生WindowActivate激活演示文稿窗口时此事件发生WindowBeforeDoubleClick双击对象后而双击效果出现前此事件发生WindowBeforeRightClick右键单击对象后而单击效果出现前此事件发生WindowDeactivate演示文稿窗口取消活动状态时此事件发生WindowSelectionChange演示文稿窗口中选取另一对象时此事件发生放映幻灯片SlideShowBegin启动放映幻灯片时此事件发生SlideShowEnd结束放映幻灯片后此事件发生SlideShowNextBuild动画效果结束后此事件发生SlideShowNextClick单击切换到另一张幻灯片时发生此事件SlideShowNextSlide切换到另一张幻灯片时发生此事件三、申明和实例化Application对象由于上述的事件属于Application对象的事件,所以如果要为这些事件编程的话,必须先申明一个能捕获事件的Application对象。申明能捕获事件的Application对象的关键词是WithEvents。具体操作步骤如下:1、插入一个类模块。由于该模块要被在另一个模块里的初始化例程引用,所以应该给该类模块一个有意义的名称。例如在下面的例子里该类模块被命名为appEvents。可以在对象属性窗口里完成改名操作。2、在该类模块的通用段里申明一个能捕获事件的Application对象,对象名称用户自定,例如在下面的例子里该Application对象被命名为app:Public WithEvents app As Application3、申明了Application对象后,便可以为该对象的事件编程了。4、在另一个模块里引用该模块并实例化Application对象。通常做法是插入一个通用模块,并在模块里创建一个初始化例程,然后在模块的通用段里申明一个包含Application对象及其事件编程的类模块,并在初始化例程里实例化该类模块和Application对象。例:Dim nonControlEvents As appEventsPublic Sub Initialize()Set nonControlEvents = New appEventsSet nonControlEvents.app = ApplicationEnd Sub四、应用Application对象的放映事件自动地动态设定放映内容Application对象的事件可以应用于编辑幻灯片的时候,也可以应用于放映幻灯片的时候。本文以动态设定放映内容为例子来探讨Application对象的事件应用于放映幻灯片的场合。该例子可用来制作简单的照片浏览器。操作步骤:1)创建数据库:由于要动态设定放映内容,所以动态放映的内容应该存放在数据库里。在本例子里要动态设定的放映内容是一幅图片和一段文字说明,采用Microsoft Access数据库存放动态放映的内容。对数据库的设计和创建是先建立一个Microsoft Access数据库,命名为db.mdb,然后在数据库里添加一个名为item的数据表,在数据表里建立两个字段:fldPicture (Text, 50)和fldText (Text, 200),分别用于存放保存图片的路径及文件名和存放文字说明(对数据库的具体操作不在本文讨论范围)。2)创建演示文稿:创建两张幻灯片,设置好版式以及固定的放映内容,并将放映方式设为“循环放映,按结束”,幻灯片换片方式为“每隔3秒”,并取消单击鼠标换片。之所以要用两张幻灯片是因为要利用两张幻灯片之间的换片事件来动态改变放映内容。3)创建模块:在VB编辑器里创建一个普通模块和一个类模块,按上述方法在类模块里申明一个Application对象和在普通模块里申明并引用类模块。如果要在普通模块的初始化例程里启动放映演示文稿,可以用演示文稿的幻灯片放映设置的Run方法来实现: ActivePresentation.SlideShowSettings.Run4)引用ADO库:在引用对话框里引用“Microsoft ActiveX Data Object 2.0 Library”。5)编写放映事件的代码:在类模块里为Application对象的放映事件编写代码,实现动态设置放映内容。Public WithEvents app As ApplicationDim cn As New ADODB.Connection申明并实例化一个ADO连接对象Dim rs As New ADODB.Recordset申明并实例化一个ADO记录集对象Dim intCurrentSlide As Integer用于记录正在放映的幻灯片序号Dim shpPicture(1 to 2) As Shape申明两个Shape对象放映图片Dim shpText(1 to 2) As Shape申明两个Shape对象放映文字说明Dim intEntryEffect As Integer 存放幻灯片切换方式利用SlideShowBegin事件初始化放映设置Private Sub app_SlideShowBegin(ByVal Wn As SlideShowWindow) With cn .Provider = Microsoft.jet.oledb.4.0 .Open (ActivePresentation.Path & db.mdb) 连接数据库 End With With rs .ActiveConnection = cn .Open (Select * from items), , adOpenStatic 读取数据表记录 End With intCurrentSlide = 1当前幻灯片序号为1 If Not rs.EOF Then 如果是空数据表,则不进行以下操作 在第一张幻灯片上显示图片,位置是(Top = 10, Left = 10)Set shpPicture(1) = ActivePresentation.Slides(1).Shapes _ .AddPicture(rs.Fields(1), msoCTrue, msoCTrue, 10, 10) Set shpText(1) = ActivePresentation.Slides(1).Shapes _ .AddLabel(Orientation:=msoTextOrientationHorizontal, _ Left:=450, Top:=10, Width:=300, Height:=500)实例化shpText(1) shpText(1).TextFrame.TextRange.Text = rs.Fields(2)显示文本 rs.MoveNext记录指针下移 If rs.EOF Then rs.MoveFirst若到记录表尽头,指针返回第一个记录对第二张幻灯片做同样操作 Set shpPicture(2) = ActivePresentation.Slides(2).Shapes _ .AddPicture(rs.Fields(1), msoCTrue, msoCTrue, 10, 10) Set shpText(2) = ActivePresentation.Slides(2).Shapes _ .AddLabel(Orientation:=msoTextOrientationHorizontal, _ Left:=450, Top:=10, Width:=300, Height:=500) shpText(2).TextFrame.TextRange.Text = rs.Fields(2) rs.MoveNext If rs.EOF Then rs.MoveFirst End If intEntryEffect = 2049 设定幻灯片切换方式为从左抽出End SubPrivate Sub app_SlideShowEnd(ByVal Pres As Presentation) If Not rs.EOF Then shpPicture(1).Delete 删除幻灯片的图片 shpPicture(2).Delete shpText(1).Delete 删除幻灯片的文本 shpText(2).Delete End If rs.Close Set rs = Nothing cn.Close Set cn = NothingEnd SubPrivate Sub app_SlideShowNextSlide(ByVal Wn As SlideShowWindow) If intCurrentSlide = 1 Then 切换两张幻灯片序号 intCurrentSlide = 2 Else intCurrentSlide = 1 End If If intEntryEffect 2057 Then 产生一个相对随机的幻灯片切换方式 intEntryEffect = Int(8 * Rnd + 2049) Else intEntryEffect = Int(5 * Rnd + 3857) End If ActivePresentation.Slides(intCurrentSlide).SlideShowTransition _ .EntryEffect = intEntryEffect 更改幻灯片切换方式 If Not rs.EOF Then 更改当前幻灯片上的图片和文本 shpPicture(intCurrentSlide

温馨提示

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

评论

0/150

提交评论