教程链接: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. 周黑鸭借力MES,推进智能生产

    1.项目背景介绍 中国食品企业在经过了一些年的行业整体快速增长后,国家对食品行业的管理提出了更加严格的要求,控制更严,准入门槛提高,企业数量成下降趋势. 大中型食品企业已经需要走出国门,走向国际市场, ...

  2. apktool 反编译 回编译

    下载apktool 安装好Java环境 拷贝apk 拷贝game.apk到当前文件夹.apk随便指定 反编译 反编译完成.生成game目录 game目录内容 回编译 回编译完成.生成build和dis ...

  3. Shell 编程 免交互 expect

    本篇主要写一些shell脚本免交互expect的使用. 概述 Expect是建立在tcl基础上的一个工具,Expect 是用来进行自动化控制和测试的工具.主要解决shell脚本中不可交互的问题. 安装 ...

  4. Linux命令——lsmod

    参考:8 LSMOD, RMMOD, MODPROBE, AND MODINFO COMMAND EXAMPLES IN LINUX Linux lsmod command 简介 lsmod显示(或“ ...

  5. debian 系统修改密码

    1.在Grub的引导装载程序菜单上,选择你要进入的条目,键入 “e” 来进入编辑模式.2.在第二行(类似于kernel /vmlinuz-2.6.15 ro root=/dev/hda2 ),键入”e ...

  6. Godaddy ssl证书配置到nginx

    打开终端,输入以下命令 openssl req -new -newkey rsa:2048 -nodes -keyout domain.key -out domain.csr 生成过程会询问几个常见问 ...

  7. wordpress列表页如果文章没有缩略图就显示默认图片

    有时我们在设计wordpress模板时需要考虑是否有特色图,在分类页上如果一些文章有缩略图一些没有那就有点参差不齐不美观,有没办法设置如果没有文章缩略图则自动显示默认图呢?可以的,随ytkah一起来看 ...

  8. CF1081C-Colorful Bricks-(dp||组合数)

    http://codeforces.com/problemset/problem/1081/C 题意:有n个排成一行板块,有m种颜色,要让这些板块有k对相邻板块不同颜色,有多少种涂色方法? 比如样例2 ...

  9. NOIP2013-2014提高组题目浅析

    1.前言 迎接NOIP的到来...在这段闲暇时间,决定刷刷水题.这里只是作非常简单的一些总结. 2.NOIP2014 <1> 生活大爆炸之石头剪刀布(模拟) 这是一道考你会不会编程的题目. ...

  10. 动态内存管理:malloc/free/new/delete/brk/mmap

    这是我去腾讯面试的时候遇到的一个问题——malloc()是如何申请内存的? c++ 内存获取和释放 new/delete,new[]/delete[] c 内存获取和释放 malloc/free, c ...