教程链接:https://wenku.baidu.com/view/9730d1c7aa00b52acec7ca05.html?re=view&rec_flag=default&sxts=1565141830016
14章用户自定义对象:
1、何为用户对象:用户对象是封装了一组相关代码和属性、完成特定功能的可重用对象,用户对象一般用于完成通用功能,
当应用程序需要某种反复使用的特性时应当定义用户对象。

2、用户对象作用:
①扩展系统原有对象的功能,增加新的使用方法;
②创建高度可重用的自定义部件,在一个或多个应用程序中反复使用,缩减开发和维护世界,提供开发效率;
③将其它语言开发的代码嵌入Powerbuilder应用程序中。

3、用户对象优势:
①避免了在应用程序中不同地方编写功能相同或相近代码的麻烦,提高了应用程序的可维护性
②用户对象可以将一组总之一起使用的可视控件组合在一起,构成一个完成特定功能的控件,应用程序可以在需要的地方随时使用它
③用户对象提供了构造具有一致外观的可视控件的方法
④用户对象能够将相关功能封装在一起
⑤用户对象允许开发人员扩展某些PowerBuiler系统对象(如事务对象)的功能。

4、用户对象分类:
(1)可视用户对象(Visual User Object),如按钮、编辑框等具备可视的外观,主要完成应用程序与用户自己的信息交流
①标准可视用户对象(Standard Visual User Object)
②定制可视用户对象(Custom Visual User Object)
③外部可视用户对象(External Visual User Object)
(2)类用户对象(Class User Object),没有屏幕表现形式,主要用于封装和完成一定的业务逻辑。
①标准类用户对象
②定制类用户对象
类用户对象没有可视成分,使用时需要在代码中创建它的一个实例,具体步骤:
①说明类用户对象类型的变量,使用CREATE语句创建该对象的一个实例。
②在变量的整个作用域中,代码都能访问该对象的属性、事件、函数,就像使用系统预定义对象那样(如事务处理对象SQLCA)
③不再使用该对象时,使用DESTROY语句删除该对象,以释放它所占的内存。
例:u_datastore myhds //声明u_datastore 类型的变量 myds
myds=CREATE u_datastore //创建用户对象实例myds
myds_DataObject='d_user_search' //将数据窗口对象与类用户对象联系起来
myds.SetTransObject(SQLCA) //设置类用户对象使用的事务对象
ret=myds.Retrieve(math) //检索数据
... //应用程序所需的其它处理
DESTROY myds //使用后删除用户对象,释放内存

用户对象的命名通常以“u_”为前缀,用户对象控件或实例的命名通常以“uo_” 为前缀。

4.1.1、标准可视用户对象 Standard Visual
是对PB现有控件的扩充,在现有控件基本功能的基础上增加了应用程序需要的功能。继承了原始控件的各种特征,包括属性、事件和函数。
调用触发事件或函数的语句:

系统事件是枚举类型:Clicked!, 用户自定义事件是字符串:"u_key"

4.1.2、定制可视用户对象 Custom Visual
是将多个控件及可是用户对象组合成一个整体,完成一定的功能和操作。
可视用户对象中控件的大小、位置等属性不能在窗口上改变,只能在定制可视用户对象画板中进行修改。
使用窗口中的代码控制定制可视用户对象中的控件时,语法为:用户对象名+控件名+属性或函数,例子:uo_1.cb_ok.text="确定" 为对象uo_1的控件cb_ok的text属性赋值

4.1.3、外部可视用户对象 External Visual
实际上就是在PB应用程序中使用其它语言编写的第三方控件。

4.2.1 标准类用户对象
继承一个内部系统对象的所有特征,在此基础上进行功能修改(类似标准可视用户对象)
类用户对象没有可视成分,使用时需要在代码中创建它的一个实例,具体步骤:
①说明类用户对象类型的变量,使用CREATE语句创建该对象的一个实例。
②在变量的整个作用域中,代码都能访问该对象的属性、事件、函数,就像使用系统预定义对象那样(如事务处理对象SQLCA)
③不再使用该对象时,使用DESTROY语句删除该对象,以释放它所占的内存。
例:u_datastore myhds //声明u_datastore 类型的变量 myds
myds=CREATE u_datastore //创建用户对象实例myds
myds_DataObject='d_user_search' //将数据窗口对象与类用户对象联系起来
myds.SetTransObject(SQLCA) //设置类用户对象使用的事务对象
ret=myds.Retrieve(math) //检索数据
... //应用程序所需的其它处理
DESTROY myds //使用后删除用户对象,释放内存
4.2.2 定制类用户对象
定制类用户对象是用户自己设计的对象,用于封装不需要可视特性的处理过程。这些对象并不继承自某个PB对象或控件,完全由用户通过自定义实例变量、函数、事件来实现。
定制用户可视对象只有两个系统预定义事件:Constructor 和Destructor。
删除用户对象只能在"Library" 工作区才能实现。

调用触发事件或函数的语句:
Object_name.[Trigger|Post][Static|Dynamic] EVENT event_name([para_list])

object_name.TriggerEvent(event_name)
object_name.PostEvent(event_name)
系统事件是枚举类型:Clicked!, 用户自定义事件是字符串:"u_key"

PowerBuilder学习笔记之14用户自定义对象的更多相关文章

  1. PowerBuilder学习笔记之3应用对象

    教材地址:https://wenku.baidu.com/view/49121fdb6f1aff00bed51e05.html?sxts=1565760465744 3.1.1什么是应用对象(Appl ...

  2. Java程序猿JavaScript学习笔记(14——扩大jQuery UI)

    计划和完成这个例子中,音符的顺序如下: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScr ...

  3. JavaSE学习笔记(14)---File类和IO流(字节流和字符流)

    JavaSE学习笔记(14)---File类和IO流(字节流和字符流) File类 概述 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. 构造方 ...

  4. Caffe学习笔记2--Ubuntu 14.04 64bit 安装Caffe(GPU版本)

    0.检查配置 1. VMWare上运行的Ubuntu,并不能支持真实的GPU(除了特定版本的VMWare和特定的GPU,要求条件严格,所以我在VMWare上搭建好了Caffe环境后,又重新在Windo ...

  5. RocketMQ学习笔记(14)----RocketMQ的去重策略

    1. Exactly Only Once (1). 发送消息阶段,不允许发送重复的消息 (2). 消费消息阶段,不允许消费重复的消息. 只有以上两个条件都满足情况下,才能认为消息是“Exactly O ...

  6. Java学习笔记之---类和对象

    Java学习笔记之---类和对象 (一)类 类是一个模板,它描述一类对象的行为和状态  例如:动物类是一个类,动物们都有属性:颜色,动物们都有行为:吃饭 public class Dog { Stri ...

  7. Flutter学习笔记(14)--StatefulWidget简单使用

    如需转载,请注明出处:Flutter学习笔记(14)--StatefulWidget简单使用 今天上班没那么忙,突然想起来我好像没StatefulWidget(有状态组件)的demo,闲来无事,写一个 ...

  8. [原创]java WEB学习笔记15:域对象的属性操作(pageContext,request,session,application) 及 请求的重定向和转发

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  9. Django学习笔记(14)——AJAX与Form组件知识补充(局部钩子和全局钩子详解)

    我在之前做了一个关于AJAX和form组件的笔记,可以参考:Django学习笔记(8)——前后台数据交互实战(AJAX):Django学习笔记(6)——Form表单 我觉得自己在写Django笔记(8 ...

随机推荐

  1. selenium控制超链接在当前标签页中打开或重新打开一个标签页

    selenium控制超链接在当前标签页中打开或重新打开一个标签页 在web页面源码中,控制超链接的打开是在当前标签页还是重新打开一个标签页,是由属性target=“_black”进行控制的.如果还有属 ...

  2. Myapp

    一.github地址:https://github.com/jianghailing/rjgcsecondwork 二.PSP表格: PSP2.1 Personal Software Process ...

  3. 一、Hadoop入门概述

    一.Hadoop是什么 Hadoop是一个由Apche基金会所开发的分布式系统基础架构. 主要解决海量数据的存储和海量数据的分析计算问题. 广义上来说,Hadoop通常是指一个更广泛的概念—Hadoo ...

  4. 05. redis事务

    目录 Redis 事务 事务 1. 命令有序 2. 始终原子 开启使用事务 Redis事务中出现错误 1. EXEC前的错误 2. EXEC后的错误 为什么出错了不支持roll backs? Redi ...

  5. MySQL数据物理备份之xtrabackup

    percona-xtrabackup 它是开源免费的支持MySQL 数据库热备份的软件,它能对InnoDB和XtraDB存储引擎的数据库非阻塞地备份.它不暂停服务创建Innodb热备份: 为mysql ...

  6. mac下sourcetree创建git分支和合并分支

    git默认创建的分支为:master主分支 要实现的效果:新建和合并分支. 1.在master基础上创建分支v1.0.1并切换至v1.0.1然后推送分支到远程服务器 确定即可!! 然后查看远端已经发现 ...

  7. [转]【Servlet】Servlet的访问过程

    创建时间:6.15 Servlet的访问过程 1. 画图描述整个访问过程: *每次访问service()方法都会创建一对新的request和response对象,都不一样 2. 访问过程2: 问题:对 ...

  8. python操作mysql(增、删、改、查)

    用python操作数据库,特别是做性能测试造存量数据时特别简单方便,比存储过程方便多了. 连接数据库 前提:安装mysql.python,参考:https://www.cnblogs.com/Uncl ...

  9. eclipse---之Console窗口命令行输入

    在 Eclipse 中使用 Windows 命令行. 第一步:设置一个新的外部配置工具  在 Eclipse 中,选择 “Run -> External Tools -> External ...

  10. 引入jquery时,页面一直加载

    注意jquery的引用位置最好放在<head>下面.