logo资料库

pb9.0函数大全,介绍的很详细.doc

第1页 / 共63页
第2页 / 共63页
第3页 / 共63页
第4页 / 共63页
第5页 / 共63页
第6页 / 共63页
第7页 / 共63页
第8页 / 共63页
资料共63页,剩余部分请下载后查看
WorkShop 等等,是软件开发人员的实用读物。)
1 Information!
2 StopSign!
5 None!
Question!
Choose case li_flag
Return 0
Return 1
2. SetFocus
3. TriggerEvent
4. Close
IF MessageBox('关闭', '真的要关闭吗?', Question!, YesNo!)
RETURN 1
END IF
Open(lw_ToOpen1) //打开窗口 w_main
FOR n = 1 to 4
NEXT
SQLCA.DBMS
Boolean ib_accept = True
If ib_accept Then
Else
End If
End if
END IF
Else
End if
* 编写日期: 2001-4-15
String ls_type
String ls_name
Else
End if
MidW ( string, start {, length }
(01)6676-7593
IF dw_1.RowCount() = Integer(dw_1.Describe( &
END IF
ELSE
END IF
CHOOSE CASE s
IF Trim(data) = "" THEN
RETURN 3
FROM 子句中使用了多个表
+ 'WHERE salary < 70000'
IF dw_emp.Retrieve( ) = 0 THEN
END IF
SYLK!保存为 Microsoft Multiplan 格式
Column
DataWindow
Group
Style
Text
Title
+ "emp_data.emp_name FROM emp_data " &
+ "WHERE emp_data.emp_salary > 45000"
IF Len(ls_errors) > 0 THEN
RETURN
END IF
'Style(Type=Form)', ls_error) //得到数据窗口对象的语法
DESTROY [COLUMN]
(LibraryPainter),从中找到并选中要移出的数据窗口对象,从“Entry”菜单中选择
IF ls_err <> "" THEN
RETURN
END IF
RETURN
END IF
RETURN
END IF
COMMIT;
ELSE
ROLLBACK;
MessageBox("状态", "更新 employee 表失败," &
END IF
ELSE
ROLLBACK;
MessageBox("状态", "更新 department 表失败," &
END IF
WHERE emp_id > 40000
+ is_sql + is_where + "'"
ELSE
IF m_selectdata.Checked = FALSE THEN
IF ls_return = "" THEN
ELSE
END IF
ELSE
//关闭查询模式并根据用户指定的条件检索数据
IF ls_return = "" THEN
ELSE
END IF
END IF
IF This.Checked = TRUE THEN
ELSE
END IF
ELSE
END IF
+'width="1363"brush.hatch="6" brush.color="1263225
+'width="1509"filename="C:\PB\BEACH.BMP" border="0
64.Create 语句
DBTrans = CREATE transaction
IF ... THEN
ELSE
END IF
DESTROY objectvariable
DESTROY DBTrans
New! Yes
Yes
No
Yes Yes Yes
END IF
GetClickedRow
END IF
IF (KeyDown(KeyTab!) OR KeyDown(KeyEnter!) OR &
End if
IF KeyDown(65) THEN
IF KeyDown(65) AND KeyDown(KeyShift!) THEN
End if
IF lb_result THEN
ELSE
END IF
SELECT dept_id from dept
SELECT dept_id from employee
END IF
北京达通兴电脑科技开发有限公司 电话:010-62921594,010-81692157 传真:010-62921594 通信地址:北京市海淀区小营桥北行 300 米路东金凤来招待所 026、031 室 联系人:郭宝利 公司网址:www.study01job.com 提供专业 PB 培训 承接各种软件项目 13910229071 写作说明 本电子图书由北京达通兴电脑科技开发有限公司郭宝利先生编写。该书编写,充分尊重 了 PB 初学者的需求,提炼了本人多年的开发经验,从多个角度详解介绍了 PB 的核心函数。 相信该书对 PB 初学者和部分提高者有一定的帮助。 所谓核心函数,是 PB 的常用的重要函数。随着 PB 从 3.0 到 10.0 的版本升级,这些函 数始终保留,并且部分函数的功能得到了进一步的扩充。这些函数都是核心函数。通过对这 些函数的深入掌握,不仅可以具备开发 PB 应用程序的基础,并且可以促进深刻立即 PB 编 程的核心思想,为初学者打好 PB 核心知识架构,为以后自学 PB 奠定好基础。 很多初学者刚开始自学 PB 时热情高涨,并且也感觉比较简单,但是深入者很少,至终 者更少。我认为,关键就是没有构建起 PB 核心知识架构,也就是没有抓住重点。本书的学 作目的之一就是要为初学者培养核心知识架构。 PB 的核心知识架构,除了重点函数之外,还有相关的一些开发理念,关键的开发步骤 等。在随后我公司提供的另外一本电子图书(暂定书名为《例说 会详细介绍。《例说 PB 软件项目开发》是该电子图书的姊妹篇,本电子图书中用到的函数, 在《例说 PB 软件项目开发》中的软件开发中都会用到。(题外话:《例说 PB 软件项目开发》 的特点是,以项目开发为主线组织编写,对项目开发中用到的 PB 核心知识进行详细介绍, 同时还介绍了设计工具 PowerDesigner、安装盘制作工作 InstallShield、帮助制作工具 HTML WorkShop 等等,是软件开发人员的实用读物。) PB 软件项目开发》)中将 本电子图书是郭宝利先生独立编写,没有参考任何网上资料。在你转载时,务必要著名 出处,并且保证该文档的完整性。对于出版图书成篇摘抄者,请务必征得本人同意。各大出 版社本人还有有若干熟悉的编辑。 鉴于本电子图书不是通过严格的 4 审出版的,本人不保证该书中存在若干别字、错字, 工作紧张,本人只是尽量减少这些错误。至于技术问题,本人都进行过认真严格的核实,以 确保本免费电子图书有较高的质量。如果你有好的意见或者建议,可以直接和我联系: 电话:010-81692157,13910229071 邮箱:gbl88@sohu.com QQ:123367042 Skype:PowerBuilders 本人所在公司:北京达通兴电脑科技开发有限公司 另外,我公司提供 PowerBuilder 系列培训,并且承接各种软件项目,欢迎合作。详细内 容请浏览网站:www.study01job.com。 郭宝利 2005.7.2 北京
北京达通兴电脑科技开发有限公司 电话:010-62921594,010-81692157 传真:010-62921594 通信地址:北京市海淀区小营桥北行 300 米路东金凤来招待所 026、031 室 联系人:郭宝利 公司网址:www.study01job.com 提供专业 PB 培训 承接各种软件项目 13910229071 1. MessageBox 函数作用:显示一个信息提示窗口。该窗口中的标题、图标、内容和按钮都可以通过参数指 定。提示窗口的样式如图 1 所示。清楚了提示窗口的构成,非常有利于记忆该 函数的语法。 函数语法:MessageBox ( title, text {, icon {, button {, default } } } ) 图 1 提示窗口样式 Title:窗口标题,String 类型的数据。如果该参数取值为 Null,则不显示 提示窗口。 Text:窗口中要显示的内容,String 类型的数据。如果该参数取值为 Null, 则不显示提示窗口。这两个函数是必需的,使用更多的参数可以提供更多 的控制。 Icon:窗口中显示的图标的样式,为枚举类型的数据。可用的类型和对应 的图标样式如表 1 所示: 枚举取值 图标样式 序号 1 Information! 2 StopSign! 3 4 Exclamation! Question! 5 None! 无 Button:显示哪些命令按钮,枚举类型。可用的取值有: OK! OKCancel! YesNoCancel! RetryCancel! AbortRetryIgnore! YesNo! Default:希望成为缺省命令按钮的编号。最左侧按钮的编号为 1,往右依 次加 1。 返 回 值:如果执行成功,则返回用户选择的命令按钮的编号(1,2 或者 3);执行失败则 返回-1;如果有参数为 Null,则函数返回 Null。 代码实例: 例子 1,最简单的用法: MessageBox(‘提示’,’数据保存成功。’) 例子 2,3 个参数的: MessageBox(‘提示’,’按回车键将关闭系统……’,StopSign!) 例子 3,多个命令按钮的: integer li_flag
北京达通兴电脑科技开发有限公司 电话:010-62921594,010-81692157 传真:010-62921594 通信地址:北京市海淀区小营桥北行 300 米路东金凤来招待所 026、031 室 联系人:郭宝利 公司网址:www.study01job.com 提供专业 PB 培训 承接各种软件项目 13910229071 li_flag = MessageBox(‘提示’,’数据尚未保存,是否继续关闭窗口?’,& Question!,YesNo!,2) Choose case li_flag Case 1 //选择‘是’,继续关闭窗口 Return 0 Case 2 //选择‘否’,不再关闭窗口 Return 1 End choose 2. SetFocus 函数作用:指定的控件或者对象获得焦点。获得焦点的对象或者标题栏为蓝色,或者控件有 明显的边框。Drawing 类型的对象不能获得焦点,所以不能在 Rectangle、RoundRectangle 等控件上使用该函数。 line、Oval、 函数语法:objectname.SetFocus ( ) 其中,ObjectName 是要设置焦点的控件或者对象的名称。 返 回 值:如果执行成功,则返回 1,执行错误返回-1。如果对象 Objectname 为 Null,则返 回 Null。 代码实例: 例子 1,窗口上: w_main.SetFocus() 例子 2,命令按钮: cb_save.SetFocus() 例子 3,数据窗口: dw_1.SetFocus() 3. TriggerEvent 函数作用: 触发指定对象的指定事件,并且立即执行该事件中的脚本。注意该函数和 PostEvent 的区别。PostEvent 不是立即执行,TriggerEvent 是立即执行触发事件 的脚本。 函数语法:objectname.TriggerEvent ( event {, word, long } ) objectname:PB 中任何对象或者控件,只要有可以触发的事件就可以。 event:要触发的事件。可以是枚举类型或者 String 类型。PB 提供的事件 可以使用枚举或者 String 类型来表示,比如 Clicked!或者‘Clicked’都可 以代表 Clicked 事件;自定义的用户事件只能使用 String 来表示。需要注 意的是,这里的事件应该提供了脚本。 word:该参数不是必需的。当需要传递数据给被触发的事件时使用 word 和 long 参数。这两个参数都可以传递 long 类型的数据,但是参数 long 还 可以传递 string 类型的数据,而该参数仅能传递 long 类型的。如果使用 了该参数,在被触发的事件中使用 Message.WordParm 接收传递过去的数 据。如果不使用该参数传递数据而是使用参数 long 进行传递,则将该参 数设置为 0。 long:该参数也不是必须的,用来传递 long 或者 string 类型的数据。使用 Message.LongParm 接收传递的数据。当传递 Message.LongParm 中 保 存 的 是 所 传 数 据 的 存 储 地 址 , 必 须 使 用 string(XX,’address’)来读取该地址中的 string 类型数据。 类型的数据时,对象 string 返 回 值:Integer 类型。如果返回 1,表示该函数执行成功;如果指定事件中没有脚本或者
北京达通兴电脑科技开发有限公司 电话:010-62921594,010-81692157 传真:010-62921594 通信地址:北京市海淀区小营桥北行 300 米路东金凤来招待所 026、031 室 联系人:郭宝利 公司网址:www.study01job.com 提供专业 PB 培训 承接各种软件项目 13910229071 函数执行错误,则返回-1。当任意参数为 Null 时,函数返回 Null。 代码实例: 例子 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 数据: w_main.TriggerEvent(‘ue_open’,100,0) 在用户自定义事件 ue_open 中接收数据: long ll_msg ll_msg = Message.WordParm 4. Close 函数作用:关闭指定的窗口,并且释放窗口以及窗口上控件所占用的资源。该函数执行时, 首先执行窗口的 CloseQuery 事件脚本,然后关闭窗口,然后执行该函数所在事 件中的其它脚本。一定注意这个顺序。窗口关闭后,窗口中的属性、控件、实 例变量等都不可用。执行了该函数后,如果希望还能够阻止窗口的关闭,可以 在窗口的 CloseQuery 中返回 1。 函数语法:Close ( windowname ) windowname:要关闭的窗口的名称。 返 回 值:Integer 类型。如果返回 1,表示该函数执行成功;如果函数执行错误,则返回-1。 当任意参数为 Null 时,函数返回 Null。 代码实例: 例子 1,以下代码在命令按钮‘关闭’的 Clicked 事件中,执行会发生错误: close(parent) messagebox('',this.text) //控件已经不可用,该语句执行错误。 例子 2,以下代码在窗口的 CloseQuery 事件中,当执行函数 Close 之后触发该事 件,如果用户回答为‘No’则取消关闭: IF MessageBox('关闭', '真的要关闭吗?', Question!, YesNo!) = 2 THEN //如果选择‘No’,则停止关闭 RETURN 1 END IF 5. SQLCA 6. connect; 7. Open 函数作用:打开指定的窗口。如果希望同一个窗口打开多个,则只能使用语法格式二。
北京达通兴电脑科技开发有限公司 电话:010-62921594,010-81692157 传真:010-62921594 通信地址:北京市海淀区小营桥北行 300 米路东金凤来招待所 026、031 室 联系人:郭宝利 公司网址:www.study01job.com 提供专业 PB 培训 承接各种软件项目 13910229071 函数语法:格式一:Open ( windowvar {, parent } ) 格式二:Open ( windowvar, windowtype {, parent } ) windowvar:要打开的窗口名称,可以是在 Window 画板中设计的窗口的名称, 也可以是指定类型的窗口变量。 windowtype:一个 String 类型的变量,取值是已经设计好的窗口的名称。使用 该参数,直到程序运行的时候才确定要打开的窗口,所以可以提高程序的灵活 性。 parent:当 windowvar 参数指定的窗口是 Child 或者 Popup 类型时,应该指定 一个窗口作为当前 windowvar 的父窗口。如果不指定父窗口,则最近打开的窗 口作为当前打开窗口的父窗口。 返 回 值:如果执行成功,则返回 1,执行错误则返回-1,任何参数为 Null,则返回 Null。 代码实例: 例子 1,格式一: open(w_main) 例子 2,格式一: w_main lw_ToOpen1 w_main lw_ToOpen2 Open(lw_ToOpen1) //打开窗口 w_main Open(lw_ToOpen2) //再打开一个 w_main 窗口 例子 3,格式一: Open(w_msg,w_main) //打开窗口 w_msg,并且将 w_main 设置为它的父窗口 例子 4,格式二: String ls_ToOpen Windowlw_WinToOpen select winname into :ls_ToOpen where ywmc = :ls_ywmc; Open(lw_WinToOpen,ls_ToOpen) //根据业务名称打开窗口 例子 5,格式二: window w_stock_win[ ] string w_stock_type[4] w_stock_type[1] = "w_stock_wine" w_stock_type[2] = "w_stock_scotch" w_stock_type[3] = "w_stock_beer" w_stock_type[4] = "w_stock_soda" FOR n = 1 to 4 Open(w_stock_win[n], w_stock_type[n]) NEXT 8. halt close 9. ProfileString 函数作用:从指定的配置文件中获取 String 类型的数据。配置文件按照节、关键字来组织。 学习该函数,首先应该熟悉配置文件的格式。可以在你的计算机中随便查找一
北京达通兴电脑科技开发有限公司 电话:010-62921594,010-81692157 传真:010-62921594 通信地址:北京市海淀区小营桥北行 300 米路东金凤来招待所 026、031 室 联系人:郭宝利 公司网址:www.study01job.com 提供专业 PB 培训 承接各种软件项目 13910229071 个后缀为 ini 的文件,打开观察一下文件的格式。以下是典型的配置文件格式: [database] dbms=syc enterprise server logid=sa 其中,database 为‘section’(节),dbms 为‘key’(键),syc enterprise server 是键 dbms 的取值。和该函数语法类似的还有 PorFileInt,用来从配置文件中读 取 Integer 类型的数据;函数 SetProfileString 用来设置配置文件。 函数语法:ProfileString ( filename, section, key, default ) filename:配置文件的名称,可以包含完整的路径信息。如果没有指定路径信 息,则使用操作系统的搜索路径查找指定的配置文件。不区分大小写。 section:从配置文件的指定节中读取信息。不区分大小写。 key:要读取信息的键名称。不区分大小写。 default:当指定的 filename、section、key 中任意一个没有找到时,或者读取的 数据不能转换成 string 类型时,函数则返回该参数指定的数据。 返 回 值:String 类型的数据,最长为 4096 个字节。如果能够正确读取指定配置文件中、 指定节的、指定键的取值,则返回该键的取值,否则返回参数 default 指定的数 据;如果执行错误,则返回‘’;如果任意参数为 Null,则返回 Null。 代码实例: 例子 1: if ProfileString("C:\PROFILE.INI", "Department", "Name", "None") & = "Marketing" then Open(w_marketing) 例子 2: sqlca.dbms = ProfileString("setup.ini", "database", "dbms", "None") Disconnect IsRowModified 10. 11. 函数作用:该函数是数据窗口对象函数,不能在 PowerScript 中直接使用。该函数用来判断 指定数据行的数据是否被修改过,通常只在 Detail 节中使用该函数。经常在计 算域中使用该函数,根据返回值决定计算域中显示的内容;也可以为列的某属 性设置表达式,使用该函数,比如设置列的背景颜色时使用该函数,可以让修 改过的数据和没有修改过的显示不同的背景颜色。 函数语法:IsRowModified({rowno}) rowno:可选参数,要判断数据是否修改过的数据行的行号。如果省略该参 数,则用来判断计算列所在的数据行。 返 回 值:Boolean 类型。如果数据修改过,则返回 True,否则返回 False。 代码实例: 例子 1: IsRowModified() 上面代码等价于: IsRowModified(GetRow()) 12. IsRowNew 函数作用:该函数是数据窗口对象函数,不能在 PowerScript 中直接使用。该函数用来判断 指定数据行的数据是否是新数据行,通常只在 Detail 节中使用该函数。经常在 计算域中使用该函数,根据返回值决定计算域中显示的内容;也可以为列的某 属性设置表达式,使用该函数,比如设置列的背景颜色时使用该函数,可以让
北京达通兴电脑科技开发有限公司 电话:010-62921594,010-81692157 传真:010-62921594 通信地址:北京市海淀区小营桥北行 300 米路东金凤来招待所 026、031 室 联系人:郭宝利 公司网址:www.study01job.com 提供专业 PB 培训 承接各种软件项目 13910229071 新增加的数据行和老的数据行显示不同的背景颜色。 函数语法:IsRowNew({rowno}) rowno:可选参数,要判断数据是否新增加的数据行的行号。如果省略该参 数,则用来判断计算列所在的数据行。 返 回 值:Boolean 类型。如果是新增加的数据行,则返回 True,否则返回 False。 代码实例: 例子 1: IsRowNedw() 上面代码等价于: IsRowNew(GetRow()) 13. 数据窗口中的 if 函数 函数作用:根据条件表达式的取值,返回特定的参数。 函数语法:If ( boolean, truevalue, falsevalue ) boolean:返回值为 Boolean 类型的表达式。 truevalue:当参数 boolean 取值为 True 时,函数 if 返回该参数的取值,可以 是任意标准数据类型。但是,具体类型根据该表达式所在位置而定。比如, 该表达式是在字段的 protect 属性上,则该参数取值为 0 或者 1 应该是合理 的。 falsevalue:当参数 boolean 取值为 False 时,函数 if 返回该参数的取值,可 以是任意标准数据类型。但是,具体类型根据该表达式所在位置而定。注 意,该参数的数据类型和 truevalue 的数据类型应该是一致的。 返 回 值:返回值类型为参数 truevalue 或者 falsevalue 类型的数据,返回值或者是 truevalue 或者是 falsevalue。两个参数的类型是相同的。 代码实例: 例子 1,设置背景颜色。如果数据行修改过,则背景设置为红色,否则设置为灰色: if(IsRowModified(),rgb(255,0,0),rgb(192,192,192)) 例子 2,设置数据行的修改状态。用下面的表达式创建一个计算列: if(IsRowNew(),’新’,if(isRowModified(),’改’,’旧’)) 14. error 15. Choose Case 16. insertrow 函数作用:在指定的数据窗口控件或者 DataStore 中插入一条数据。如果列定义了缺省值, 则在显示新插入的数据行之前自动设置这些列的缺省值。该函数仅仅新插入一 行新数据行,不会改变当前数据行,并且也不会改变数据窗口中数据行的显示 情况。如果要改变当前数据行,或者跳转到新的数据行,则需要调用函数 SetRow 或者 ScrollToRow。 函数语法:long dwcontrol.InsertRow ( long row ) dwcontrol:要插入数据的数据窗口控件、DataStore 或者子数据窗口。 row:在该数据行之前插入新的数据行。如果希望在最后插入数据,则将该参 数设置为 0 即可。 返 回 值:long 类型,新插入的数据行的行号。如果执行错误,则返回-1;如果任意一个参 数为 Null,则返回 Null。 代码实例: 例子 1,在当前数据行之前插入一行数据:
北京达通兴电脑科技开发有限公司 电话:010-62921594,010-81692157 传真:010-62921594 通信地址:北京市海淀区小营桥北行 300 米路东金凤来招待所 026、031 室 联系人:郭宝利 公司网址:www.study01job.com 提供专业 PB 培训 承接各种软件项目 13910229071 dw_1.InsertRow(dw_1.GetRow()) 例子 2,在最后插入数据行,并且跳转到新插入的数据行: long ll_newrow ll_newrow = dw_employee.InsertRow(0) dw_employee.ScrollToRow(ll_newrow) setitem 17. 函数作用:给指定的数据窗口或者 Datastore 中的、指定单元设置数据,通过行和列来确定 哪个单元。该函数直接修改缓冲区中的数据,而不是针对显示界面进行修改, 修改成功之后,数据窗口控件上会自动反映出最新的内容来。而函数 SetText 则 针对显示界面进行修改,如果能够通过字段的校验规则,才能够进入到数据窗 口对应的缓冲区中。注意这两个函数的区别。 函数语法:integer dwcontrol.SetItem ( long row, integer column, any value ) integer dwcontrol.SetItem ( long row, string column, any value ) dwcontrol:要设置数据的数据窗口控件、DataStore 或者子数据窗口的名称。 row:要设置数据的行,为 long 类型。 column:要设置数据的列,可以是 是 类型的列号。 value:要设置的数据。类型根据数据列而定,两者的数据类型应该保持一 致。 integer string 类型的列名称,也可以 返 回 值:integer 类型,1 表示函数执行成功,-1 表示函数执行失败。如果有任意一个参数 为 Null,则函数返回 Null。 代码实例: 例子 1,下面脚本在第一行的 hire_date 列中设置数据: dw_order.SetItem(1, "hire_date", 1993-06-07) 例子 2,当用户在数值类型的字段中输入内容,然后又删除后要离开该单元时,数 据窗口尝试着将‘’赋值给该单元,这时会导致内容不能通过校验规则而产生错 误。解决的办法就是在数据窗口控件的 ItemError 事件中编写下面的脚本: integer li_Null String ls_type ls_type = This.Describe(dwo.name + '.ColType') ls_type = Left(Lower(Trim(ls_type)),3) choose case ls_type case 'dec','int','lon','num','rea','ulo' This.SetItem(Row,integer(dwo.ID),li_Null) end choose return 2 18. Print 函数作用:将数据窗口或者 DataStore 中的数据作为一个打印任务发送到打印机。使用这里 的语法格式进行数据窗口打印,将自动创建打印任务。在该函数执行后、将要 将数据发送到打印机时触发 PrintStart 事件,每打印完一页后都会触发 PrintPage
分享到:
收藏