PB中dynamic调用类型的用法

原创 2004年12月29日 23:10:00
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

PB中的DYNAMIC

祖先窗口 w_a 有个函数 Set(integer). 派生窗口 w_a_desc 有两个函数: Set(integer) 继承祖先的杉树, Set(string) 是一个重载的函数 假想你打开祖...
  • lijianhe043
  • lijianhe043
  • 2011年12月10日 11:06
  • 2275

PB代码动态解析执行器

PB代码动态解析执行器 博客分类:  pb 脚本SybaseF#VB百度 PB代码动态解析执行器  当你看到VB、VFP等开发语言提供的强大的宏执行功能,是不是很羡慕呢?...
  • aasmfox
  • aasmfox
  • 2015年08月13日 17:20
  • 697

【PB】动态SQL语句

所谓动态SQL语句是指部分或者整个SQL语句在运行时才能确定,这样的SQL语句可以用来设计能和用户进行更好交互的界面。因为参数的确定留给用户总比编程时由开发人员规定死要好得多。另外, PowerBui...
  • lijianhe043
  • lijianhe043
  • 2012年01月02日 14:31
  • 9029

Pb技巧1

1 string(today(),"m/d/yy hh:mm")//返回当前系统日期和时间 string date1 date1=string(today(),"mm/dd/yyyy hh...
  • u011846407
  • u011846407
  • 2016年01月10日 14:10
  • 1202

PB数据窗口对象之Button

〓Button重要属性 *Action属性 该属性是Button控件最重要的一个属性。在数据窗口画板中,可以选择一个按钮有哪个动作。可选的动作都是事先定义好的,开发人员没有机会精确定义某个动作的执...
  • u012369435
  • u012369435
  • 2014年07月04日 13:04
  • 1524

PB中dynamic调用类型的用法

PB中dynamic调用类型的用法 说到DYNAMIC调用类型,我们先看看对象、属性、函数和事件的引用方法:PowerBuilder 6.0应用程序的开发过程实际上就是各种对象的定义和使用过程。所有对...
  • chensheng913
  • chensheng913
  • 2004年12月29日 23:10
  • 7086

PB进阶代码(很全的)

  • 2009年10月17日 11:56
  • 10.12MB
  • 下载

PowerBuilder 读写Oracle CLOB 和BLOB的数据

1、更新操作://==============================================================================// 函数: w_reco...
  • caok
  • caok
  • 2008年12月07日 22:49
  • 1949

PB中的DataStore的应用示例

编程过程中想在窗口中加一个下拉列表(DDLB),原来听同学说过可以动态改变下拉列表的值,数据库中的表改变,前台客户端的下拉列表就会变,记得当时同学说的是用一个叫下拉数据窗口(DDDW)的东西做的,一直...
  • tlammon
  • tlammon
  • 2016年03月20日 14:02
  • 500

PB代码动态执行

  • 2012年04月23日 15:04
  • 5.59MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PB中dynamic调用类型的用法
举报原因:
原因补充:

(最多只允许输入30个字)