Form Builder开发中的继承(Subclassing)
原文见于Form builder On-line 帮助
(版权声明,本人原创或者翻译的文章如需转载,请于本人联系,违者必究)
术语
对象组 -Object Groups
模块 -module
继承 -subclass
窗口 -window
画布 -canvas
数据块 -block
菜单 -menu
触发器 -trigger
关系 -relation
继承 -subclassing
子对象 -subclassed object
源对象 -source object
关于继承 (Subclassing)
当你继承一个对象的时候,子对象就从源对象继承了相应的功能和外观。
继承一个对象就和拷贝一个对象类似,除了子对象维护了一个到源对象的链接。当你打开或者重编译包含子对象的模块时,子对象自动继承源对象所做的更改,除非子对象和源对象模块都是打开的。因为如果两个模块都是打开的,更改会即刻在子对象中生效。
继承允许你:
l 创建任意对象的独立子类
l 自动把源对象的变化扩展到所有子类对象
l 覆盖子类的属性和结构
继承结合Object Library一起使用,可以提供一种强大的方法来定义和实施外观需求。在form和menu模块里面,可以继承任何存储在Object Library里的对象来创建独立的子类实例。
创建子对象的指导原则
当创建子对象的时候,应考虑以下原则
l 当为一个对象实现继承的时候,源对象拥有的对象也都会被继承,但源对象所关联的对象不会被继承。比如,当你继承一个block的时候,block里面Items的图像文本标签是不会被包含在子对象里的。因为图像文本是Canvas所拥有并通过Canvas来呈现的,并不是block或者Item所拥有的。如果想用继承图像文本,你必须继承相应的canvas.
l 如果你跨模块继承,那么源模块和目标模块都必须是打开的,并且源模块已经保存到了文件系统或者数据库中。
l 谨慎删除源对象,因为删除源对象会打断源对象和所有子对象的链接关系。
l 谨慎修改源对象的名称。
l 当你更改一个被trigger/程序代码单元引用,或者关联数据库字段的item的名称时,应用程序的功能就被你破坏了。
l 谨慎覆盖复杂值集(比如,列表元素)
l 如果更改一个被继承的程序代码单元,所有子对象都必须重新编译。
l 你必须使用属性面板来更改继承的代码,通过PL/SQL编辑器修改被继承的代码会打断与源对象的链接关系。
如何继承一个对象
1. 在对象导航器或者对象库中,点击要继承的对象,然后按住CTRL并把这个对象拖到需要的位置。Oracle form builder会显示拷贝/继承对话框。
2. 点击继承
Oracle form builder会创建一个子对象,如果子对象的名称和现有对象的名称有冲突,Form Builder会自动给新对象分配一个新名字。一个子对象在对象导航器里会在名称前面显示一个带箭头的图标来表明这个对象是继承自另一个对象的。
修改子对象
1. 在对象导航器,单击要修改的子对象,弹出属性面板
2. 选择菜单工具->属性面板。
3. 根据需要修改对象。
关于修改子对象
你可以通过以下方式更改子对象
1. 根据需要设置对象属性,可以选择覆盖或者继承相应的属性。
2. 通过属性面板快速查看一个子对象的属性。属性面板在继承的属性旁边显示一个箭头,在默认值旁边显示一个小圆圈,在非默认值旁边显示一个方块,在本地覆盖的属性旁边显示一个带x号的箭头。
3. 根据需要修改继承的代码.
使用属性面板修改继承的触发器和程序单元。
注意:不要使用PL/SQL编辑器来修改继承的代码,这样做会打断和源对象的链接。
把一个属性回滚到继承值
1. 在属性面板,点击要回滚的属性。
2. 点击属性面板工具栏上的继承按钮。
属性就会被恢复成源对象中的相应的属性值。
注意:属性面板工具栏里的继承命令是可以把变化了的属性值恢复成继承值的唯一方式。只是简单的把变化了的值设成继承值仍然是打断了继承关系,并不能维持继承属性,它只是设了一个和源对象属性一样的值而已。如果之后你更改了源对象的属性值,子对象上的属性还是维持自己的值,并不会继承源对象上修改。