PB 11第11章 自定义函数和结构
PB的小技巧

PB的小技巧1.如何使DataWindow中的数据只能追加新记录而不能修改。
利用Column 的Protect 属性可以很方便的做到这一点,方法如下:将每一列的Protect 属性设置为:If( IsRowNew(), 0, 1) )在PowerScript 中可以动态修改Protect 属性:dw_1.Modify("column_name_here.Protect='1~tIf(IsRowNew(),0,1)'")2. 允许从空的非字符字段跳离string ss = this.dwDescribe(this.GetColumnName()+".coltype")//s = this.dwDescribe("#"+String(this.GetColumn())+".coltype")CHOOSE CASE sCASE "number"IF Trim(this.GetText()) = "" THENint null_numSetNull(null_num)this.SetItem(this.GetRow(),this.GetColumn(),null_num)this.SetActionCode(3)END IFCASE "date"IF Trim(this.GetText()) = "" THENdate null_dateSetNull(null_date)this.SetItem(this.GetRow(),this.GetColumn(),null_date)this.SetActionCode(3)END IFCASE "time"IF Trim(this.GetText()) = "" THENtime null_timeSetNull(null_time)this.SetItem(this.GetRow(),this.GetColumn(),null_time)this.SetActionCode(3)END IFCASE "datetime"IF Trim(this.GetText()) = "" THENdate null_datetimeSetNull(null_datetime)this.SetItem(this.GetRow(),this.GetColumn(),null_datetime)this.SetActionCode(3)END IFEND CHOOSE3. 当我们为Datawindow的每一行显示行号时可以简单的放一个表达式为GetRow() -- 计算列。
PB常用函数

• RegistryKeys()
功能从系统注册库中得到指定键的有效子键。
语法RegistryKeys ( key, subkeys )
参数key:string类型,指定键名subkeys:字符串数组变量,用于保存各子键返回值Integer。函数执行成功时返回1,发生错误时返回-1。用法在subkeys参数中可以使用定长数组,也可以使用动态数组。使用动态数组时,数组的上界反映了能够得到的子键个数。当使用定长数组时,其数组元素个数必须足够多,保证能够容纳所有子键,但是,在具体得到子键之前,没有办法能够预先知道实际子键个数。为了唯一地标识某个键,在key参数中,可以从根键开始依次指定各级父键,各键之间使用反斜杠(\)分隔。
• RelativeDate()
功能得到指定日期前多少天或后多少天的日期。
语法RelativeDate(date,n)
参数date:Date类型,指定基准日期n:integer类型,指定天数返回值Date。当n的值大于0时返回参数date指定日期后第n天的日期;当n的值小于0时返回参数date指定日期前第n天的日期。如果任何参数的值为NULL,则RelativeDate()函数返回NULL。
________________________________________
• Hour()
功能得到时间值中的小时,采用24小时制。
语法Hour ( time )
参数time:time类型的值返回值Integer。函数执行成功时得到time参数中的小时(00到23之间)。如果time参数的值为NULL,则Hour()函数返回NULL。
PB之常用函数

Return1
//不允许关闭
EndChoose //用户所有的选择情况处理完毕
通过上面的脚本,可以为用户提供一个很健壮的数据处理窗口。即使直接关闭该窗口,在数据窗口中所做的数据修改也不会丢失,除非用户 自己想放弃。
另外,需要注意的是,在其他事件中调用或者触发(使用TriggerEvent函数、PostEvent函数或者是对象名称.Event 事件名称格式调用事 件)Close事件,都只是执行该事件中的脚本,并不真正关闭窗口。也就是说,应该区别事件和事件处理脚本,这两者虽然有很多的联系但 并不相同。 PB中的所有事件和事件处理脚本都是有区别的。
row:要设置数据的行,为long类型。
column:要设置数据的列,可以是string类型的列名称,也可以是integer类型的列号。
插入空行:insertrow(0) dw_name.insertrow(0) 通常配合插入行使用的是滚动行 dw_name.scrolltorow(dw_name.insertrow(0)) \\滚动到插入行 比如:int row
row = dw_1.insertrow(0)
//显示
dw_1.scrolltorow(row)
该函数有返回值,1,2,3对选择的按键。
基本写法事例: MessageBox('此处为标题,'此处为内容') 完整写法事例: if MessageBox('提示信息','是否删除?',&Question! ,OKCancel! , 1 ) = 1 then//选择确定 MessageBox('提示信息', '你选择了删除') else//选择取消
//使用
pb的基本函数

1、Open 两种格式:一个是带参数的还有一个是不带参数的不带参数的是不确定具体的数据类型的2、Opensheet() opensheet(指定窗口名,{指定要打开的窗口的类型},指定要放置的工作表的框架窗口名,所打开的窗口是在第几个菜单下生产默认值为倒数第二个,打开方式arrangeopen。
)打开方式分为三种:cascade、layered、original。
Cascade:向右下方偏移。
默认值如果缺少的话Layered:最大化Original:与cascade相同。
只是打开的时候与原来的一样大3、Close4、Setfocus() 将焦点设置到指定控件上Objectname.setfocus() 如果objectname是列表框的话则控件将指向列表框的第一列表项上。
5、SelectText()返回该控件所选的文本。
返回值为long Singlelineeditname.selecttext(start,length)6、GetColumn()和GetColumnname()两个都没有返回值:第一个是返回当前列的列好,第二个则是返回当前列名7、Update()8、DeleteRow()Dwcontrol.deleteRow(row) row表示要删除的行数,当该值为0时则表示删除该行1、insert row 在数据窗口控件指定行前面插入一行dwcontrol.insertrow(row) scrolltorow():使新插入的行成为当前行。
2、ScrollToRow() 使用方法:rtename .scrolltorow(row)Rtename超文本编辑框的名称。
如果row的值为0的话则就回滚到第一行,如果row的值大于超文本的行数则回滚到最后一行3、selectedColumn()返回插入点后第一个字符的位置rtename.selectedcolumn()4、setcloumn5、print() 以当前字体在打开的打印作业中打印一行或多行文本print(printjobnumber,{tabl},string{,tab2})tab1为文本开始打印的位置,以千分之一英寸为单位。
《PB程序设计》第9章用户自定义事件

返回本节 录
9.4 触发用户事件
Static和Dynamic选项只能选择一个,缺省时为 Static。Static表示编译时指定事件必须存在,系统 要进行返回值类型检查;Dynamic表示编译时指定事 件可以不存在,系统把返回值类型检查推迟到应用 程序运行时进行。 Event是关键字,表示后面的Event Name是个事 件名而不是函数。Para list是事件的参数,有多个 参数时参数之间用逗号分隔。 如果用户事件定义了参数,只能使用上述格式触 发事件,而不能使用函数TriggerEvent()或 PostEvent()。
返回章目录
9.1用户自定义事件在应用中的作用
在下列情况下经常使用用户事件: (1)解决对象与窗口之间的通信问题。用 户事件可以通过参数进行信息传递。 (2)响应特殊操作。这些操作没有相应的 PowerBuilder预定义事件 (3)支持用户通过多种多样的方式完成同 一个功能
返回本节 录
返回本节 录
9.5 用户自定义事件应用实例
为了测试,我们在表中添加几条记录如图9ˉ12 所示
返回本节 录
9.5 用户自定义事件应用实例
运行程序:单击“显示记录”按钮,结果如图 9ˉ13所示
9.1用户自定义事件在应用中的作用
用户事件在许多地方与用户定义函数十分相似,用 户事件运用的灵活程度很大程度上反映出应用程序 的灵活性和适用性。PowerBuilder开始将事件和函 数同化,统称为方法。事件也可以带输入参数,并 有返回值。有时形式上难以区分事件和函数。不过, 函数一般是由用户调用,在编程时就已决定,而事 件除了可以由用户触发外,还可以由系统触发。大 多数的事件,都是由系统触发的。因此,事件比函 数更为灵活,应用范围更广
第11章 类

在面向对象程序设计中,算法与数据结构被捆绑成一个类。现实世界本 身就是一个对象的世界,任何对象都具有一定的属性和操作,也就总能用数 据结构与算法两者合一地描述,此时,程序定律再次改写: 对象=(算法+数据结构) 程序=(对象+对象+......)
【11.3 类的声明与定义成员函数】
类也是一种用户自定义数据类型。它不仅包含不同数据类型的变量,还可 以包含对这些变量数据进行操作的函数。 类是一组变量及其相关函数的组合。类中的变量称为类的成员变量或数据 成员;函数称为类的函数成员或方法。
类的定义举例
struct Savings { public: //可以省略 unsigned deposit(unsigned amount) { balance+=amount; return balance; } unsigned accountNumber; float balance; }; class Savings { public: unsigned deposit(unsigned amount) { balance+=amount; return balance; } private: unsigned accountNumber; float balance; };
注:1、关键字class表示类,Savings是类名,一般首字母大写,以示与对 象名的区别,关键字public和private表示存储控制。 2、C++中类与结构的唯一区别是:类定义中默认情况下的成员是private 的 ,而结构定义中默认情况下是public的;在C中,结构中不允许有成员函 数,而在C++中有成员函数。
在声明类时,一般来说应该把类的所有数据成员都声明为私有的,同时声明 公有成员函数来访问这些数据成员。 在类的声明中,关键字public、protected和private的出现顺序是任意的, 可以不出现或多次出现。类中的每个成员只能有一种特定的访问属性。
PB核心函数详解

Title:窗口标题,String 类型的数据。如果该参数取值为 Null,则不显示
提示窗口。
Text:窗口中要显示的内容,String 类型的数据。如果该参数取值为 Null,
则不显示提示窗口。这两个函数是必需的,使用更多的参数可以提供更多
的控制。
Icon:窗口中显示的图标的样式,为枚举类型的数据。可用的类型和对应
1. MessageBox 函数作用:显示一个信息提示窗口。该窗口中的标题、图标、内容和按钮都可以通过参数指
定。提示窗口的样式如图 1 所示。清楚了提示窗口的构成,非常有利于记忆该 函数的语法。
图 1 提示窗口样式
函数语法:MessageBox ( title, text {, icon {, button {, default } } } )
电话:010-81692157,13910229071 邮箱:gbl88@ QQ:123367042 Skype:PowerBuilders 本人所在公司:北京达通兴电脑科技开发有限公司
另外,我公司提供 PowerBuilder 系列培训,并且承接各种软件项目,欢迎合作。详细内 容请浏览网站:。
代码实例: 例子 1,触发缺省事件:
cb_1.TriggerEvent(Clicked!) 等价于:
cb_1.TriggerEvent(“Clicked”) 例子 2,触发用户自定义事件:
w_main.TriggerEvent(“ue_open”) 例子 3,传递信息和接收信息:
w_main.TriggerEvent(“ue_open”,0,’test’) 在用户自定义事件 ue_open 中接收数据:
string ls_msg
ls_msg = String(Message.LongParm,’address’) 例子 4,传递 long 数据:
delphi11动态链接库

delphi11动态链接库第11章动态链接库本章讨论了Win32动态链接库,也就是DLL。
动态链接库(Dynamic Link Library,简称DLL)是⼀些编译过的可执⾏代码模块,后缀名为. DLL,可以在应⽤程序中或其它DLL中被调⽤。
在Windows环境中,DLL可以实现多个应⽤程序共享代码和资源。
DLL的⽤途⾮常⼴泛,是Windows程序设计中的⼀个⾮常重要的组成部分。
本章将从DLL的⼀些基础知识讲起,说明如何在Delphi开发环境中创建和使⽤DLL。
11.1 概述11.1.1 DLL的概念在开始介绍DLL的概念之前,先介绍⼀些有关DLL的⼀些术语如下:应⽤程序,⼀个扩展名为.exe的Windows程序。
可执⾏⽂件,⼀个包含可执⾏代码的⽂件,它包括.dll⽂件和.exe⽂件。
实例,当提到应⽤程序和DLL时,在内存中出现的可执⾏⽂件就是实例。
Win32系统通过实例句柄的⽅式来引⽤实例。
例如,如果⼀个应⽤程序运⾏两次,就会有应⽤程序的两个实例,同时就有两个实例句柄。
当⼀个DLL被调⼊时,实例及其相应的实例句柄同时产⽣。
应该注意的是,这⾥所提的实例与类的实例不能混淆。
模块,在32位Windows系统中,模块和实例可以说是同义的。
⽽在16位的Windows 系统中,是建⽴⼀个模块数据库来管理模块的,⼀个模块对应⼀个模块句柄。
在Win32中,应⽤程序的每⼀个实例都拥有⾃⼰的地址空间;所以,没有必要为模块单独指定标识符。
不过,微软仍然保留了它⾃⼰的术语。
注意⼀点,模块和实例是同⼀个概念。
任务,Windows是⼀个多任务(或任务切换)环境,所以它必须能够为运⾏的多个实例合理分配系统资源和时间。
于是,Windows建⽴⼀个任务数据库,这个数据库包括任务的实例句柄和其它必要信息,以此实现任务切换功能。
任务是Windows⽤来管理和分配资源与时间段的重要元素。
动态链接库是程序模块,它包括代码、数据或资源,能够被其它的Windows应⽤程序共享。
PB函数大全.doc

一、数组函数1、LowerBound()功能:得到指定数组第n维的下界。
语法:LowerBound ( array {, n } )参数:array:数组名。
n:数值类型,可选项,指定要得到数组哪一维的下界。
缺省值为1。
返回值:Long。
函数执行成功时返回array数组第n维的下界。
如果n的值超过了指定数组的最大维数,那么该函数返回-1。
如果任何参数的值为NULL,LowerBound()函数返回NULL。
示例:integer a[5], b[2,5]LowerBound(a) // Returns 1LowerBound(a, 1) // Returns 1LowerBound(a, 2) // Returns -1, a has only 1 dimLowerBound(b, 2) // Returns 1integer c[ ]LowerBound(c) // Returns 1c[50] = 900LowerBound(c) // Returns 1integer d[-10 to 50]LowerBound(d) // Returns - 102、UpperBound()功能:得到指定数组第n维的上界。
语法:UpperBound( array {, n } )参数:array:数组名。
n:数值类型,可选项,指定要得到数组哪一维的上界。
缺省值为1。
返回值:Long。
函数执行成功时返回array数组第n维的上界。
如果n的值超过了指定数组的最大维数,那么该函数返回-1。
如果任何参数的值为NULL,UpperBound()函数返回NULL。
示例:integer a[5], b[2,5]LowerBound(a) // Returns 1LowerBound(a, 1) // Returns 1LowerBound(a, 2) // Returns -1, a has only 1 dimLowerBound(b, 2) // Returns 1integer c[ ]LowerBound(c) // Returns 1c[50] = 900LowerBound(c) // Returns 1integer d[-10 to 50]LowerBound(d) // Returns - 10二、Blob(大二进制对象)函数Blob函数得到Blob数据类型的信息、完成数据类型转换以及操作Blob类型数据。
PB11简介

2.5 窗口、用户对象之间的消息传递
Pb8.Pdf用户手册中1.2.7的详细介绍 PostEvent 参看Pb8.pdf用户手册中3.1.9小节详 解 邮寄执行 随机空闲执行 TriggerEvent 参看PB8.Pdf用户手册中3.1.16小节 详解 立即执行 按消息队列顺序执行 使用Send消息传递(窗口之间的通讯)参看 Pb8.Pdf中2.14.12小节 窗体打开可以通过OpenwithParm传递参数 响应窗体可以通过ClosewithReturn 截取返回值 全局消息对象Message 的三个常用属性。 DoubleParm、StringParm 、PowerObjectParm
pro_treeviewclass 非可视化的用户对象 uo_treeview 可视化的用户对象
2.4.4 如何使用用户对象
可视化用户对象
所谓可视用户对象就是可重用的具有某种行为的一个或一 组控件。换句话说,也就是为了重复调用,将逻辑封装成 一个整体。
类用户对象
它也具有非常广泛的应用领域。比方说,在制作一个商用数据 库软件的时候,经常会使用某些商业规则对数据进行重复地计 算和处理。如果我们定义一个用户对象,由它来管理这套数据 处理的办法,那就会使程序的设计工作方便很多。类用户对象 也叫非可视化用户对象,与可视化用户对象用法基本类似。在 Pb11中来看一下。
2.9 应用程序开发及发布
创建一个应用调试 利用开发工具编译成Dll或PBD 发布EXE、Dll(PBD) + Pb的支持动态库,类 似于Java的虚拟机
3.1 Dw数窗的详细介绍
不同风格数窗使用介绍(12种风格) 如何设计数窗 数窗检索数据,正常检索、带参数检索 数窗更新数据 数窗的数据源介绍(无数据源、SQL语句组 合、视图、存储过程) 数窗四个缓冲区的介绍 Primary,Delete,Filter, Original(隐式的)
PB函数大全

PB函数大全•Abs()功能计算绝对值。
语法Abs ( n )参数n:要得到绝对值的数值型变量或表达式返回值返回值的数据类型与n的数据类型相同,函数执行成功时返回n的绝对值。
如果参数n的值为NULL,Abs()函数返回NULL。
•Ceiling()功能返回大于n的最小整数。
语法Ceiling ( n )参数n:数值型变量或表达式返回值返回值的数据类型与n的数据类型相同。
函数执行成功时返回大于n的最小整数。
如果参数n的值为NULL,Ceiling()函数返回NULL。
•Cos()功能计算余弦,其中参数以弧度为单位。
语法Cos ( n )参数n:数值型变量或表达式返回值Double。
函数执行成功时返回n的余弦。
如果参数n 的值为NULL,Cos()函数返回NULL。
•Exp()功能计算e的n次方。
语法Exp ( n )参数n:指定幂值返回值Double。
函数执行成功时返回e(约等于2.71828)的n次方。
如果参数n的值为NULL,Exp()函数返回NULL。
•Fact()功能计算n的阶乘。
语法Fact ( n )参数n:数值型变量或表达式返回值Double。
函数执行成功时返回n的阶乘。
如果参数n 的值为NULL,Fact()函数返回NULL。
•Int()功能得到小于等于n的最大整数。
语法Int ( n )参数n:数值型变量或表达式返回值Integer。
函数执行成功时返回小于等于n的最大整数。
如果n的值太小或太大,超过了整数的表示范围,则函数返回0。
如果参数n的值为NULL,Int()函数返回NULL。
•Log()功能计算n的自然对数。
语法Log ( n )参数n:数值型变量或表达式,其值必须大于0返回值Double。
函数执行成功时返回n的自然对数。
如果n小于等于0,将导致运行错误。
如果参数n的值为NULL,Log()函数返回NULL。
•LogTen()功能计算n的常用对数(以10为底)。
语法LogTen ( n )参数n:数值型变量或表达式,其值必须大于0返回值Double。
c语言第11章-结构体与共用体

}
§11.6 构造体和指针
ma指in向() 构造体变量旳指针
{ s❖tr定uc义t st形ud式en:t struct 构造体名 *构造体指针名; { 例lonsgtruicntt sntuudmen;t *p; char name[20]; ❖使str用ucch构tars造tsued体xe;n指t 针变存量储引构用造组体p员变形量式在内存旳起始地址
struct student stu1={112,“Wang Lin”,‘M’,19, “200 Beijing Roa
形式二:
struct 构造体名
{ 类型标识符 组员名; 类型标识符 组员名;
……………. }构造体变量={初始数据};
例 struct student { int num; char name[20]; char sex; int age; char addr[30]; }stu1={112,“Wang Lin”,‘M’,19, “200 Beijing Road”
❖用构造体变量旳组员作参数----值传递 ❖用指向构造体变量或数组旳指针作参数----地址传递 ❖用构造体变量作参数----多值传递,效率低
例 用构造体变量作函数参数
(main)
struct data { int a, b, c; };
accacbbb::::::::2332333370070
main()
}
指向构造体数组旳指针
例 指向构造体数组旳指针
struct student { int num;
char name[20]; char sex; int age;
p num
name
sex
p+1
age
PB11简介PPT课件

合、视图、存储过程) 数窗四个缓冲区的介绍 Primary,Delete,Filter, Original(隐式的)
2021/7/22
19
3.2 Dw需要注意的要点
保存成功时,务必提交事务、避免死锁 保存失败时,务必回滚事务、避免死锁 Commit Using Sqlca 提交事务默认操作 Rollback Using Sqlca 回滚事务默认操作 事务对象介绍 SQLCA,SQLSA,SQLDA 数窗的常用函数介绍 数窗中状态的介绍DWItemStatus NotModified! DataModified!New!NewModified!
2021/7/22
17
2.9 应用程序开发及发布
创建一个应用调试 利用开发工具编译成Dll或PBD 发布EXE、Dll(PBD) + Pb的支持动态库,类
似于Java的虚拟机
2021/7/22
18
3.1 Dw数窗的详细介绍
不同风格数窗使用介绍(12种风格) 如何设计数窗 数窗检索数据,正常检索、带参数检索 数窗更新数据 数窗的数据源介绍(无数据源、SQL语句组
2021/7/22
6
2.2PB11的特点
C语言章节教案

章节教案章节名称第1章 C语言概述授课类型理论课(√)、实践课(√)、实习()教学时数1、了解C语言的发展历程教学目的要求2、了解C语言的特点3、掌握C程序的组成结构4、掌握C程序的上机操作环境1.1 C语言出现的历史背景1.2 C语言的特点主要知识点1.3简单的C程序介绍1.4 C程序的上机步骤3教学重点、重点:C语言的组成结构及程序书写规范。
难点难点:C语言实验环境的操作。
教学内容的衡接及学时分配问题:不能及时熟练的掌握TC集成环境的操作,对程序出错时的英文提示信息看不懂。
教学后记教法:对集成环境操作先只介绍精简操作,而后再不断的扩展操作。
而对英文提示信息方面应引导学生先要有耐心的看这些信息,而后养成积累这些提示信息的习惯。
理论内容2学时,实验2学时。
章节名称第2章程序的灵魂——算法授课类型理论课(√)、实践课(√)、实习()教学时数1、了解程序的组成要素教学目的要求2、理解算法的概念和特性3、掌握用算法描述工具来描述算法4、了解结构化程序设计方法2.1算法的概念2.2简单算法举例主要知识点2.3算法的特性2.4怎样表示一个算法2.5结构化程序设计方法4教学重点、重点:C语言程序的组成要素和使用各种算法描述工具描述算法。
难点难点:运用算法和结构化程序设计方法解决实际问题。
教学内容的衡接及学时分配引导学生选择一种适合自己习惯的算法描述工具,而后利用该工教学后记具来分析和解决各类问题,并逐步的培养自己分析问题、解决问题的能力。
基本理论概念2学时,各种算法描述工具2学时,实验2学时。
章节名称第3章数据类型、运算符与表达式授课类型理论课(√)、实践课(√)、实习()教学时数1、掌握基本数据类型及其定义方法教学目的要求2、掌握运算符的种类、运算优先级、结合性。
3、掌握不同类型数据间的转换与运算。
4、掌握表达式类型和求值规则。
3.1 C的数据类型3.2常量与变量3.3整型数据3.4实型数据主要知识点3.5字符型数据3.6变量赋初值3.7各类数值型数据间的混合运算3.8算术运算符和算术表达式3.9赋值运算符和赋值表达式3.10逗号运算符和逗号表达式教学重点、难点重点:C语言的数据类型、常量概念与特性、变量的定义与特性、运算符的优先级与结合性,各类数值型数据间的混合运算。
PB事件和自定义事件

create by amu on 2012-08-16----------------------------------------------------------------------------------------1.window中的事件事件名触发的时机01.Activate 在窗口激活之前触发02.Clicked 当用户用鼠标单击窗口的空白区域(没有控件的区域)时触发03.Close 当关闭窗口时触发04.CloseQuery 当清除或关闭窗口时触发。
然后检查Message.ReturnValue的值,若为1,则窗口不能关闭05.Deactivate 当窗口变为非活动状态时触发06.DoubleClicked 当用户双击窗口的空白区域时触发07.DragDrop 当一个可拖动的控件被拖动到窗口上时触发08.DragEnter 当一个可拖动的控件进入窗口时触发09.DragLeave 当一个可拖动的控件离开窗口时触发10.DragWithin 当一个可拖动的控件在窗口内部拖动时触发11.Hide 在窗口被隐藏时触发12.HotLinkAlarm 在DDE中服务器应用已经发送了新的数据,客户DDE应用已经接收到这些数据时触发13.Key 当用户击了一个键且插入点不在RichTextEdit编辑控件或数据窗口控件时触发14.MouseDown 当用户在窗口的空白区域按下鼠标左键时触发15.MouseMove 当鼠标在窗口内移动时触发16.MouseUp 当用户在窗口的空白区域释放鼠标左键时触发17.Open 当程序调用以此窗口为参数的Open函数时,此事件在该窗口打开之后,显示之前触发18.Help .........19.Other 当一个非PowerBuilder事件的Windows信息发生时触发20.RButtonDown 在窗口的空白区域单击鼠标右键时触发21.RemoteExec 当一个DDE客户应用发送了一个命令时触发22.RemoteHotLinkStart 当一个DDE客户应用开始一个热连接时触发23.RemoteHotLinkStop 当一个DDE客户应用结束一个热连接时触发24.RemoteRequest 当一个DDE客户应用请求数据时触发25.RemoteSend 当一个DDE客户应用已经发送了数据时触发26.Resize 当用户或程序打开或重设窗口大小时触发27.Show 当程序运行此窗口的show函数时,此事件在窗口显示之前触发28.SystemKey 当插入点不在某个行编辑中且用户按了ALT或ALT加其它键时触发29.Timer 在调用Timer函数后,经过了Timer函数指定的时间后触发30.ToolBarMoved 当MDI窗口的工具条移动时触发以上是我新建一个window是window的事件原来的顺序,下面是我自己常用的排序:01.window打开时发生的事件事件名触发的时机Activate 在窗口激活之前触发Resize 当用户或程序打开或重设窗口大小时触发Open 当程序调用以此窗口为参数的Open函数时,此事件在该窗口打开之后,显示之前触发Show 当程序运行此窗口的show函数时,此事件在窗口显示之前触发02.window关闭时发生的事件Deactivate 当窗口变为非活动状态时触发CloseQuery 当清除或关闭窗口时触发。
PB 11第11章 自定义函数和结构

图11-2定义全局函数的属性 定义全局函数的属性
11.1.1创建自定义全局函数 创建自定义全局函数
参数传递方式有三种: 参数传递方式有三种: Value:值传递---将实际参数的值传递给函数参数 : Reference:地址传递---把实际参数的地址传递给函数,此时,如果 函数修改了形式参数的值,那么实际参数的值也就被修改了。 Readonly:地址传递---把实际参数的地址传递给函数,不过不允许 : 修改参数的值。 要 增 加 或 删 除 参 数 , 可 在 图 11-2 中 右 击 , 出 现 弹 出 式 菜 单 。 Add Parameter增加参数,Insert Parameter插入参数,Delete Parameter 删除参数
[access] FUNCTION return_type function_name([REF][type1 arg1,。。。,typen ,。。。, argn]) LIBRARY lib_name
用Subroutine的格式:
[access] SUBROUTINE sub_name([REF][type1 arg1 , 。 。 。 , typen argn]) LIBRARY lib_name
11.1.1创建自定义全局函数 创建自定义全局函数
Object页的Function,双击Function项或点击OK按钮,进入全局函 数的定义。 在图中,Function Name项中输入函数名、Return Type下拉框中选择 函数返回值的类型、Argument Name中输入函数参数名、Argument Type下拉框中选择函数参数类型、PassBy下拉框中选择参数传递方 式。
PB系统函数

事件已经编写了事件处理程序,那么执行这些事件处理程序,从屏幕
上删除要关闭的窗口、关闭窗口、之后执行调用Close()函数语句后面
的语句。当窗口被关闭后,应用程序就不能再访问已经关闭窗口的属 性、实例变量、对象函数、以及窗口上的控件了。如果关闭窗口后应 用程序依然访问上述特性,那么将引发运行错误。当然,应用程序也 可以阻止窗口被关闭,方法很简单,只要在欲阻止关闭窗口的
Pointer。返回更换前的鼠标指针,以便于应用程序恢复原有指针。如
果参数type的值为NULL,SetPointer()函数返回NULL。用法type参数
的可能取值为:Arrow!、Cross!、Beam!、HourGlass!、SizeNS!、
SizeNESW!、SizeWE!、SizeNWSE!、UpArrow!。
标的当前位置开始打印string:string类型,指定要打印的字符串。如果字 符串中包括回车换行字符(~r~n),那么该字符串将被分成多行输出,
但是(dànshì),除第一行之外,其它行忽略tab1参数指定的起始打印位置 tab2:Integer类型,可选项,指定字符串打印结束后打印光标移动到 的位置,从打印区的左边界开始计算,以千分之一英寸为单位。如 果打印光标已经超过了指定位置,那么Print()函数忽略该参数,打印 光标位于已打印字符串的尾部。如果省略了该参数,Print()函数把打
第五页,共四十一页。
Open()
功能:打开窗口。 语法一:打开编程时已知数据类型的窗口对象Open ( windowvar {,
parent } )
参数:windowvar:要打开窗口的窗口名,可以使用窗口画笔定义的 窗口对象名,也可以使用该窗口对象的某个变量(biànliàng)。Open()函数 把打开窗口的引用放置到windowvar变量中parent:可选项,指定要
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.选择目标
2.选择pbl源文件
3. 在 ObjectType 中 选 择 Functions或All Objects
图11-5 打开自定义全局函数
11.1.3删除自定义全局函数
打开Library库管理器,打开要删除的自定义全局函数所在的PBL,选择 要删除的自定义全局函数,右击,出现弹出式菜单,选择Delete将删除 所选的自定义全局函数。
点击该图标,将显示 /隐 含函数属性定义
图11-8定义对象函数的属性
11.2.1 创建自定义对象函数
在定义函数的下面窗口内编辑代码。若函数有返回值,立即输入代码,即必须 写一条return语句,否则产生错误。 对象函数的返回值的类型、参数名、个数及类型能随时更改,系统会给出一个 提示信息,以确认是否更改。 在其它对象的程序中调用时,应在函数名前加上函数所在的对象名如 w_pipe.wf_error(num),当然w_pipe必须已被打开。
1.选择Functions 2.选择New Function
图11-7 定义对象函数
11.2.1 创建自定义对象函数
Access缺省值为“public” 。 访问属性Access有三个选择: l public:在整个程序中都可访问。 l private:只能在当前对象的程序中使用,不能在该对象的后代的程序中使用。 l protected:只能在当前对象的程序以及该对象的后代的程序中使用。 对象函数的命名规则一般与对象有关,如应用对象Application Object的函数一般 以“af_”作前缀,窗口对象Window的函数一般以“wf_”作前缀,菜单对象menu 的函数一般以“mf_”作前缀,用户自定义对象的函数一般以“uf_”作前缀。这些 规则清楚地表明了函数所在对象的类型,便于程序的维护。
图11-4 编辑函数代码
点击该图标,将显示/ 隐含函数属性定义
11.1.2修改自定义全局函数
在开发环境的主窗口中, 选 择 工 具 栏 的 Open 图 标或选择主菜单 File 的 子 菜 单 Open , 将 出 现 标题为“ Open” 的窗口, 在 ObjectType 下拉框中 选 择 Functions , 在 Object 中选择要打开的 4.选择要打 函数, 开的函数 双击或点击OK按钮,进 入全局函数的定义,如 前图 11-4所示。可以更 改函数返回值的类型、 参数名、个数及类型和 函数代码。
1.选择Functions 2. 选 择 要 修 改 的 函数 点击该图标, 将显 示 / 隐含函数属性定 义 ,可以更改返回 值类型及参数等
3. 输入或修 改代码
图11-10 修改对象函数11.2.3 Fra bibliotek除自定义对象函数
要删除自定义对象函数,首先打开自定义函数所在的对象,然后 选择主菜单View的子菜单Function List。
图11-3 增加、插入、删除参数
11.1.1创建自定义全局函数
函数名及参数定义好 后,在定义函数的下 面窗口内编辑代码。 或选择主窗口 View 菜 单 的 Script 子 菜 单 , 打开函数代码编辑窗 口。函数返回值的类 型、参数名、个数及 类型可以随时更改。 若函数有返回值,必 须立即输入代码,即 必 须 写 一 条 return 语 句,否则产生错误。 定义好的全局函数和 标准函数一样使用。
Object页的Function,双击Function项或点击OK按钮,进入全局函 数的定义。 在图中,Function Name项中输入函数名、Return Type下拉框中选择 函数返回值的类型、Argument Name中输入函数参数名、Argument Type下拉框中选择函数参数类型、PassBy下拉框中选择参数传递方 式。
第11章 自定义函数和结构
11.1 创建自定义全局函数 11.2 创建自定义对象函数 11.3 外部函数 11.4 结构
11.1.1创建自定义全局函数
在开发环境的主窗口中,选择工具栏的New图标或选择主菜单 File的子菜单New,将出现标题为“New”的窗口。
图11-1 定义全局函数
11.1.1创建自定义全局函数
点击该图标,将显 示/隐含函数属性定 义
图11-9编辑函数代码
11.2.2 修改自定义对象函数
打 开 自 定 义 函 数 所 在 的 对 象 , 打 开 Script 代 码 编 辑 窗 口 , 选 择 Functions,再选择要修改的函数。对象函数的返回值的类型、参数名、 个数及类型都能随时更改。系统会给出一个提示信息,以确认是否更 改。可以输入或更改函数代码。
点击该图标, 将显示/隐含 函数属性定义
图11-2定义全局函数的属性
11.1.1创建自定义全局函数
参数传递方式有三种: Value:值传递---将实际参数的值传递给函数参数 Reference:地址传递---把实际参数的地址传递给函数,此时,如果 函数修改了形式参数的值,那么实际参数的值也就被修改了。 Readonly:地址传递 --- 把实际参数的地址传递给函数,不过不允许 修改参数的值。 要 增 加 或 删 除 参 数 , 可 在 图 11-2 中 右 击 , 出 现 弹 出 式 菜 单 。 Add Parameter 增加参数, Insert Parameter 插入参数, Delete Parameter 删除参数
图11-6 删除自定义全局函数
11.2.1 创建自定义对象函数
可以为Application Object对象、窗口对象、用户对象创建自定义 函数,这种函数称为对象函数。 先打开要定义函数的对象,再打开 Script 代码编辑窗口,先选择 Functions,再选择New Function,将出现函数定义窗口。
图11-11 列出全部函数
11.2.3 删除自定义对象函数
选择 Function List 后将列出该对 象的全部函数,如图 11-12 ,右 击要删除的函数,出现一个弹出 式菜单,图11-13,选择Delete将 删除所选的对象函数。 注意:一旦选择 Delete 将立刻删 除所选的对象函数,系统对删除 操作不作提醒。 在图11-13中,选择弹出式菜单 中的Script,或双击所选的函数, 将打开Script代码编辑窗口,以 便查看与修改所选的对象函数, 包括函数返回值的类型、参数名、 参数个数、参数类型及函数代码 等。