PB 11第11章 自定义函数和结构
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
点击该图标,将显示/隐 点击该图标,将显示 隐 含函数属性定义
图11-8定义对象函数的属性 定义对象函数的属性
11.2.1 创建自定义对象函数
在定义函数的下面窗口内编辑代码。若函数有返回值,立即输入代码,即必须 写一条return语句,否则产生错误。 对象函数的返回值的类型、参数名、个数及类型能随时更改,系统会给出一个 提示信息,以确认是否更改。 在其它对象的程序中调用时,应在函数名前加上函数所在的对象名如 w_pipe.wf_error(num),当然w_pipe必须已被打开。
2. 选择 Global External Functions 或 Local External Functions 1.选择 选择Declare 选择
3.输入函数定义 输入函数定义
图11-14定义外部函数 定义外部函数
11.3.1外部函数的定义 外部函数的定义
定义外部函数时使用两种关键词:有返回值用Function,无返回值用Subroutine。 用Function的格式:
点击该图标, 点击该图标, 将显示/隐含 将显示 隐含 函数属性定义
图11-2定义全局函数的属性 定义全局函数的属性
11.1.1创建自定义全局函数 创建自定义全局函数
参数传递方式有三种: 参数传递方式有三种: Value:值传递---将实际参数的值传递给函数参数 : Reference:地址传递---把实际参数的地址传递给函数,此时,如果 函数修改了形式参数的值,那么实际参数的值也就被修改了。 Readonly:地址传递---把实际参数的地址传递给函数,不过不允许 : 修改参数的值。 要 增 加 或 删 除 参 数 , 可 在 图 11-2 中 右 击 , 出 现 弹 出 式 菜 单 。 Add Parameter增加参数,Insert Parameter插入参数,Delete Parameter 删除参数
图11-15 Windows口令管理窗 口令管理窗 口
图11-16 调用外部函数示例
11.3.3外部函数使用实例 外部函数使用实例
(2) 编写代码 在应用对象password的open事件中编写代码: open(w_pw) 在窗口w_pw中定义外部函数。先打开w_pw的Script代码编辑窗 口,再选择Declare,然后选择Local External Functions。
其中: access:访问级别。是可选项,只用于局部外部函数Local External Functions, : return_type:返回值类型。必须是一个合法的PowerBuilder数据类型。 : function_name和sub_name:外部程序的函数名或子程序名储存在DLL库中。 和 : REF:参数通过地址传递。 : typei:参数的数据类型。 : argi:参数名 : lib_name:包含外部函数或子程序的DLL/EXE文件名。 :
第11章 自定义函数和结构 章
11.1 11.2 11.3 11.4 创建自定义全局函数 创建自定义对象函数 外部函数 结构
Байду номын сангаас
11.1.1创建自定义全局函数 创建自定义全局函数
在开发环境的主窗口中,选择工具栏的New图标或选择主菜单 File的子菜单New,将出现标题为“New”的窗口。
图11-1 定义全局函数
图11-4 编辑函数代码
点击该图标,将显示 点击该图标,将显示/ 隐含函数属性定义
11.1.2修改自定义全局函数 修改自定义全局函数
在开发环境的主窗口中, 选 择 工 具 栏 的 Open 图 标或选择主菜单File的 子 菜 单 Open , 将 出 现 标题为“Open”的窗口, 在ObjectType下拉框中 选 择 Functions , 在 Object中选择要打开的 Object 4.选择要打 选择要打 函数, 开的函数 双击或点击OK按钮,进 入全局函数的定义,如 前图11-4所示。可以更 改函数返回值的类型、 参数名、个数及类型和 函数代码。
图11-17
定义外部函数
输入下面的代码: // 定义外部函数,即声明外部函数的语法格式与来源 Function Long ShellExecuteA(Long hwindow, String lpOperation, String lpFile, String lpParameters, String lpDirectory, Long nShowCmd) Library 'shell32.dll' Function Long GetDesktopWindow() Library 'user32.dll' 在“设置口令”的命令按钮cb_setpw的clicked事件中输入以下代码: //在PowerBuilder中调用Windows控制面板中的口令管理程序 String cpl_name String ls_null SetNull(ls_null) cpl_name = "Password.cpl" ShellExecuteA(GetDesktopWindow(), ls_null, 'rundll32.exe', "shell32.dll,Control_RunDLL " + cpl_name + ",", ls_null, 0) //调用外部函数
图11-6 删除自定义全局函数
11.2.1 创建自定义对象函数
可以为Application Object对象、窗口对象、用户对象创建自定义 函数,这种函数称为对象函数。 先打开要定义函数的对象,再打开Script代码编辑窗口,先选择 Functions,再选择New Function,将出现函数定义窗口。
1.选择 选择Functions 选择 2. 选 择 要 修 改 的 函数 点 击 该图 标 , 将显 示 /隐含函数属性定 隐含函数属性定 义 , 可以 更改 返回 更改返回 值类型及参数等
3.输入或修 输入或修 改代码
图11-10 修改对象函数
11.2.3 删除自定义对象函数
要删除自定义对象函数,首先打开自定义函数所在的对象,然后 选择主菜单View的子菜单Function List。
1.选择 选择Functions 选择 2.选择New Function .选择
图11-7 定义对象函数
11.2.1 创建自定义对象函数
Access缺省值为“public” 。 访问属性Access有三个选择: public:在整个程序中都可访问。 : private:只能在当前对象的程序中使用,不能在该对象的后代的程序中使用。 : protected:只能在当前对象的程序以及该对象的后代的程序中使用。 : 对象函数的命名规则一般与对象有关,如应用对象Application Object的函数一般 以“af_”作前缀,窗口对象Window的函数一般以“wf_”作前缀,菜单对象menu 的函数一般以“mf_”作前缀,用户自定义对象的函数一般以“uf_”作前缀。这些 规则清楚地表明了函数所在对象的类型,便于程序的维护。
11.3.2外部函数的调用 外部函数的调用
全局外部函数的使用类似于全局函数,局部外部函数的使用类似 于对象函数。在其它对象的代码中使用局部外部函数时需加上函 数定义所在的对象名。 但在实际应用中会发现,调用外部函数经常不成功,原因可能是 以下几种情况: (1) 32位环境调用16位DLL (2) 数 据 类 型 不 一 致 。 外 部 函 数 一 般 是 用 C/C++ 写 的 , 有 许 多 PowerBuilder所没有的数据类型。 (3) 指针。PowerBuilder没有指针数据类型。 (4) 函数名大小写错误。在PowerBuilder中不区分大小,但使用外部 函数时却要区分大小写。 (5) 外部函数所在的库文件DLL或EXE文件找不到。可能不在当前路 径下。
图11-12 列出所有对象函数
图11-13删除对象函数 删除对象函数
11.3.1外部函数的定义 外部函数的定义
使用外部函数之前,必须先对其进行说明。根据作用范围分为两种类型:全局外部 函数Global External Functions和局部外部函数Local External Functions。全局外部 函数可在应用程序的任何地方使用;局部外部函数只能在所定义的对象中使用。 打开要定义外部函数的对象,再打开Script代码编辑窗口,选择Declare,再选择 Global External Functions或Local External Functions,最后输入函数定义。
11.3.3外部函数使用实例 外部函数使用实例
在Windows的控制面板中的有一个口令管 理程序,用来设置和修改Windows和其它 系统口令,如图11-15。如何调用这个口 令管理程序呢? 步骤如下: 步骤如下: (1) 创建一个setpassword.pbl,其应用对 象名为password,再创建一个窗口w_pw, 窗口上放一个“设置口令”的命令按钮 cb_setpw,如图11-16所示。
增加、插入、 图11-3 增加、插入、删除参数
11.1.1创建自定义全局函数 创建自定义全局函数
函数名及参数定义好 后,在定义函数的下 面窗口内编辑代码。 或选择主窗口View菜 单 的 Script 子 菜 单 , 打开函数代码编辑窗 口。函数返回值的类 型、参数名、个数及 类型可以随时更改。 若函数有返回值,必 须立即输入代码,即 必 须 写 一 条 return 语 句,否则产生错误。 定义好的全局函数和 标准函数一样使用。
点击该图标, 点击该图标 , 将显 示/隐含函数属性定 隐含函数属性定 义
图11-9编辑函数代码 编辑函数代码
11.2.2 修改自定义对象函数
打 开 自 定 义 函 数 所 在 的 对 象 , 打 开 Script 代 码 编 辑 窗 口 , 选 择 Functions,再选择要修改的函数。对象函数的返回值的类型、参数名、 个数及类型都能随时更改。系统会给出一个提示信息,以确认是否更 改。可以输入或更改函数代码。
[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下拉框中选择参数传递方 式。
图11-11 列出全部函数
11.2.3 删除自定义对象函数
选择Function List后将列出该对 象的全部函数,如图11-12,右 击要删除的函数,出现一个弹出 式菜单,图11-13,选择Delete将 删除所选的对象函数。 注意: 注意 : 一旦选择Delete将立刻删 除所选的对象函数,系统对删除 操作不作提醒。 在图11-13中,选择弹出式菜单 中的Script,或双击所选的函数, 将打开Script代码编辑窗口,以 便查看与修改所选的对象函数, 包括函数返回值的类型、参数名、 参数个数、参数类型及函数代码 等。
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必须已被打开。
2. 选择 Global External Functions 或 Local External Functions 1.选择 选择Declare 选择
3.输入函数定义 输入函数定义
图11-14定义外部函数 定义外部函数
11.3.1外部函数的定义 外部函数的定义
定义外部函数时使用两种关键词:有返回值用Function,无返回值用Subroutine。 用Function的格式:
点击该图标, 点击该图标, 将显示/隐含 将显示 隐含 函数属性定义
图11-2定义全局函数的属性 定义全局函数的属性
11.1.1创建自定义全局函数 创建自定义全局函数
参数传递方式有三种: 参数传递方式有三种: Value:值传递---将实际参数的值传递给函数参数 : Reference:地址传递---把实际参数的地址传递给函数,此时,如果 函数修改了形式参数的值,那么实际参数的值也就被修改了。 Readonly:地址传递---把实际参数的地址传递给函数,不过不允许 : 修改参数的值。 要 增 加 或 删 除 参 数 , 可 在 图 11-2 中 右 击 , 出 现 弹 出 式 菜 单 。 Add Parameter增加参数,Insert Parameter插入参数,Delete Parameter 删除参数
图11-15 Windows口令管理窗 口令管理窗 口
图11-16 调用外部函数示例
11.3.3外部函数使用实例 外部函数使用实例
(2) 编写代码 在应用对象password的open事件中编写代码: open(w_pw) 在窗口w_pw中定义外部函数。先打开w_pw的Script代码编辑窗 口,再选择Declare,然后选择Local External Functions。
其中: access:访问级别。是可选项,只用于局部外部函数Local External Functions, : return_type:返回值类型。必须是一个合法的PowerBuilder数据类型。 : function_name和sub_name:外部程序的函数名或子程序名储存在DLL库中。 和 : REF:参数通过地址传递。 : typei:参数的数据类型。 : argi:参数名 : lib_name:包含外部函数或子程序的DLL/EXE文件名。 :
第11章 自定义函数和结构 章
11.1 11.2 11.3 11.4 创建自定义全局函数 创建自定义对象函数 外部函数 结构
Байду номын сангаас
11.1.1创建自定义全局函数 创建自定义全局函数
在开发环境的主窗口中,选择工具栏的New图标或选择主菜单 File的子菜单New,将出现标题为“New”的窗口。
图11-1 定义全局函数
图11-4 编辑函数代码
点击该图标,将显示 点击该图标,将显示/ 隐含函数属性定义
11.1.2修改自定义全局函数 修改自定义全局函数
在开发环境的主窗口中, 选 择 工 具 栏 的 Open 图 标或选择主菜单File的 子 菜 单 Open , 将 出 现 标题为“Open”的窗口, 在ObjectType下拉框中 选 择 Functions , 在 Object中选择要打开的 Object 4.选择要打 选择要打 函数, 开的函数 双击或点击OK按钮,进 入全局函数的定义,如 前图11-4所示。可以更 改函数返回值的类型、 参数名、个数及类型和 函数代码。
图11-17
定义外部函数
输入下面的代码: // 定义外部函数,即声明外部函数的语法格式与来源 Function Long ShellExecuteA(Long hwindow, String lpOperation, String lpFile, String lpParameters, String lpDirectory, Long nShowCmd) Library 'shell32.dll' Function Long GetDesktopWindow() Library 'user32.dll' 在“设置口令”的命令按钮cb_setpw的clicked事件中输入以下代码: //在PowerBuilder中调用Windows控制面板中的口令管理程序 String cpl_name String ls_null SetNull(ls_null) cpl_name = "Password.cpl" ShellExecuteA(GetDesktopWindow(), ls_null, 'rundll32.exe', "shell32.dll,Control_RunDLL " + cpl_name + ",", ls_null, 0) //调用外部函数
图11-6 删除自定义全局函数
11.2.1 创建自定义对象函数
可以为Application Object对象、窗口对象、用户对象创建自定义 函数,这种函数称为对象函数。 先打开要定义函数的对象,再打开Script代码编辑窗口,先选择 Functions,再选择New Function,将出现函数定义窗口。
1.选择 选择Functions 选择 2. 选 择 要 修 改 的 函数 点 击 该图 标 , 将显 示 /隐含函数属性定 隐含函数属性定 义 , 可以 更改 返回 更改返回 值类型及参数等
3.输入或修 输入或修 改代码
图11-10 修改对象函数
11.2.3 删除自定义对象函数
要删除自定义对象函数,首先打开自定义函数所在的对象,然后 选择主菜单View的子菜单Function List。
1.选择 选择Functions 选择 2.选择New Function .选择
图11-7 定义对象函数
11.2.1 创建自定义对象函数
Access缺省值为“public” 。 访问属性Access有三个选择: public:在整个程序中都可访问。 : private:只能在当前对象的程序中使用,不能在该对象的后代的程序中使用。 : protected:只能在当前对象的程序以及该对象的后代的程序中使用。 : 对象函数的命名规则一般与对象有关,如应用对象Application Object的函数一般 以“af_”作前缀,窗口对象Window的函数一般以“wf_”作前缀,菜单对象menu 的函数一般以“mf_”作前缀,用户自定义对象的函数一般以“uf_”作前缀。这些 规则清楚地表明了函数所在对象的类型,便于程序的维护。
11.3.2外部函数的调用 外部函数的调用
全局外部函数的使用类似于全局函数,局部外部函数的使用类似 于对象函数。在其它对象的代码中使用局部外部函数时需加上函 数定义所在的对象名。 但在实际应用中会发现,调用外部函数经常不成功,原因可能是 以下几种情况: (1) 32位环境调用16位DLL (2) 数 据 类 型 不 一 致 。 外 部 函 数 一 般 是 用 C/C++ 写 的 , 有 许 多 PowerBuilder所没有的数据类型。 (3) 指针。PowerBuilder没有指针数据类型。 (4) 函数名大小写错误。在PowerBuilder中不区分大小,但使用外部 函数时却要区分大小写。 (5) 外部函数所在的库文件DLL或EXE文件找不到。可能不在当前路 径下。
图11-12 列出所有对象函数
图11-13删除对象函数 删除对象函数
11.3.1外部函数的定义 外部函数的定义
使用外部函数之前,必须先对其进行说明。根据作用范围分为两种类型:全局外部 函数Global External Functions和局部外部函数Local External Functions。全局外部 函数可在应用程序的任何地方使用;局部外部函数只能在所定义的对象中使用。 打开要定义外部函数的对象,再打开Script代码编辑窗口,选择Declare,再选择 Global External Functions或Local External Functions,最后输入函数定义。
11.3.3外部函数使用实例 外部函数使用实例
在Windows的控制面板中的有一个口令管 理程序,用来设置和修改Windows和其它 系统口令,如图11-15。如何调用这个口 令管理程序呢? 步骤如下: 步骤如下: (1) 创建一个setpassword.pbl,其应用对 象名为password,再创建一个窗口w_pw, 窗口上放一个“设置口令”的命令按钮 cb_setpw,如图11-16所示。
增加、插入、 图11-3 增加、插入、删除参数
11.1.1创建自定义全局函数 创建自定义全局函数
函数名及参数定义好 后,在定义函数的下 面窗口内编辑代码。 或选择主窗口View菜 单 的 Script 子 菜 单 , 打开函数代码编辑窗 口。函数返回值的类 型、参数名、个数及 类型可以随时更改。 若函数有返回值,必 须立即输入代码,即 必 须 写 一 条 return 语 句,否则产生错误。 定义好的全局函数和 标准函数一样使用。
点击该图标, 点击该图标 , 将显 示/隐含函数属性定 隐含函数属性定 义
图11-9编辑函数代码 编辑函数代码
11.2.2 修改自定义对象函数
打 开 自 定 义 函 数 所 在 的 对 象 , 打 开 Script 代 码 编 辑 窗 口 , 选 择 Functions,再选择要修改的函数。对象函数的返回值的类型、参数名、 个数及类型都能随时更改。系统会给出一个提示信息,以确认是否更 改。可以输入或更改函数代码。
[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下拉框中选择参数传递方 式。
图11-11 列出全部函数
11.2.3 删除自定义对象函数
选择Function List后将列出该对 象的全部函数,如图11-12,右 击要删除的函数,出现一个弹出 式菜单,图11-13,选择Delete将 删除所选的对象函数。 注意: 注意 : 一旦选择Delete将立刻删 除所选的对象函数,系统对删除 操作不作提醒。 在图11-13中,选择弹出式菜单 中的Script,或双击所选的函数, 将打开Script代码编辑窗口,以 便查看与修改所选的对象函数, 包括函数返回值的类型、参数名、 参数个数、参数类型及函数代码 等。
1.选择目标 选择目标
2.选择 源文件 选择pbl源文件 选择 3. 在 ObjectType 中 选 择 Functions或All Objects 或
图11-5 打开自定义全局函数
11.1.3删除自定义全局函数 删除自定义全局函数
打开Library库管理器,打开要删除的自定义全局函数所在的PBL,选择 要删除的自定义全局函数,右击,出现弹出式菜单,选择Delete将删除 所选的自定义全局函数。