Database 版 (精华区)

发信人: wodeji (西西), 信区: Database
标  题:  PowerBuilder每日心得
发信站: 紫 丁 香 (Thu Jul 23 18:23:07 1998), 站内信件

如何在子类中调用父类的函数与事件(对PB5适用)

当子类重载了父类的函数或事件时,而且子类被实例化为对象,调用
该对象的函数或事件时,子类的函数或事件被执行。如果需要在此时
调用父类的函数与事件,可以用::域分辨符实现。

语法如下:
        {objectname.}ancestorclass::{type}{when}name({arguments})

其中:
objectname      :       对象名
ancestorclass   :       需调用的父类名,可以用Super关键字代替。
type            :       指明调用的是函数还是事件,可取如下值
                FUNCTION 表明调用的是函数(缺省方式)
                EVENT    表明调用事件
when            :       指明事件或函数被调用的时间,可取如下值
                TRIGGER 立即执行(缺省方式)
                POST    本段代码(Script)执行完再执行                   
name            :       被调用的函数名或事件名
arguments       :       调用参数


如果子类事件的重载代码是extend父类的代码,那么在子类代码执行完毕之后
再执行父类代码。如果父类的代码有返回值的话,那么该返回值将会丢失。
若要截取该返回值,必须在重载的事件代码中使用触发该事件

result = Super::EVENT eventname(argumentlist)
return result

举例:
w_ancestor为父类窗口,w_child为子类窗口,在w_child的Open事件中
调用父类的Open事件(假设继承方式为Override),可用
w_ancestor::EVENT Open()

Super::EVENT Open();
调用父类的函数
w_ancestor::wf_WinFunc( arg1, arg2 ) // Execute immediately

w_ancestor::POST wf_WinFunc(arg1, arg2) // Execute after the script finishes
发信人: wdsq (WonderDiscoveror), 信区: Database

发信人: wdsq (WonderDiscoveror), 信区: Database
标  题: PowerBuilder每日心得(2)
发信站: 华中地区网络中心 (Mon Sep 23 19:35:54 1996)

今天发现一个PowerBuilderd编程技巧的WWW点,还值得去看看。

http://ourworld.compuserve.com/homepages/Howe/



发信人: wdsq (WonderDiscoveror), 信区: Database

发信人: SQ (WonderDiscoveror), 信区: Database
标  题: PowerBuilder 每日心得 (5)
发信站: 华中地区网络中心 (Mon Oct  7 17:05:36 1996)

前几天为了如何创建 proxy object 大伤脑筋,没想到竟如此简单!
在设计User Object时,从右键菜单中点取 Set Proxy Object Name 即可!   
在设计User Object时,从右键菜单中点取 Set Proxy Object Name 即可!
哈哈哈!我前两天怎么没想到呢?





发信人: wdsq (WonderDiscoveror), 信区: Database

发信人: SQ (WonderDiscoveror), 信区: Database
标  题: PowerBuilder 每日心得 (6)
发信站: 华中地区网络中心 (Tue Oct  8 11:09:54 1996)

在PowerBuilder中用 OLE Automation 太简单了!

PB5 不仅可以支持OLE Automation Client, 而且可以很方便地做
OLE Automation Server. 事实上,每个user object 都是OA Enabled的。
如果外面的应用程序要使用PB的User Object, 只需作如下调用:

1. 在VB中调用
        Dim PBObject as object

        'Create the ole object at first                               
  'Create the ole object at first
        PBObject = CreateObject("uo_test") 'uo_test is my userobject in PB
        if PBObject is nothing then
           REM Error handling
        else
           PBObject.SomeAttribute = "some value"
           PBObject.DoSomething("Method parameter")
        end if

        'Disconnect the OLE object
        PBObject = nothing

2. 在PB中使用其它PB程序的对象

        OleObject PBObject
        long status

        PBObject = CREATE OleObject
        status = PBObject.ConnectToNewObject("uo_test")
        if (status<0) then
          // Error handling
        else
           PBObject.SomeAttribute = "some value"                          
2. 在PB中使用其它PB程序的对象

        OleObject PBObject
        long status

        PBObject = CREATE OleObject
        status = PBObject.ConnectToNewObject("uo_test")
        if (status<0) then
          // Error handling
        else
           PBObject.DoSomething("Method parameter")
        end if

        // Destroy the object after quiting program
        DESTROY PBObject

当然,如果要向上面如此方便地使用PB的user object, 使其在外部可被驱动,必须
在系统的注册数据库中有记录。利用PB5提供的Install Builder, 可以方便地生成
注册所需要的注册数据和Type Library.
                                                                      

--
※ 来源:.紫 丁 香 bbs.hit.edu.cn.[FROM: cad4.hit.edu.cn]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:8.153毫秒