PB11第11章自定义函数和结构(精)
powerbuilder常用函数
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()函数返回N ULL。
Fact()功能计算n的阶乘。
语法Fact ( n )参数n:数值型变量或表达式返回值Double。
函数执行成功时返回n的阶乘。
如果参数n的值为NULL,Fact()函数返回NULL。
Int()功能得到小于等于n的最大整数。
语法Int ( n )参数n:数值型变量或表达式返回值Integer。
函数执行成功时返回小于等于n的最大整数。
如果n的值太小或太大,超过了整数的表示范围,则函数返回0。
如果参数n的值为NULL,Int()函数返回N ULL。
Log()功能计算n的自然对数。
语法Log ( n )参数n:数值型变量或表达式,其值必须大于0返回值Double。
函数执行成功时返回n的自然对数。
如果n小于等于0,将导致运行错误。
如果参数n的值为NULL,Log()函数返回NULL。
LogTen()功能计算n的常用对数(以10为底)。
参数n:数值型变量或表达式,其值必须大于0返回值Double。
pb的基本函数
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、ScrollT oRow() 使用方法:rtename .scrolltorow(row)Rtename超文本编辑框的名称。
如果row的值为0的话则就回滚到第一行,如果row的值大于超文本的行数则回滚到最后一行3、selectedColumn()返回插入点后第一个字符的位置rtename.selectedcolumn()4、setcloumn5、print() 以当前字体在打开的打印作业中打印一行或多行文本print(printjobnumber,{tabl},string{,tab2})tab1为文本开始打印的位置,以千分之一英寸为单位。
PB编程规范
编程规范(PB)1简介1.1简介这个文档描述了用于编写稳定、可靠的PowerBuilder应用程序的一些标准、约定和准则。
他们基于合理的,经过证实的一些使代码容易理解、维护和增强的软件工程的原则。
另外,遵循这些标准,你作为一个PowerBuilder程序员的生产力将有一个显著的提高。
一些经验证明,花时间在项目的开始写出高质量的代码,可以使在后来的开发过程中容易修改它,从而事半功倍。
最后,遵循这一系列编码规范,可以使一个开发团队更好地保持一致性,最终必将极大地提高团队的生产力。
1.2最初的准则和最终的准则当你无法找到一些你需要的原则或准则时,或者它们很明显地不适用,或者其它的一些情况下,请使用常识,按照一些基本的原理去作。
这个原则凌驾于其他原则。
2命名规范2.1一般性约定1.使用英文或汉语拼音的全称去准确地描述各种对象、变量例如,ls_UserName (用户名) ,ldc_GrandTotal(总计)等等。
尽管x1,y1这样的名称很容易拼写,因为它们很短,但是他们不可能明确地提示名称的含义,将导致代码难以理解、维护和改进。
2.使用大小写混合的方式命名3.以合适的方式使用缩写例如ll_RownNmber,简写为ll_RowNum是可以理解的,但是li_ReturnCode简写为li_rc就不一定被别人看懂,所以应该以尽量保守的态度使用缩写,在更多的时候使用全称,或者建立常用缩写的对照表。
4.避免太长的名称,尽量限制在15个字母以内长名称虽然很容易懂,但特别长将导致拼写时经常出错。
5.不要在第一个字母和最后一个字母使用下划线6.保持命名的一致性。
相关的东西应给以相关的名字,以说明他们的关系和差异2.2具体约定2.2.1对象命名规范<前缀>_名称注:名称为英文,新建对象必须加注释(菜单对象可例外)。
一般情况下,菜单对象的名称与其所属窗口的名称一致。
例子:w_master , m_master , d_cig_cdu_tvs is the TreeView visual user objectu_dw is the DataWindow visual user objectn_cst_dwsrv is the custom class user object for DataWindow servicesn_tr is the transaction standard class user object and is in the extension level2.2.2变量范围命名规范<范围><数据类型>_变量名范围:对于标准数据类型:例子:as_unitcode 表示事件或函数的输入参数,string类型idc_val 表示实例变量,decimal 类型li_row 表示局部变量,integer 类型gd_firstday 表示全局变量,date类型对于常用参照数据类型(reference variables):例子:datastore lds_unitDataWindowChild ldwc_cigwindow lw_code注:1) 尽量避免使用全局变量。
pb11新特性及增强内容(精)
.NET Web Forms转化
选择win32 DLL文件
.NET Web Forms转化
选择JavaScript文件
.NET Web Forms转化
选择发布的类型
.NET Web ForБайду номын сангаасs转化
确认发布
.NET Web Forms转化
.NET Web Forms转化
所有属性都可以在IIS服务器的对应应用上修改, 在PB中修改需要重新发布。
记忆Retrieval Arguments
仅在设计时有效 Composite样式的DW无效 新建的DW必须保存,退出再打开后才有效。
Powerbuilder11.0的其他增强内容
窗口控件的增强
增加了打开和关闭窗口的动画效果 增加了窗口透明度的属性
系统函数的增强
GetByteArray实现blob数据转化为byte数组。 Blob函数支持byte数组作为参数。 各种Trim函数增加第二个参数,可以去除任何空 白的符号,包括回车换行和TAB等。 SetFilter函数增加\s选项,对字符串的比较使用 Ascii模式,不加选项使用的是字典模式。例 如:”#2 >= 'a' and #2 < 'c' \s”
DataWindow的增强
UseEllipsis属性,Edit或EditMask样式的列可以 选择UseEllipsis属性,隐藏显示不了的数据。
设定了Autosize Height属性后无效 设定了Escapement属性后无效
Treeview样式的DW
隐藏树结点(设置height为0) 保留展开状态挪动节点 特有的节点展开等事件无需手工添加
PowerBuilder 11.5(2008第三季度)
PB11简介PPT课件
2021/7/22
23
谢谢大家!
个人观点供参考,欢迎讨论
2021/7/22
17
2.9 应用程序开发及发布
创建一个应用调试 利用开发工具编译成Dll或PBD 发布EXE、Dll(PBD) + Pb的支持动态库,类
似于Java的虚拟机
2021/7/22
18
3.1 Dw数窗的详细介绍
不同风格数窗使用介绍(12种风格) 如何设计数窗 数窗检索数据,正常检索、带参数检索 数窗更新数据 数窗的数据源介绍(无数据源、SQL语句组
PowerBuilder是著名的数据库应用开发工具生产 厂商PowerSoft公司推出的产品(PowerSoft现已 被数据库厂商Sybase所收购),它完全按照客 户机/服务器体系结构研制设计,在客户机/服 务器结构中,它使用在客户机中,作为数据库 应用程序的开发工具而存在。由于PowerBuilder 采用了面向对象和可视化技术,提供可视化的 应用开发环境,使得我们利用PowerBuilder,可 以方便快捷地开发出利用后台服务器中的数据 和数据库管理系统的数据库应用程序。
*.Pbl,*.PBD,*.Pbw,*.pbt,*.pbr,*.dll的介绍。
2021/7/22
15
2.7 PB开发工具与Sql语句
嵌入式SQL语句 4种动态游标 代码中直接写Sql语句 数窗与视图 数窗与存储过程
2021/7/22
16
2.8 应用程序开发及发布
创建一个应用调试 利用开发工具编译成Dll或PBD 发布EXE、Dll(PBD) + Pb的支持动态库
2021/7/22
PB开发规范
pb程序编制规范---开发部制一.命名规范1.1.窗口:W_XX_XXXX(W_系统简写_功能名称)2.例:物品入库处理窗口为WZ_RK2,物品主窗口命名为WZ_MAIN注:1.wz_xx中主窗口继承于W_MAIN_FATHER,MDI窗口一般继承于W_qbase2.系统简写名称参照各产品的子系统设置规范。
3.2.菜单:M_XX_XXXX(W_系统简写_功能名称)例:物品系统主菜单M_MAIN。
4.3.变量3.3变量命名:变量范围+变量类型+‘_’+变量名称例:全局的日期为Gd_today,门诊号参数As_mzhm注:WZ-V1.0公共全局类名:Uo_support::U_supporclass WZ-V1.0全局参数结构名:Base_info::Base_infoWZ-V1.0窗口数据传输变量结构:S_Exchange::S_Exchange5.4.函数公用全局函数:GF_XXXX(GF+_+函数名称)子系统使用的公共函数:GF_XX_XXXX(GF+_+系统简称+_+函数名称)窗口函数:WF_XXXX(WF+_+函数名称)类成员函数:uf_XXXX(函数名称)全局扩展函数:GE_XXXX(GE+_+函数名称)局部扩展函数:LE_XXXX(LE+_+函数名称)6.5.数据窗口下拉式数据窗口:DD_XXXX一般数据窗口:D_XX_XXXX(D+_+系统简写+_+数据窗口名称)7.6.类U_XXXX(非可视类)VU_XXXX(可视类)8.9.8.库(PBL)XX_XXXX:系统简写+_+库名XX_MAIN:主库(主窗口,主菜单及本系统的私有维护) XX_PUBLIC:本系统的公用部份XX_XXXX: 业务功能1XX_XXXX: 业务功能2。
10.9.应用应用名一般与系统的简称同名11.10.表与视图表:XX_XXXX(系统简写+_+表名拼音缩写).例:住院系统的费用库(ZY_FYMX)视图:V_XX_XXXX(V+_+系统简写_+视图名). 例:门诊系统的收费汇总视图(V_MZ_SFHZ)12.11.字段名字段名一般是字段中文名称拼音的首字母缩写,一般为4个字母.如:药品序号(YPXH)13.12.主外键主键:PK_XXXX_XXXX(PK+_+表名+_+列名)外键:FK_XXXX_XXXX(FK+_+表名+_+列名)14.13.索引IDX_XXXX_XXXX(IDX+_+表名+_+索引名)15.14.触发器TR_XXXX_XXXX_XXXX(TR+_+所属表名+_+作用表名+_+触发器名).16.15.存储过程PR_XX_XXXX(PR+_+系统简写+_+存储过程名)二.界面规范1.1.用程序主窗口采用MDI方式,应具有Miscohelp提示。
pb的主要控件函数及其作用
函数返回值AcceptText Integer CanUndo Boolean CategoryCount Integer CategoryName StringClear IntegerClearValues Integer Clipboard Integer Copy IntegerCopyRTF String Create Integer CrosstabDialog Integer Cut Integer DataCount Long DBCancel Integer DBErrorCode Long DBErrorMessage String DeletedCount Long DeleteRow Integer Describe String Drag Integer Filter Integer FilteredCount IntegerFind Long FindCategory Integer FindGroupChange Long FindNext Integer FindRequired Integer FindSeries Integer GenerateHTMLForm Integer GetBandAtPointer StringGetBanderStyle Border GetChild Integer GetClickedColum Integer GetClickedRow Long GetColum Integer GetColumnName StringGetContextService Integer GetData Double GetDataPieExplode IntegerGetDataStyle IntegerGetDataValue Integer GetFormat String GetItemDate Date GetItemDateTime DateTime GetItemDecimal DecimalGetItemNumber Double GetItemStatus dwItemStatus GetItemString String GetItemTime Time GetMessageText String GetNextModified Long GetObjectAtPointer String GetParent PowerObject GetRow Long GetSelectedRow Integer GetSeriesStyle Integer GetSQLPreview String GetSQLSelect String GetText String GetTrans Integer GetUpdateStatus Integer GetValidate String GetValue String GroupCalc IntegerHide Integer ImportClipboard Long ImportFile Long ImportString Long InsertDocument IntegerInsertRow Long IsSelected Boolean LineCount Integer ModifiedCount LongModify StringMove Integer ObjectAtPointer grObjectTypeOLEActivate Integer Paste Integer PasteRTE Long PointerX Integer PointerY IntegerPosition IntegerPostEvent Boolean Print Integer PrintCancel Integer ReplaceText Integer ReselectRow Integer Reset Integer ResetDataColors Integer ResetTransObject Integer ResetUpdate Integer Resize Integer Retrieve LongRowCount Long RowsCopy Integer RowsDiscard Integer RowsMove Integer SaveAs Integer Scroll Integer ScrollNextPage Long ScrollNextRow Long ScrollPriorPage Long ScrollPriorRow Long ScrollToRow Integer SelectedLength Integer SelectedLine Integer SelectedStart Integer SelectedText String SelectRow IntegerSelectText Integer SelectTextAll Integer SelectTextLine Integer SelectTextWord IntegerSeriesCount Integer SeriesName String SetActionCode Integer SetBorderStyle Integer SetColumn Integer SetDataPieExplode IntegerSetDataStyle IntegerSetDetailHeight Integer SetFilter Integer SetFocus Integer SetFormat Integer SetItem Integer SetItemStatus Integer SetPosition IntegerSetRedraw Integer SetRow Integer SetRowFocusIndicatorInteger SetSeriesStyle IntegerSetSort Integer SetSQLPreview Integer SetSQLSelect Integer SetTabOrder Integer SetText Integer SetTrans Integer SetTransObject Integer SetValidate Integer SetValue Integer ShareData Integer ShareDataOff Integer Show Integer ShowHeadFoot IntegerSort Integer TextLine String TriggerEvent Integer TypeOf Object Undo Integer Update Integer功能将数据窗口控件中“漂浮”在当前行/列上的编辑框内的内容放入数据窗口缓冲区的当前项中(编辑框的内容必须通过数据有效性规则检查)检测最近一次编辑操作能否被取消.放回值为Ture时表示能够撤消,为False时表示不能撤消返回数据窗口控件指定统计图的数据类别数返回数据窗口控件的名称删除数据窗口控件的编辑框中所选内容,对RichText风格的数据窗口来说,删除数据窗口中所选内容删除数据窗口控件指定列的代码表中的所有值,该函数不影响指定列的数据值将数据窗口控件中指定的统计图复制到系统剪贴板将数据窗口控件当前行列上编辑框中的所选内容复制到系统剪贴板.对RichText风格的数据窗口来说,把数据窗口控件中所选内容复制到系统剪贴板将数据窗口控件中所选的文本,图像,输入字段作为一个超文本格式的字符串返回,位图和输入字段包括在字符串中使用指定的源代码创建窗口对象,并用新的数据窗口对象取代数据窗口控件中原有的数据窗口对象显示Crosstab Definition对话框,这样用户能够在运行时修改Crosstab风格的数据窗口对象的定义将数据窗口控件当前行列上编辑框中的所选内容复制到系统剪贴板.对RichText风格的数据窗口来说,把数据窗口控件中所选内容复制到系统剪贴板返回数据窗口控件指定图形,指定序列的数据点数取消数据库数据检索进程得到数据库访问出错时的错误编号(即将废弃)得到数据库访问出错时的错误信息(即将废弃)返回数据窗口控件中已经被删除但尚未做数据库更新的行的数量删除数据窗口控件中的指定行返回数据窗口控件的指定信息开始或结束数据窗口控件的拖动在数据窗口控件中显示满足当前过滤条件的行返回过滤缓冲区中数据行数在数据窗口控件中查找满足条件的下一行.对RichText风格的数据窗口来说,在该控件中查找满足条件的文本,搜索到后将其加亮.可以指定查找方向以及指定是否需要大小写匹配和单词匹配返回数据窗口控件中指定图形,指定类别的类别号从指定行开始,在数据窗口控件中查找指定分组的第一个分组位置使用Find()函数的条件继续查找,该函数只适用于RichText风格的数据窗口标识用户未填充的所需列返回数据窗口控件中指定图形,指定序列的号根据数据窗口的内容生成HTML Form语法返回一个字符串,字符串由带名,Tab字符(~t)和行号组成,指示当前鼠标指针位于哪个带的那个行上返回数据窗口控件指定列的边框类型,有效值为Box!, Lowered!, NoBorder!, Raised!, ResizeBorder!, ShadowBox!, Underline!得到指定列子数据窗口的名称并将其保存到变量中返回用户在数据窗口控件中单击或双击列的列号(即将废弃)返回用户在数据窗口控件中单击或双击列的行号(即将废弃)返回数据窗口控件当前列的列号返回数据窗口控件当前列的列名创建指定服务(包括ContextInformation, Internet以及Keyword)的上下文相关实例返回数据窗口控件指定图形,指定序列和指定数据点的值返回饼图中切开部分所占的百分比得到统计图中数据点的外观数据.序列中的每一个数据点都可以有不同的外观设置.该函数有3种语法形式得到数据窗口控件指定统计图,指定序列和指定数据点的值返回数据窗口控件指定列的显示格式返回数据窗口控件中指定行,指定列的Date型(日期型)数据值返回数据窗口控件中指定行,指定列的DateTine型(日期时间型)数据值返回数据窗口控件中指定行,指定列的Decimal型(十进制数字型)数据值返回数据窗口控件中指定行,指定列的数值型(包括decimal,double,Integer,Long或real)数据值返回数据窗口控件中指定行,指定列数据型的状态,有效值为 DataModified!, New!, NewModified!和NotModified!返回数据窗口控件中指定行,指定列的String型(字符串型)数据值返回数据窗口控件中指定行,指定列的Time型(时间型)数据值得到数据窗口控件中crosstab风格的数据窗口对象产生的消息文本(即将废弃)返回数据窗口控件指定缓冲区中位于指定行之后的第一个被修改过的行的行号返回一个字符串,字符串由列名或统计图对象名,tab字符(~t)和行号组成,指示当前鼠标指针位于哪个列或统计图对象的哪个行上返回父对象的名称返回数据窗口当前行的行号返回数据窗口控件中指定行之后的第一个被选行的行号返回统计图中某个序列的风格,该函数有四种语法格式返回当前数据窗口控件提交给数据库的SQL语句(即将废弃)返回数据窗口控件当前的SELECT语句返回数据窗口控件中悬浮在当前行,列之上的编辑框中的文本返回数据窗口事务对象的值将要被更新的行的行号保存在一个变量中,将缓冲区的类型保存在另一个变量中(即将废弃)返回数据窗口控件指定列的有效性规则得到数据窗口中指定列的值或代码表指定项的值让数据窗口控件重新计算分组隐藏数据窗口控件把系统剪贴板中的数据复制到数据窗口控件中把文件中的数据复制到数据窗口控件中把字符串中的数据复制到数据窗口控件中将超文本格式的文件或普通文件的内容插入到数据窗口控件中.利用该函数的参数可以指定下述插入方法:在插入点位置插入,取代现有的所有内容.这个函数只能应用与RichText风格的数据窗口在数据窗口控件指定行前面插入一行 返回值为当前行的行号当数据窗口控件中指定行被选择时返回Ture,当指定行未被选择或指定的行号大于数据窗口控件中的行数时返回False得到悬浮于当前行列上编辑框中数据的行数返回数据窗口控件中已经修改但尚未给新相应数据库表的行数修改数据窗口控件的属性将数据窗口移动到指定位置返回当前鼠标指针位于统计图的哪个区域并将相应的序列和数据点值保存到指定变量中将系统剪贴板的内容插入到数据窗口中"悬浮"于当前行/列的编辑框中将字符串中的超文本数据粘贴到RichText风格的数据窗口控件中返回当前鼠标指针离数据窗口控件左边缘的距离返回当前鼠标指针离数据窗口控件上边缘的距离返回数据窗口控件中悬浮在当前行/列的编辑框的插入点位置,对RichText风格的数据窗口控件返回当前插入点的行/列位置或所选文本的起始与结束位置将某个事件添加到数据窗口控件消息队列的尾部将数据窗口控件的内容发送到打印机上,这个函数有几种语法格式当数据窗口控件的内容发送到打印机后,该函数检查是否有要取消打印工作,查找到后,删除对应的脱机打印文件用指定字符串代替编辑框中所选内容访问数据库,重新选择所有被修改的列。
pb11新特性及增强内容
记忆Retrieval Arguments
仅在设计时有效 Composite样式的DW无效 新建的DW必须保存,退出再打开后才有效。
Powerbuilder11.0的其他增强内容
窗口控件的增强
增加了打开和关闭窗口的动画效果 增加了窗口透明度的属性
系统函数的增强
GetByteArray实现blob数据转化为byte数组。 Blob函数支持byte数组作为参数。 各种Trim函数增加第二个参数,可以去除任何空 白的符号,包括回车换行和TAB等。 SetFilter函数增加\s选项,对字符串的比较使用 Ascii模式,不加选项使用的是字典模式。例 如:”#2 >= 'a' and #2 < 'c' \s”
.NET Web Forms转化
1.新建.NET Web Forms Target
.NET Web Forms转化
选择转化的来源
Start from scratch(从空白开始) Use an Existing library and app object(使用 已存在的应用和对象) Use the library and app object from an existing target(从当前的workspace的某个 target转化)
.NET Web Forms转化
选择转化的来源后,根据选择的不同,后续操 作有所差异
选择从空白开始,要求输入新的应用的名称, library名称等,和建立其他类型的target相同。 选择已存在的应用和对象,需选择一个应用并提 供library list。根据选择的应用所使用的pb版本 在需要的情况下转化。 选择从当前的workspace的某个target转化则直 接选择当前workspace中的某个target
Pb函数大全及详解
一、数组函数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 dim LowerBound(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 dim LowerBound(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类型数据。
PB基础教程
软件开发工具_pb_自学指导孙勇第一章 PowerBuilder简介一、目的要求1.本课程在软件课程中的作用;2.信息系统的开发模式;3.掌握PowerBuilder的主要特性;4.初步掌握PowerBuilder开发环境;5.了解应用程序开发步骤;6.熟悉PowerBuilder的安装方法。
二、重点难点重点是PowerBuilder开发环境。
第一章PowerBuilder简介本章主要内容:本章中,首先扼要地介绍本课程在软件课程中的作用和信息系统的开发模式 PowerBuilder的主要特性,然后阐述集成开发环境的组成、各画板的功能、作用、定制开发环境的方法、对象的基本概念等,并在章尾介绍本课程的教学内容以及开发PowerBuilder应用程序的基本步骤。
自学内容:1.1本课程在软件课程中的作用在计算机专业中,软件教学占有非常重要的位置。
为了满足计算机职业岗位群的需要,近年来,我们对计算机网络专业和计算机程序员专业中的软件课程进行了相应的改革。
通过学习Word、Excel、FrontPage等常用软件使学生学会计算机的使用方法;通过学习C语言程序设计、数据结构等课程使学生掌握基本的程序设计方法;通过学习SQL Server使学生掌握网络数据库的设计方法和使用方法;通过学习网页制作和Java语言使学生能够编写网站应用程序;通过学习PB使学生能够编写客户端应用程序;通过学习软件工程使学生能够懂得软件开发的全过程,掌握编写软件的规范,为学生在“软件工厂”从事软件工作打下基础。
从以上分析可知,PB课程属于与职业岗位群直接有关的课程,在整个软件课程体系中占有比较重要的位置。
不同的软件课程应该采用不同的教学方法,根据软件的特点,我们把软件课程分成三种不同类型:1.程序设计类型。
这类课程需要讲的内容较多,讲的内容相对也比较完整,使用传统的“课堂教学+课后习题+上机实验”教学方式即能满足教学要求。
2.交互类型。
PB 11第11章 自定义函数和结构
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_”作前缀。这些 规则清楚地表明了函数所在对象的类型,便于程序的维护。
pb11新特性及增强内容
#1Pb11.1是当前pb的最新版本所有新特性都是相对于pb10.5而言#2Pb原有的target包括pb app相关的3个target(application 从空白新建立application,也是最常用的,existing application 对于低版本pb程序的转化,template application在模版的基础上建立application)jsp相关的2个target(区别仅是是否带有版本控制),服务器组建的target 因为app server plug-in而一分为二(easerver和其他server)。
这三种再加上新的.net转化,现在一共有4种pb的target。
其中,仅jsp的target不使用powerscript,pb11之后jsp target 将从pb中移到sybase的另一个产品workspace中。
数据库接口中,sql(snc)和sybase 的是新接口,其他仅是一些功能上的提升。
除了数据库接口,其他都要详细讲,数据库接口开发人员只是作为使用者。
#3Ellipsis就是英语的省略号,这样一行显示不下的数据可以在数据后显示省略号,该列得到焦点后,恢复正常显示。
如果你的程序想要转化.net webform的话,不要使用该属性,它属于转化后自动不被支持的属性之一,你如果想知道你的应用中都有哪些属性不被支持,那么你可以直接转化,pb11的另一个新特性,就是在消息输出区增加了unsupport feature,在转化时显示哪些特性不被支持。
Treeview样式的DW是pb10.5才出现的,估计还会逐步改善,个人感觉最需要改善的是他不能支持任意级别的数,只能支持固定级别的数原来的设置height=0,可以消除数据,但是不能消除连线,等于实际没法应用。
#4窗口可以同时指定打开和关闭的动画效果,可以指定效果的持续时间。
透明度可以指定一个1到100之间的数值,使窗口呈现半透明效果(0为不透明,数字越大透明度越高)例子中的过滤条件将留下小写a,b开头的纪录,但是如果不用/s选项,除了小写a,b字母开头的以外,大写A,B开头的纪录也将被留下。
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中文件操作函数大全()功能关闭先前用()函数打开的文件。
语法( fileno )参数fileno:integer,指定要关闭文件的文件句柄,该句柄使用()函数打开文件时得到返回值Integer。
函数执行成功时返回1,发生错误时返回-1。
如果fileno参数的值为NULL,那么()函数返回NULL。
()功能删除指定的文件。
语法( )参数:string类型,指定要删除文件的文件名,其中可以包含路径返回值Boolean。
函数执行成功时返回TRUE,发生错误时返回FALSE。
如果参数的值为NULL,那么()函数返回NULL。
()功能检查指定的文件是否存在。
语法( )参数:string类型,指定要检查存在性的文件的文件名,其中可以包含路径返回值Boolean。
如果指定文件存在时返回TRUE,不存在时返回FALSE。
如果参数的值为NULL,那么()函数返回NULL。
用法如果参数指定的文件被另一个应用加锁锁住,那么()函数也将返回FALSE。
()功能得到指定文件的长度(以字节为单位)。
语法( )参数:string类型,指定要得到其长度的文件的文件名,其中可以包含路径返回值Long。
函数执行成功时返回指定文件的长度(以字节为单位)。
如果指定的文件不存在,函数返回-1。
如果参数的值为NULL,那么()函数返回NULL。
()功能以指定的读写方式打开指定的文件,同时返回该文件的句柄。
语法({,{,{,{,writemode,{creator,}}}}})参数:string类型,指定要打开文件的名称,其中可以包含路径:枚举类型,可选项,指定文件打开方式。
有效取值为:?LineMode! - 缺省值,行模式;?StreamMode! - 流模式:枚举类型,可选项,指定文件访问方式。
有效取值为:?Read! - 缺省值,只读方式,这样打开的文件只能进行读操作;?Write! - 只写方式,这样打开的文件只能进行写操作?:枚举类型,可选项,指定文件加锁方式。
pb函数库之字符串操作函数
Fill()功能建立一个由指定字符串填充的指定长度的字符串。
语法Fill ( chars, n )参数chars:string类型,指定用于重复填充的字符串n:long类型,指定由该函数返回的字符串的长度返回值String。
函数执行成功时返回n个字符的字符串,该字符串以参数chars 中的字符串重复填充而成。
如果参数chars中的字符个数多于n个,那么使用chars字符串的前n个字符填充函数返回的字符串;如果参数chars中的字符个数少于n个,那么使用chars 字符串反复填充,直到返回的字符串长度达到n为止。
如果任何参数的值为NULL,Fill()函数返回NULL。
--------------------------------------------------------------------------------Left()功能得到字符串左部指定个数的字符。
语法Left ( string, n )参数string:string类型,指定要提取子串的字符串n:long类型,指定子串长度返回值String。
函数执行成功时返回string字符串左边n个字符,发生错误时返回空字符串("")。
如果任何参数的值为NULL,Left()函数返回NULL。
如果n的值大于string字符串的长度,那么Left()函数返回整个string字符串,但并不增加其它字符。
--------------------------------------------------------------------------------LeftTrim()功能返回指定字符串删除了左部空格后的字符串。
语法LeftTrim ( string )参数string:string类型,指定要删除左部空格的字符串返回值String。
函数执行成功时返回删除了string字符串左部空格的字符串,发生错误时返回空字符串("")。
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常用函数
pb常用函数弹出窗口:messagebox()基本写法:Messagebox('标题','内容')完整写法: MessageBox ( '标题','内容',图标,按键,默认值)设置焦点:setfocus()对象名.setfocussle_1.setfocus()用format菜单下的tab order命令可以修改焦点顺序。
把用户名和密码框分别设为10,20,确定按钮设为30就行了。
也可以用控件的setfocus()方法设置焦点。
触发事件:triggerevent()对象名.triggerevent()(1)函数作用:触发指定对象的指定事件,并且立即执行该事件中的脚本。
注意该函数和PostEvent的区别。
PostEvent不是立即执行,TriggerEvent 是立即执行触发事件的脚本。
(2)函数语法:objectname.TriggerEvent ( event{, word, long } )关闭窗口:Close()和CloseQuery()默认数据库链接变量:sqlcadw_name.settransobject(sqlca)链接数据库sqlca.sqlcode = 0 有数据\\ = 100 无数据链接数据库connect;一般用于程序open的时候,跟在数据库链接代码后面打开窗口:open( )open(win downame)关闭应用:halt close()halt closehalt 直接结束应用程序从ini配置文件中提取string数据profilestring('文件名,可以包含路径','主要字节','在主要字节下的关键字','如果找不到数据则返回的数据')断开链接disconnect;一般用于程序close的时候是否修改过:isrowmodified()if dw_1.modifiedcount()+dw_1.deletedcount()>0 then.......//数据窗口处于修改状态end if是否新增的:isrownew()数据窗口中的if函数if(true\false,'为true时返回的值','为false时返回的值',)如:if(isrownew(),'新',if(isrowmodified(),'改','旧'))插入空行:insertrow(0)dw_name.insertrow(0)通常配合插入行使用的是滚动行dw_name.scrolltorow(dw_name.insertrow(0)) \\滚动到插入行比如:int rowrow = dw_1.insertrow(0)//显示dw_1.scrolltorow(row)//使用dw_1.object.column[row]从数据窗口中提取数据:getitem( )dw_name.getitem\\string\date\......(row,'数据来源控件名')string dwcontrol.GetItemString ( long row,integer column {, DWBuffer dwbuffer, boolean originalvalue } )String dwcontrol.GetItemString ( long row, string column {,DWBuffer dwbuffer, boolean originalvalue } )getitem首先根据数据窗口不同的字段类型,有不同的函数。
ly_新标准C++程序设计教材11-20章课后题答案
新标准C++程序设计教材11-20章课后题答案第11章:1.简述结构化程序设计有什么不足,面向对象的程序如何改进这些不足。
答案:结构化程序设计的缺点:(1)用户要求难以在系统分析阶段准确定义,致使系统在交付使用时产生许多问题。
(2)用系统开发每个阶段的成果来进行控制,不适应事物变化的要求。
(3)系统的开发周期长。
面向对象的程序设计如何改进这些不足:面向对象程序设计技术汲取了结构忧程序设计中好的思想,并将这些思想与一些新的、强大的理念相结台,从而蛤程序设计工作提供了一种全新的方法。
通常,在面向对象的程序设计风格中,会将一个问题分解为一些相互关联的子集,每个子集内部都包含了相关的数据和函数。
同时会以某种方式将这些子集分为不同等级,而一个对象就是已定义的某个类型的变量。
2.以下说怯正确的是( )。
A.每个对象内部都有成员函数的实现代码B.一个类的私有成员函数内部不能访问本类的私有成员变量C.类的成员函数之间可以互相调用D.编写一个类时,至少要编写一个成员函数答案:C3.以下对类A的定义正确的是( )。
A.class A{ B.class A{private: int v; int v; A * next;public: void Func() {} void Func() {}} };C.class A{ D. class A{int v; int v;public: public:void Func(); A next;}; void Func() {}A::void Func() { } };答案:B4.假设有以下类A:class A{public:int func(int a) { return a * a; }};以下程序段不正确的是( )。
A.A a; (5);B.A * p = new A; p->func(5);C.A a;A&r =a ; (5);D.A a,b; if(a!=b) (5);答案:D5.以下程序段不正确的是(A)。
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:可选项,指定要