PowerBuilder中动态创建OLE对象心得

        由于PB语言本身的特性,一般很少会在编程时使用第三方控件的。但是一旦使用还真不像VB那么方便。日前在编写一段程序时,就遇到了一点问题。写出来与大家分享心得。

        这段程序其实很简单,就是使用第三方提供的加密锁来实现密码或其它用户个人信息的存储。根据其提供的Demo程序,我们知道它有一个控件是用来读写加密锁指定地址数据的,至于其内在逻辑就不用管了,关键是如何调用的问题。程序中有好几个地方都要用到这个读写功能,Demo程序中实现方法是在窗口上放置一个OLE控件,然后通过该控件的Object属性进行内嵌对象的操作。这就限制了它的使用范围,毕竟我在每个要用到这功能的地方都使用OLE控件太麻烦,而且复用程度也不高。最好的方法能用UserObject或者是函数的方式将控件的操作封装起来,在任何用到的地方都可以直接调用。 这就牵涉到了如何在代码中动态地创建OLE对象的问题。

        其实在PB代码中创建OLE对象也是很简单的,只要声明一个OLEObject对象,然后ConnectToObject 到指定的OLE对象。那么这个ConnectToObject 方法的参数是什么?以前一直想不通,经过摸索总算找到了办法:先拿一个PB窗口做试验,找到DEMO程序中那个用到的OLE对象,但这个对话框显示的名称信息并不是我们要要找的,用它是无法连接到OLE对象的:

PowerBuilder中动态创建OLE对象心得_第1张图片

        接着单击“Browse ”按钮,弹出对话框。注意,这里的选中项“ProgID”才是我们使用ConnectToObject 方法要传递的字符串!

PowerBuilder中动态创建OLE对象心得_第2张图片

        有了以上的参数,在PB代码中动态创建这个对象就简单了。下面是摘抄的例子:

integer result

OLEObject myoleobject

myoleobject = CREATE OLEObject

result = myoleobject.ConnectToObject(  "这里要填写刚才的ProgID")

IF result = 0 THEN

    myoleobject.XXXX () //执行对象的方法

END IF

DESTROY myoleobject

       

你可能感兴趣的:(PowerBuilder技术)