PB中dynamic调用类型的用法
说到DYNAMIC调用类型,我们先看看对象、属性、函数和事件的引用方法:
PowerBuilder6.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.EVENTTRIGGERClicked()即可。
从以上看出,DYNAMIC是指定函数或事件的一个动态调用,即当你指定一个动态调用时,函数和事件在编译时不一定要存在。你告诉编译器:相信我,此处在运行时一定会有一个合适的函数或事件。对于动态调用,PowerBuilder等到执行时才寻找函数或事件。这就给了你更大的编程灵活性。
请比较以下的示例(摘录):
目前流行的大部分应用程序中都提供了Undo功能,在PowerBuilder中也可以利用Undo()函数实现该功能。Undo()函数可用于DataWindow,EditMask,MultiLineEdit,RichTextEdit和SingleLineEdit对象,如果只对某一个对象进行Undo操作,只需在Undo菜单项的单击事件中键入如下脚本:Objectname.undo(),但是当窗口中有多个对象,我们在编写脚本时并不知道要对哪个对象执行undo()操作,如何解决这一问题呢?在PowerBuilder中,undo()等函数只能用于可视对象,而所有可视对象均继承自系统对象类GraphicObject。因此我们可以定义一个GraphicObject对象的实例变量go_object,等到运行时再用getfocus()函数确定具体操作对象。然后用Typeof()函数确定当前对象的类型,再用Choosecase语句根据不同的类型引用不同的实例变量,代码如下:
graphicobjectgo_object
DataWindowdw_object
EditMaskem_object
MultiLineEditmle_object
RichTextEditrte_object
SingleLineEditsle_object
go_object=getfocus()
choosecaseTypeOf(go_object)
caseDataWindow!
dw_object=go_object
dw_object.undo()
caseEditMask!
em_object=go_object
em_object.undo()
caseMultiLineEdit!
mle_object=go_object
mle_object.undo()
caseRichTextEdit!
rte_object=go_object
rte_object.undo()
caseSingleLineEdit!
sle_object=go_object
sle_object.undo()
caseelse
messagebox("出错","不能撤消!")
endchoose
其实我们可以用动态调用函数的方法简单地解决这一问题,即对GraphicObject对象调用undo()函数,然后在函数名前加上关键字Dynamic
|
相关推荐
PB调用http、api,PB解析json; PB调用http、api,PB解析json; PB调用http、api,PB解析json; PB调用http、api,PB解析json; PB调用http、api,PB解析json; PB调用http、api,PB解析json; PB调用http、api,PB解析...
pb中调用FLASH,很难找的DLL. 可实现调用FLASH中的按钮,使您的界面更加美观。
调用了PB中的ORCA来完成该功能 使用方式 命令行调用 ssdynamic.exe PB代码 例 ssdynamic.exe messagebox("","have a test") 执行后会弹出 have a test 如需连接数据库 代码中增加 f_conn("服务名",...
在网上找不到 我想要的效果,找了一天的资料后,自己突然开窍了^_^
pb9.0调用c#dll 动态链接库
Pb调用 c#编写的DLL的方法 C#以其简单易用,功能强大深受大家喜爱.PowerBuilder作为C/S的MIS开发工具,十分简单灵活,开发时间短,开发及维护成本低,一直是中小企业信息管理系统的首选开发工具.但是PB的局限性限制了它...
pb中调用word资料,可供PB爱好者参考
PB调用http api接口,PB解析json到数据源,get和post都有案列,PB解析json,可解析树立菜单,也完美可解析后将结果存到数据源
PB调用http api接口,PB解析json到数据源,get和post都有案列,PB解析json,可解析树立菜单,也完美可解析后将结果存到数据源
浏览器控件如何在powerbuilder中调用
我们项目中的一个样例,用PB调用我们项目组的AXIS2写的WEBSERVICE。运行需要微软MSSOAP30,由于解决超时费了我很多时间,希望解决朋友们的问题。
PB调用C++DLL问题,测试例子中是, 调用C++的char*参数的小例子
PB9调用指定浏览器打开URL的DEMO,内涵EXE和源码。欢迎下载使用。
几乎全部API在PB中调用的说明几乎全部API在PB中调用的说明几乎全部API在PB中调用的说明
JAVA WEBSERVICE 建的实例工程,给PB调用, 因VS建的 WEBSERVICE PB很难调用,所以用JAVA的axis做了个小实例 共大家参考
几乎全部API在PB中调用的说明,包括了详细的说明
封装自定义方法,编译成DLL文件供外部调用
PB调用摄像头的工具,简单,方便,功能全可保存照片视频,内含源码,可进行图片的保存,视频的保存,录制视频
全部API在PB中调用的说明;对于学习PB调用外部函数的学习比较有帮助。
管理系统常用pb开发,少不了外部接口,PB9外部接口调用C++的dll,测试程序。