PB开发(1)

合集下载

PB编程技巧1

PB编程技巧1
cb_exit command button 退出程序
cb_continue command button 继续执行
cb_print command button 打印错误信息
this.SetItem (ll_row,"message" ,error.text) //错误信息
this.SetItem (ll_row,"where" ,error.windowmenu) //窗口/菜单
this.SetItem (ll_row,"object" ,error.object) //出错控件
在PB中记录系统出错日志
一个应用系统在用户测试和最初使用过程中,可能会发生一些程序员未意识到或未测出的系统错误,而业务人员往往很难清楚地向技术人员描述这些错误,导致错误信息稍纵即逝。这时,我们可用PowerBuilder应用对象的SystemError事件来处理,将出错信息写入日志文件,程序员根据这些错误信息对程序进行相应的修改。这在系统测试期间非常有效。
3、编写脚本
①在dw_error的Constructor事件中加入如下脚本:
// 显示系统错误信息并写入出错日志文件
long ll_row intli_file_no ll_row = this.insertrow (0)
this.SetItem (ll_row,"errornum",string(error.number)) //错误代码
"~r~n 出错时间 : " + string(today(),'yyyy/mm/dd') + " " + string(now())+ &

pb常用函数(一)(转)

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。

油层物理试卷1答案

油层物理试卷1答案

《油层物理》综合复习资料一、名词解释1.流体饱和度:储层岩石孔隙中某一流体的体积与孔隙体积的比值。

2.岩石的粒度组成:指构成砂岩的各种大小不同的颗粒的相对含量。

3.微分分离:使油藏烃类体系从油藏状态逐渐变到某一特定压力、温度状态,引起油气分离,并随着气体的分离,不断地将气体放掉(使气体与液体脱离接触)的过程。

4.露点:指温度(或压力)一定时,开始从气相中凝结出第一批液滴时的压力(或温度)。

5.相对渗透率:同一岩石中,当多相流体共存时,岩石对每一相流体的有效渗透率与岩石绝对渗透率的比值。

6.有效渗透率:同一岩石中,当多相流体共存时,岩石让其中一种流体通过的能力。

7.接触分离:使油藏烃类体系从油藏状态瞬时变到某一特定压力、温度状态,引起油气分离并迅速达到相平衡的过程。

8.润湿滞后:由于三相周界沿固体表面移动的迟缓而产生润湿角改变的现象。

9.迂曲度:流体质点实际流经的岩石孔隙长度与岩石外观长度之比。

10.孔隙结构:岩石中孔隙和喉道的几何形状、大小、分布及其相互连通关系。

11.贾敏效应:液珠或气泡通过孔隙喉道时,产生的附加阻力。

12.束缚水饱和度:分布和残存在岩石颗粒接触处角隅和微细孔隙中或吸附在岩石骨架颗粒表面不可流动的水的总体积占孔隙体积的比例。

13.残余油饱和度:被工作剂驱洗过的地层中被滞留或闭锁在岩石孔隙中的油的总体积占孔隙体积的比例。

14.泡点:指温度(或压力)一定时,开始从液相中分离出第一批气泡时的压力(或温度)。

15.波及系数:工作剂驱扫过的油藏体积与油藏总体积之比。

16.有效孔隙度:岩石在一定的压差作用下,被油、气、水饱和且连通的孔隙体积与岩石外表体积的比值。

17.流度比:驱替流体流度与被驱替流体流度之比。

二、作图、简答题1.请将描述地层油高压物性的参数随影响因素变化规律的表1补充完整(注:“↗”表示增大,“↘”表示减小;“Pb”为饱和压力)。

答:表1 地层油高压物性随影响因素的变化规律2.简要分析影响天然气在石油中溶解的因素。

pb生成dll

pb生成dll

编写dll的方法这里就不说了,反正就是写一堆的函数,这里主要解释一下使用PB编译,需要增加的文件。
第一个文件是sources文件,这里给出了一个sources文件的例子:
TARGETNAME=led
使用TARGETNAME来指示生成目标的文件名(不包含扩展名,扩展名PB会自动加上)
这个fuction。
一、首先用pb生成dll,步骤如下:
1.新建一个COM/MTS Component,一路next即可
2.完成后会生成一个project和一个不可视对象。
3.写一个函数name:f_change,返回值为long,参数al_a(long),代码如下: if al_a = 1 then return 1 else return 0 end if
RELEASETYPE=PLATFORM
RELEASETYPE指示该文件将要生成的类型,一共有五个取值:
SDK:使用该类型将使得生成的目标文件被存储到%_PUBLICROOT%\Oak目录,而lib文件被放置到%_PUBLICROOT%\Sdk目录
DDK:使用该类型将使得生成的目标文件被存储到%_PUBLICROOT%\Oak目录,而lib文件被放置到%_PUBLICROOT%\Ddk
第三个文件是def文件,下面是一个该文件的实例
LIBRARY led
生成的库(.lib)文件名(PB自动生成扩展名)
EXPORTS
mm_init
EXPORTS指定了需要导出的函数名称
建立好这些文件之后,选择PB的build菜单的open build releasee directory,到达所在的目录,执行build -c,如果没有错误,就按照我们的要求生成文件了

第1章PB概述

第1章PB概述

1.3 PB的基本概念
1. 画板

画板实际上就是完成一定功能的工具,PB的 开发环境就是由一系列集成的画板组成。比如 窗口画板用于定义窗口对象,用户对象画板用 于定义用户对象等。
数信学院 ● 曹靖
2、 库、工作区和目标



PB的所有对象都存储在扩展名为.PBL的pb库文件 中,对于大的应用,可以将对象分类存储在不同 的库文件中,一个pb应用可以有一个库文件,也 可以有多个库文件。 建立一个工作区将产生一个扩展名为.PBW的工作 区文件,该文件记录了工作区的信息。 在一个工作区可以建立多个目标,每个目标即为 扩展名为.PBT的目标文件,每个目标实际上就是 一个应用程序。
3、 对象、属性和事件


PB中的对象就是用来构造应用程序的各种部件。 同时,pb为这些对象规定了相关的属性和事件。 属性决定了对象的特征。 事件是外部作用在对象上的一个动作,这个动作 会触发一段程序的执行,从而完成相应的功能。
例如:汽车是一个对象,汽车的颜色就是其属性,踩刹车就 是一个事件,它触发了汽车的刹车装置,导致停车。 我们给一个按钮命名为“取消”,用鼠标单击按钮即可关闭 程序,那么此时,按钮就是一个对象,取消两个字就是按钮 的文本属性,鼠标单击就是一个事件。
数信学院 ● 曹靖
表: 控件属性
数信学院 ● 曹靖
(2). 窗口的部分代码
1)应用对象的open事件代码
Open(w_ex1)
2)按钮“计算”的事件代码如下图所示。
3)按钮“关闭”的事件代码
close(parent)
数信学院 ● 曹靖
(3). 运行
单击工具栏Run按钮, 就可以运行该程序,
数信学院 ● 曹靖

pb数据窗口绝对技巧 (1)

pb数据窗口绝对技巧 (1)

PB数据窗口绝对技巧1、如何让存储文件目录的列,显示图片?选择对应的column的display as picture属性为true。

2、如何复制grid类型的所选择的行的数据到系统剪切板?string ls_selectedls_selected=dw_1.Object.DataWindow.Selected.Dataclipbord(ls_selected)3:如何改变GRID数据窗口列位置(新手常见)先preview,然后在预览窗口拖动位置即可。

4、如何设置DW的底色?在DW的editsource中改变color的值。

5、如何将Grid风格改成自由格式?在DW的editsource中将processing=1的1改为0。

6、要新建一个表A但风格和现有表B风格一样,怎么将A表快速设置成表B风格?复制B表C,在C表的DW中的editsource中将表名和字段名改成A表的,即可。

7、如何实现gird风格的datawindow的多栏表头?添加text到header带区,并设置band属性为foreground保存,edit source修改tex t的x和width属性表达式如下:x="100~t integer(describe('firstcol.x')" width="100~tinteger(describe('lastcol.x')) - int eger(describe('firstcol.x')) +integer(describe('lastcol.width'))8、如何过滤dddw编辑风格的显示值为指定值的记录?dw_1.setfilter("lookupdisplay('column_name')='"+ls_display_value_your+"'")dw_1.filter()9、如何设置datawindow的某一列为空?string ls_temp[]setnull(ls_temp)dw_1.object.columnname.primary.current=ls_temp10、如何设置datawindow的单双行不同颜色间隔?在detail带区的color属性表达式中写上if(mod (getrow(),2)=1 ,rgb(255,0,0),rgb(0,25 5,0)),如果是当前行以第三种颜色表示,表达式如下:if(getrow()=current(), rgb(255,0,0),if(m od(getrow(),2)=1 ,rgb(0,0,255),rgb(0,255,0)))11、如何获取指定名称的datawindowobject?DWObject ldwo_use,ldwo_abc ldwo_use = dw_1.Object ldwo_abc = ldwo_use._ _get_attribute("t_1",FALSE)//t_1为datawindow中text对象的名称12、如何缩放datawindow的打印大小?dw_1.object.datawindow.zoom=150 or dw_1.object.datawindow.zoom=7513、如何在已过滤后的数据基础上对datawindow进行过滤?dw_1.setfilter(dw_1.describe("datawindow.table.filter")+your_join+your_new_filter) dw_1.filter()14、如何在datawindow中显示动态时间?建立一个计算域,表达式为string(datetime(today(),now()),'yyyy年mm月dd日hh点mm分ss秒'),同时设置datawindow的属性dw_1.Object.DataWindow.Timer_Interval=50 015、如何让带用title bar的datawindow控件的标题栏呈活动窗口的颜色?外部函数定义:funcation logn SetActiveWindow(long hwnd ) Library "user32.dll"datawindow控件的clicked事件代码:setactivewindow(handle(this))16、如何设置datawindow的当前行指示图标?在datawindow中建立一个计算列,expression为'',并将该计算列移动为datawindow 的第一个列,在datawindow控件的rowfocuschanged事件中写入代码:SetRowFocusIndicator(hand!)或setrowfucsindicator(p_1)//p_1为窗口上的picture控件名17、如何通过代码打开dddw?定义外部函数引用声明:SUBROUTINE keybd_event( int bVk, int bScan, int dwFlags, int dwExtraInf o) LIBRARY "user32.dll"代码如下:constant integer VK_F4 = 115dw_1.SetFocus()dw_1.SetColumn( "dept_head_id" ) // 设置当前dddwkeybd_event( VK_F4,0,0,0 ) // 按下F4键keybd_event( VK_F4,0,2,0 ) // 释放F4键18、如何打印datawindow的内容到文件中?dw_1.object.datawindow.print.fileName ="c:\temp.prn"dw_1.print()19、如何设置dddw的初始值?dw_1.object.columnname.Initial="your_initial_value"20、如何只显示不同的数据?dw_1.filter("isnull(columnname[-1]) and columnname<>columnname[-1]")dw_1.filter()21、如何让带有title bar的datawindow不可以移动?在datawindow的自定义事件ue_nchittest(pbm_nchittest)中写入如下代码:return 122、如何在N-UP显示风格中建立基于第N栏中的列的计算列?如column有两列,number和price ,并显示为两栏,则第一栏的cost计算列的expr ession为number*price,第二栏的cost_1计算列的expression为number[1]*price[1] 23、如何清空ddlb或edit.codetable中项目?dw_1.Object.columnname.Values=""24、如何实现指定的column的字体旋转90度?dw_1.object.columnname.font.Escapement ="900"25、如何获取datawindow的sql代码?可以通过以下四种方法获取sql代码:string szselectszselect=dw_1.describe("datawindow.table.select")szselect=dw_1.describe("datawindow.table.sqlselect")szselect=dw_1.describe("datawindow.table.select.attribute")szselect=dw_1.getsqlselect()26、如何获取datawindow对象占有的虚拟存储的容量?使用datawindow.storage属性举例:在datawindow控件的retrieverow事件中,写入如下代码:long lstoragelstorage=long(dw_1.object.datawindow.storage)if lstorage>50000 then dbcancel()27、如何连续在同一张纸打印两个数据窗口?dw_1.object.datawindow.print.filename="temp.prn"dw_2.object.datawindow.print.filename="temp.prn"dw_1.print()dw_2.print()28、如何设置datawindow分组后每个分组中的记录号?建立一个计算列,expression为getrow() - first(getrow() for group 1)+129、如何实现在datawindow中只有新增的行,才可以编辑?在所有的column的protect属性表达式中写入以下表达式:if(isrownew(),'0','1')30、除了循环以外,有没有更好的方法统计数据窗口中处于选中状态的行数?一般习惯于使用循环来统计数据窗口中处于选中状态的行数,有没有更好的方法?其实此问题在应用上用处不大,讨论一下,活跃一下思维还是有好处的。

PBII第2章(1-2)

PBII第2章(1-2)
20
1.2 相关语句或函数
用法:在应用程序创建了OLEObject对象实例并连接到OLE对 象和OLE服务器应用程序之后,应用程序就可以设置服务器支持 的属性和调用服务器支持的函数了。PowerBuilder编译程序并 不检查OLEObject变量属性访问和函数调用的语法,但是,如果 这些属性或函数在程序运行时不存在,将引发运行错误。 在创建了OLEObject对象实例后,在该变量失效之前必须及时 删除该对象。当应用程序删除OLEObject对象实例时,它断开与 服务器的连接并关闭服务器。如果OLEObject变量失效后该对象 没有被删除,那么就没有正常办法来终止服务器应用程序了。
6
1.1 相关系统函数
示例:下面的代码显示打开文件对话框,之后打开用户选择 的文件,对话框中显示TXT 和DOC 类型的文件。如图2-1所示。 String docname, named Integer value value = GetFileOpenName("打开文件",docname, & named, "DOC", & "文本文件(*.TXT),*.TXT , Doc 文件(*.DOC),*.DOC" ) If value = 1 Then FileOpen(docname) ……
19
1.2 相关语句或函数
返回值:Integer型。函数执行成功时返回0,发生错误时返 回下述值之一:
-1 无效调用,oleobject对象变量名是某个OLE控件的Object属性 -2 未找到指定的类名 -3 不能创建对象 -4 不能连接到对象 -5 不能连接到当前活动对象 -6 无效的文件名 -7 未找到指定文件或指定文件不能被打开 -8 服务器不支持指定文件 -9 其他错误 -15 本计算机上未加载MTS -16 无效调用该函数不使用于OLETxnObject 对象 如果任何参数的值为NULL,则ConnectToObject()函数返回NULL。

PB-1的应用研究

PB-1的应用研究

聚丁烯-1结晶行为的研究于东明,赵国书,秦岚摘要聚丁烯-1(PB-1)属于多晶型聚合物,晶型转化速度缓慢,本文通过对PB-1结晶过程的显微观察、DSC分析、对试样性能测试、对样品尺寸测量等,揭示了PB-1结晶行为及其影响,对指导生产实践具有重要意义。

关键词聚丁烯-1 结晶形态晶型转化1、前言PB-1是1954年开始研究,上世纪七十年代初工业化,四十余年来,全世界制造商目前仅有荷兰、日本和韩国三家,其总产能仅数万吨/年。

如果说早期Bt-1比较少,价格高,PB-1的聚合也比较困难,PB-1的价格高一些是可以理解的。

而今,事情已发生根本性的变化,我国在寿光建成的万吨级示范生产线不同于国外溶液法合成,聚合工艺复杂,成本高,而是采用本体沉淀法,聚合工艺简单,成本低,今年也将加入PB-1制造行列。

业内人士透露,国产PB-1成本与PP相近,如果真是这样的话,我国发展PB-1的步子应加大,8~10万吨/年不嫌其少,30~50万吨/年不嫌其多,众人拾柴火焰高,人们期待会有所突破。

此前,PB-1发展速度缓慢,其价格高昂是主要原因,国产PB-1的出现,价格的彰碍将不复存在。

其性能存在缺陷,虽不是影响其发展速度的主要原因,但其影响也是不可忽略地。

PB-1的性能包括加工性能和使用性能等,如对缺口敏感,直接影响到其使用性能,再如其结晶速度缓慢,即影响到其加工性能,又严重影响到其使用性能。

青岛科技大学等对PB-1的加工做了大量的探索性研究,对PB-1的推广应用具有一定参考价值,但总体看,PB-1的加工与应用研究有待加强。

筆者有兴涉足PB-1的应用研究,简介如下:注:研究用PB-1分别取自三个不同牌号,为方便计,文内在可能的条件下,隐去了具体牌号。

2、聚丁烯-1结晶形态及变化聚丁烯-1树脂为多晶型聚合物,管道级聚丁烯-1树脂结晶度为48%~55%,已知其有五种结晶形态变异,分别为晶形I、晶形II、晶形III、晶形I´和晶形II″五种。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第三部分用PowerBuilder开发数据库应用系统第一章 P owerBuilder简介●介绍PB的特点;●应用程序的组成,开发步骤;●PB开发环境●一个应用程序实例一、 PB的特点1.什么是PB?●PB是一个图形界面的,面向对象的数据库应用系统开发工具;●能够开发功能强大的,运行在多个平台的,能够操作多个数据库的应用系统;●可以开发客户/服务器、分布式、Internet应用系统。

(1) 客户/服务器结构:(双层)●这种结构的核心是当前端用户(客户工作站)需要后台服务器的服务时,仅发出请求;而服务器接收请求后,执行相应的功能,并把满足条件的那部分数据反馈给前台客户端;●数据库服务器上的DBMS集中负责管理数据库服务器上的数据和资源,它向客户端提供一个开放的使用环境,客户端的用户通过数据库接口和SQL语言访问数据库;也就是说,它只要能通过网络协议和数据库接口程序连接到服务器,就可以对数据库进行访问;●在此结构中,应用程序和应用逻辑可以根据需要划分在服务器或客户工作站;(2) 多层客户/服务器结构:(分布式结构)●有三个逻辑层,客户层是面向用户服务的,把数据和应用呈现给用户的逻辑,在客户端实现,中间层是面向商业规则的,在应用服务器上实现,服务器层是面向数据服务的,在数据库服务器上实现;●强调组件开发,相对独立的组建模块安排在服务器上,供所有的客户端应用程序访问;(3) Internet应用系统●处理分三层,类似于多层客户/服务器结构;●商务和表现服务驻留在Web服务器上,而客户使用简单的浏览器,这种结构可支持任何配有浏览器的客户机。

2.提供强有力的开发环境●用它来建立用户容易使用的各种应用程序;●开发人员还可以通过PB修改他们的数据库;●PB为应用的开发提供了全面的综合性的支持,概括如下:(1) 事件驱动的应用程序●PB的应用程序是事件驱动的,即用户通过各种动作控制应用程序的流程;●用户可以通过编写脚本来说明当事件触发时,要完成的处理过程;●用户通过PB创建的窗口、控件和其它对象都是一个预定义的事件集合;●通常情况下,预定义的事件即是用户所需的,然而,有些情况下可能需要定义自己的事件;(2) 功能强大的PowerScript语言●在PB中,所有应用处理逻辑都是用PowerScript语言编写的,它是PB的专用程序设计语言,用它编写的程序通常被称为脚本;●脚本是由PB的命令、函数和语句等组成,脚本的执行是由事件触发的;●PB提供了丰富的内置函数,利用它们可以对应用程序的各种对象和控件进行处理,用户还可以自定义函数;(3) 面向对象的编程●在PB中创建的每一个菜单或窗口都是一个称作“对象”的独立模块;●PB的应用程序是由这样的对象“搭建”起来的,每个对象都有特定的特征和行为(属性,事件和函数);●PB是面向对象的开发工具,在对象中对继承,封装和多态性等面向对象的程序设计技术提供了全面的支持;●开发人员可以利用这些技术有效地利用创建的每一个对象,使应用程序具有可重用性,可扩展性;(4) 支持交叉平台开发●在Windows下利用PB开发的应用程序,可以将该应用程序分发到UNIX平台上运行,反之亦可;(5) 与数据库的连接性●PB提供了与底层数据库系统紧密的连接;●PB支持不同的RDBMS,可以访问多个数据库的信息显示在一个窗口内;●开发人员可以利用内置的高性能数据库引擎Sybase SQL Anywhere 生成脱离服务器运行的应用,在此之上开发的数据库应用程序只需简单地改变数据库接口就可以方便地运行于指定的数据库上●PB存取数据库的方式有两种:ODBC接口,专用的直接与数据库相连的接口,JDBC二、 理解PowerBuilder对象●PB包含大量对象:窗口,菜单,数据窗口,事务对象,消息对象,错误对象等;●对象的三个特性:(1) 属性:用来描述对象的特性●查看,修改对象的属性:定义对象时:Properties窗口在程序代码中:对象名.属性=属性值(2) 对象函数(方法):用来在程序中操纵对象●对象函数封装在对象内部,实现步骤,细节用户既看不见,也不能●大多数对象函数都有返回值,用来指示函数的执行情况;对象函数的引用方法:对象名.函数名(参数,…..) (3) 事件:指可能发生在对象上的事情●在Windows系统中,用户的所有操作都由系统自动转化为某个事件;●为了简化应用程序的开发,大多数的PB对象都预先定义了一组事件;●如果想对某个事件作出反应,那么需要编写该事件的事件处理程序;●除了用户操作能产生事件外,程序本身也能够主动地触发事件;三、 PB的开发方法●PB应用程序和其它Windows应用程序一样,由两大部分组成:用户界面:用户通过窗口,菜单,窗口上的各种控件等界面元素操作应用程序;应用处理逻辑:通过事件和函数中的程序代码来实现的;●传统开发工具考虑的是程序流,开发思路是控制流;●PB考虑的是对象,开发思路是“事件驱动”●PB开发的实质:定义对象和控件及其属性;定义对象和控件上某个事件发生时要执行的程序;●PB开发流程:其中,建立应用对象需要在应用开发的一开始就要完成;其它步骤可按任意次序进行;四、 PB应用程序●PB应用程序是相互关联的对象集合体,介绍主要对象类型:(1) 应用对象●是整个应用程序的入口点,它包含特定应用程序中的所有其它对象;●应用程序对象定义应用程序级的行为,例如指定用于存储应用程序中各种对象的PB库;●当用户启动应用程序时,会触发应用对象中的一个OPEN事件,当用户终止一个应用程序时,会触发应用对象中的一个CLOSE事件;(2) 窗口对象●窗口是用户和PB应用程序之间的主要接口;●窗口可以显示信息,接收用户信息,以便响应用户鼠标或键盘的操作;●窗口对象代表PB应用程序的主要成分,其它对象(菜单,数据窗口及用户对象)只有加到窗口上,才能加到一个应用程序中;●一个窗口通常有以下几部分组成:属性:定义窗口的外观和行为事件:由用户动作触发控件:位于窗口中(3) 数据窗口●数据窗口是一个用来检索和操纵来自一个关系型数据库或其它数据源中数据的对象;●数据窗口对象是独立生成的对象;●为了把数据窗口对象与一个窗口对象相关联,必须在窗口上放置一个数据窗口控件,然后将一个数据窗口对象加到该数据窗口控件上;(4) 菜单●菜单是用户可在当前活动的窗口中选择的命令或选项的列表;●菜单中的菜单项通常是与命令相关的;●PB中定义的菜单,其工作完全与标准操作环境中的菜单是一样的;(5) 用户对象●如果发现在重复地使用程序的某一特性时,就应定义一个用户对象;●用户对象可以定义一次,而后多次使用;●可视用户对象:具有某一致行为的可重复使用的控件或控件集合;●类用户对象:不具有可视成分的,可重复使用的处理模块,通常使用类对象定义商业规则和其它完成某些功能的处理过程;(6) 全局函数●对象级函数:为某一个特定类型的窗口,菜单而定义的;●全局函数:作为一个独立的对象存储,用来完成一些通用的处理;(7) 查询●是以一个名字存储的SQL语句,它可以作为数据窗口对象中的数据●被编码后可以重复使用;(8) 结构●一个或多个相同的或不同的数据类型的相关变量构成的汇集,以单一名称出现;对象级结构;全局结构;(9) 库●存储利用PB建立的对象的地方;●与应用程序有关的对象和成分存放在PB库中,对应.PBL文件;●当建立一个应用程序时,PB要求建立一个库;●当运行应用程序时,PB会从库中检索对象;●一个应用程序可以使用多个库;(10)工程●创建工程对象,可以把应用程序中的所有对象都包含到独立的可执行文件中,编译成一个可执行文件;五、 连接数据库●PB是专为数据库系统设计的前台应用开发工具,可支持绝大多数目前广泛使用的RDBMS;●PB通过各种不同的数据库接口软件连接到不同的数据库上;●PB到数据库的接口软件:通用的ODBC接口软件;专用的数据库接口软件;(1) ODBC:Open Database Connectivity 开放式数据库连接●微软公司提出的允许应用程序使用SQL语言查询数据库的标准;●该接口许可最高的互操作性,即单一的应用程序可以访问不同的DBMS;●允许开发人员开发,编译和发布应用程序,而不必针对特定的DBMS,随后用户可通过加载连接到不同数据库的驱动程序,建立应用程序与所选择的数据库系统的连接;●ODBC体系结构由四个部分组成:应用程序,驱动程序管理器,驱动程序和数据源;(2) 通过专用接口连接PB到各种数据库●是为某种数据库设计的接口软件;●通过ODBC连接到数据库的方式运行速度较慢;(3) 与数据库的连接:PB在设计或运行应用程序时,都要连接到数据库●通过ODBC可以和本地小型数据库或后台的各种大型数据库进行连接;第一步:创建数据源第二步:配置数据库连接参数(建立数据库配置文件)配置文件:命名了一组连接到特定数据源或数据库的参数,该参数存放在PB.INI中;设置好的数据库配置文件的名称将出现在相应的数据库驱动程序的名称下;在Preview选项卡下查看连接的数据库的参数设置语句,并且可以将这些语句方便地拷贝和粘贴到相应的应用程序中;六、 PB的集成开发环境●PB给开发人员提供一个集成环境,应用的各种成分,包括窗口,菜单,应用逻辑,数据库存取,数据库声称,图形,报表等全能在PB内开发;●PB包括强大的编译能力,集成调试,测试功能;(1) 画笔(PAINTER)在PB中,所有对象的创建和修改都是由Painter完成的;●打开画笔:新建对象继承或打开已有对象时;在库画笔中双击需编辑的对象也可打开编辑此对象的画笔;(2) 调整画笔中的各个视图●打开视图:通过画笔中的View菜单●视图的组成:窗格句柄,标题栏,图钉按钮●调整视图:移动窗格的位置,将几个视图合并到一个窗格中,每个视图对应窗格的一个页;●保存调整的视图;●恢复系统的缺省状态;●关闭视图:●常用视图:布局,属性,脚本,事件列表,函数列表,控件列表,结构列表;(3) PB工具条PowerBar:第一级工具条,用于打开画笔和工具;PainterBar:用于在当前画笔中完成特定的任务,不同的画笔拥有不同的PainterBarStyleBar:用于改变窗口,数据窗口,可视用户对象中当前对象的文本属性;(4) 新增辅助开发功能:●TO-DO LIST用法:显示当前应用中的一系列开发任务,可直接切换到某项任务的开发现场;●自定义菜单快捷键:可以根据自己的习惯为系统菜单项定义键盘快捷键;七、 第一个PB应用程序●通过一个实例介绍PB应用程序的开发步骤;●理解PB建立一个应用程序的过程和方法;1.应用程序开发实例(1) 建立应用对象;(2) 连接数据库;(3) 创建窗口对象;(4) 数据窗口对象;(5) 窗口上增加数据窗口控件;(6) 增加排序功能:控件,排序函数,事件代码2.如何利用数据窗口显示数据?(1) 建立一个数据窗口对象;(2) 建立一个窗口,放置数据窗口控件;(3) 指定数据窗口对象到窗口上的数据窗口控件;(4) 将用连接的数据库的信息指定给事务对象(SQLCA)(5) 用CONNECT命令连接数据库和事务对象;(6) 利用SetTransObject()连接数据窗口与事务对象;(7) 利用Retrieve()从数据库读取数据;3.事务对象●事务对象是用来联系应用程序和数据库的;●它的作用是为PB的应用程序和数据库提供一个通信区;●用户若要对数据库进行访问首先要创建一个事务对象,并与相应的数据库和数据窗口连接,这样用户才可以根据自己的需要对数据库进行操作;●用户可以根据需要使用默认对象SQLCA或者自定义事务对象;●SQLCA(SQL Comunication Area):PB提供给用户的全局事务对象,也是最常用的事务对象;●PB设置它为默认的事务对象,在用户没有选择其它事务对象时,系统会认为选用的是SQLCA;●事务对象共有15个属性,其中10个属性用于连接数据库;5个属性用于返回信息;●返回信息的属性:SQLCode:指示SQL的操作失败或成功0:无错误-1:有错误100:没有错误但无数据SQLDBCode:返回DBMS错误码,大多数厂商设定0:成功100:没有找到数据负数:错误事务对象和数据库连接的代码示例:// Profile studentSQLCA.DBMS = "ODBC"SQLCA.AutoCommit = FalseSQLCA.DBParm = "ConnectString='DSN=student'" //设置数据库连接参数 CONNECT USING SQLCA;//试图连接数据库If sqlca.sqlcode=0 thenOpen(w_main)ElseMessagebox(“警告”,”数据库连接错误”)Endif。

相关文档
最新文档