选择显示字体大小

pb中dynamic调用类型的用法

说到dynamic调用类型,我们先看看对象、属性、函数和事件的引用方法: 
  powerbuilder 6.0应用程序的开发过程实际上就是各种对象的定义和使用过程。所有对象都有名称,并通过名称相互区分。在powerscript中,访问对象的属性、函数、事件的方法很简单,就是使用圆点作为标记符,具体来说,访问对象属性的格式为:
  对象名.对象属性
  例如,把单行编辑框sle_name的用户输入内容送到字符串变量userenter的语句可以写成:
  userenter=sle_name.text
  其中,sle_name是一个单行编辑框对象的名称,text是单行编辑框的text属性。
  程序中访问对象的函数与事件的格式为:
  { objectname.} { type } { calltype } { when } functionname ( { argumentlist } )
  其中,大括号所括成分根据情况可以省略,各成分的意义为:
  objectname是对象名;
  type取值为function或event,用于指明访问函数还是事件,缺省值为function;
  calltype用于指明powerbuilder 查找函数的时机,有效取值为:
  static(缺省值):编译时查找函数,若不存在,产生编译错误
  dynamic:程序运行时查找函数,若不存在,产生运行错误
  when用于指明函数或事件是立即执行呢还是当前程序段执行完毕后执行,取值为:
  trigger(缺省值):立即执行
  post:当前程序段执行完毕后执行
  functionname指明调用的函数或事件名称
  argumentlist给出函数或事件的参数
  例如,想把输入焦点移动到单行编辑框sle_name上,程序中写上语句:sle_name.setfocus()即可。想立即执行按钮cb_name的单击事件处理程序,那么写上语句:cb_name .event trigger clicked()即可。
  从以上看出,dynamic是指定函数或事件的一个动态调用,即当你指定一个动态调用时,函数和事件在编译时不一定要存在。你告诉编译器:相信我,此处在运行时一定会有一个合适的函数或事件。对于动态调用,powerbuilder等到执行时才寻找函数或事件。这就给了你更大的编程灵活性。
  请比较以下的示例(摘录):
  目前流行的大部分应用程序中都提供了undo功能,在powerbuilder中也可以利用undo()函数实现该功能。undo()函数可用于datawindow, editmask, multilineedit, richtextedit和singlelineedit 对象,如果只对某一个对象进行undo操作,只需在undo菜单项的单击事件中键入如下脚本:objectname.undo(),但是当窗口中有多个对象,我们在编写脚本时并不知道要对哪个对象执行undo()操作,如何解决这一问题呢?在powerbuilder中,undo()等函数只能用于可视对象,而所有可视对象均继承自系统对象类graphicobject。因此我们可以定义一个graphicobject对象的实例变量go_object,等到运行时再用getfocus()函数确定具体操作对象。然后用typeof()函数确定当前对象的类型,再用choose case语句根据不同的类型引用不同的实例变量,代码如下:
  graphicobject go_object
  datawindow dw_object
  editmask em_object
  multilineedit mle_object
  richtextedit rte_object
  singlelineedit sle_object
  go_object=getfocus()
  choose case typeof(go_object)
  case datawindow!
  dw_object=go_object
  dw_object.undo()
  case editmask!
  em_object=go_object
  em_object.undo()
  case multilineedit!
  mle_object=go_object
  mle_object.undo()
  case richtextedit!
  rte_object=go_object
  rte_object.undo()
  case singlelineedit!
  sle_object=go_object
  sle_object.undo()
  case else
  messagebox("出错","不能撤消!")
  end choose
  其实我们可以用动态调用函数的方法简单地解决这一问题,即对graphicobject对象调用undo()函数,然后在函数名前加上关键字dynamic


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons