ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:31.87KB ,
资源ID:7139743      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7139743.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(PFC的数据类型及命名规则.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

PFC的数据类型及命名规则.docx

1、PFC的数据类型及命名规则 PFC的数据类型及命名规则一.对象名称定义pfcobject_type_objectname其中,pfcobject为PFC_时,表示为PFC级别,否则为PFE级别(扩展级别)type包含以下类型:类型说明类型说明m_菜单n_标准用户对象类n_cst可定制的用户对象类u_可视用户对象w_窗口s_全局结构二.变量名称定义_varialbenameScorpe为以下值之一类型说明类型说明g全局变量 i实例变量l局部变量 s共享变量简单变量的Type为以下值之一类型说明类型说明a Any blb Blobb Boolean chCharacterd Date dtmDat

2、eTimedc Decimal dblDoublee Enumerated iIntegerl Long rReals String tmTimeuiUnsignedInteger ulUnsignedLong指针变量的Type值为以下之一类型说明类型说明appApplicationabArrayBoundscbxCheckBoxcbCommandButtoncdClassDefinitioncdoClassDefinitionObjectcnConnectioncninfoConnectionInfocnoConnectObjectcxkContextKeywordcxinfoContext

3、InformationcppCplusplusdsDataStoredwDataWindowdwcDataWindowChilddrgDragObjectdrwDrawObjectddplbDropDownPictureListBoxddlbDropDownListBoxdwoDWObjectddaDynamicDescriptionAreadsaDynamicStagingAreaedEnumerationDefinitioneidEnumerationItemDefinitionemEditMaskenvEnvironmenterrErrorextExtObjectgrGraphgoGra

4、phicObjectgraxGrAxisgrdaGrDispAttrgbGroupBoxhsbHorizontalScrollBarinetInetirInternetResultlnLinelbListBoxlvListViewlviListViewItemmfdMailFileDescriptionmmMailMessagemrMailRecipientmsMailSessionmdiMDIClientmMenumcMenuCascademsgMessagemleMultiLineEditnvNonVisualObjectocOleControlooOleObjectostgOleStor

5、ageomcOmControlomccOmCustomControlomecOmEmbeddedControlomoOmObejctomstmOmStreamomstgOmStorageovalOvalpPicturepbPictureButtonpbcppPBToCPPObjectplbPictureListBoxplPipeLinepoPowerObjectprocallProfileCallproclassProfileClassprolnProfileLineprortProfileRoutineproProfilingrbRadioButtonrecRectangleremRemot

6、eObjectrteRichTextEditrrecRoundRectanglerteoRteObjectscrdScriptDefinitionsleSingleLineEditsrvServicestStaticTextstdSimpleTypeDefinitionstrStructuretabTabtabpgTabPagetcanTraceActivityNodetcbeTraceBeginEdntcerrTraceErrortcfTraceFiletclnTraceLinetcgcTraceGarbageCollecttcoTraceObjecttcrtTraceRoutinetcsq

7、lTraceSQLtctTraceTreetctnTraceTreeNodetcterrTraceTreeErrortctsqlTraceTreeSQLtctgcTraceTreeGarbageCollecttctlnTraceTreeLinetctoTraceTreeObjecttctrtTraceTreeRoutinetctuTraceTreeUsertcuTraceUsertdTypeDefinitiontrTransactiontrpTransporttvTreeViewtviTreeViewItemuoUserObjectvrcdVariableCardinalityDefiniti

8、onvrdVariableDefinitionvsbVerticalScrollBarwoWindowObjectwWindow三.函数名称定义全局函数以f_开头,成员函数以of_开头。PFC的详细介绍PowerBuilderFoundactionClass(PFC)是SyBase公司提供的一整套PB对象。整套对象都基于面向对象原则。PFC不同于VC的MFC、BC的OWL、Delphi的VCL。MFC、OWL、VCL都是较底层的类库。它们为WINDOWS编程提供了基本的控件、对话框等,它们都主要着眼于封装WINDOWS的API,使得使用它们的人可以不必了解API以及一些Windows结构、Wi

9、ndows消息的细则即可以编写出WINDOWS下的应用程序。也就是说这些类库适合各种类型的WINDOWS应用程序。PFC是专门为PB而设计,PFC专门为数据库应用软件而设计。它有明显的针对性。它提供了几乎所有作为一个数据库应用软件开发而需要的代码。举一个最简单的例子:作为数据库应用程序不可避免的都得具备保存数据的功能。如果你使用PFC,你继承PFC的窗口、PFC的菜单、PFC的DataWindowControl,将它们连在一起后,你无须编写任何代码。点击菜单上的保存,DataWindow中的数据很自然的保存起来了,并且当数据被更改后用户没有保存数据而直接关闭窗口时,窗口很自然的会出现提示框要求

10、保存数据。所有的这一切,你都无须编码。你只要确认你的对象是PFC的子类即可,所有PFC的父类中已经替你完成。所以可以知道PFC的着重点并不是如何实现一个窗口控件,如何封装WINDOWSAPI(与MFC、OWL、VCL的不同之处),而是为了实现作为数据库软件而应该具备的各种公共的功能。因此可以说PFC是更高一级的类库(其实PB中的各种标准控件、窗体、按钮、图片框等等都是利用MFC开发出来的),它更加贴近应用程序的开发。使用PFC开发程序只需要更少的代码、更容易PFC的对象分布在Sybase公司发行的10个PBLs中。因此你完全拥有PFC的所有源代码。你可以随心所欲的更改父类脚本,你还可以从中学到

11、许多的PB高级技巧。1PFC的面向对象特性PFC是一个完全面向对象的类库。它涵盖了继承、封装、多态、函数覆盖、函数重载,所有面向对象应该具备的特性它都有。它的面向对象都体现在如下几点。l继承:PFC中的对象全部都是息息相关,绝对不存在一个独立的对象,任何一个对象都是整个类库链中的一员。l封装:PFC中的所有对象都封装了许多函数、实例变量。并且设有相应的访问权限(PFC没有一个Private类型变量)。对于那些可读的变量PFC都设有of_GetVariablename函数,对于布尔类型的变量PFC都设有of_IsVariablename函数。对于可修改的变量PFC都设有of_SetVariabl

12、ename函数。在某些情况下PFC还将变量直接设成Public类型的变量供我们直接修改。l多态:PFC在许多地方都用到了多态。例如PFC中的FileService就是一个典型的例子。FileService有一个祖先n_cst_filesrv。其中定义了FileService的所有函数,但是其中没有任何代码。真真的代码在pfc_n_cst_filesrv子类中实现。例如关于WIN32操作系统的文件管理函数则被在n_cst_filesrvwin32类中实现、关于UNIX的文件管理函数则被在n_cst_filesrvUnix中实现。通过这种多态的利用便实现里跨平台的代码。开发人员使用的FileSer

13、vice的类永远是n_cst_filesrv,PFC会自动的根据不同的操作系统创建不同的n_cst_filesrv的子类来完成不同操作系统下的文件管理。而所有的这一切,PFC开发人员都不需要知道。这就是PFC的多态的一个典型的运用。下面是PFC的一个简要的继承关系图:2PFC的体系结构-Service-BasedArchitecturePFC采用的是一种新的体系结构-基于服务的体系结构(Service-BasedArchitecture)。PFC类库设计核心就是面向服务的设计。服务(也叫Service)实际上就是PFC提供的一套功能。PFC中的服务实际上都是不可视的用户自定义对象,不过有的服务

14、也涉及到一些可视对象,例如下拉日历与下拉计算器。这些用户自定义对象中封装了许多函数、事件、属性等等。通过调用这些函数、事件即可完成我们想要的功能。例如WINDOWS的Resize服务。通过调用Resize服务的注册函数,注册那些需要Resize的控件,这样当窗口发生Resize事件时窗体将自动的触发Resize服务的代码。Resize服务将会依据窗口大小的变化调整那些注册过的控件的位置与大小PFC的Resize全部替我们完成了。而且它的实现全部在n_cst_resize用户自定义对象中。这就是PFC的服务结构,一个服务就是提供了一套完整功能的不可视用户自定义对象。而且所有的这些对象都不是孤立的

15、,它们都在PFC的类库链上。PFC提供的服务有很多。下面做一个简要的介绍:PFC的服务分五大部分:应用程序服务(ApplicationServices)窗口服务(WindowServices)数据窗口服务(DataWindowServices)数据存储服务(DataStoreServices)全局服务(GlobalServices)。2.1应用程序服务A.错误消息服务(ErrorMessageService)错误消息的处理是所有应用程序都必须具备的功能。好的错误处理可以提高软件的可靠性、稳定性、加快软件的测试速度等等。PFC提供的错误消息处理就非常好。它允许开发人员为各种错误消息定义级别,当程

16、序出现大于某一级别的消息时错误消息服务将会自动将错误消息记录到错误日PFC的错误消息服务现在还具备邮件功能。这样当用户在使用软件是出现了错误后,PFC的错误消息处理将会把发生的错误消息邮寄给开发人员。这种错误消?BR拇 矸浅视糜谌禾蹇 ? 嗽庇氩馐匀嗽倍荚谝桓鼍钟蛲 匣蛟贗nternet上,软件发生的错误将会及时传到开发人员的手中。PFC的错误消息服务还提供了一种预定义消息的机制。开发人员可以利用数据库保存预定义的消息。将各种消息预先在数据库中定义好,定义好显示的内容、标题、图表、按钮等。当要显示时只需指定要显示的消息ID。这种预定义消息机制为应用程序显示一种统一的消息而提供了方便。同一类型的

17、消息显示的都是类似的提示(可能具体参数不一样)。同时消息的修改也方便了许多。不必再需要从大量的代码中寻找需要修改的消息。这就是PFC提供的一个非常有用的服务之一,PFC中存在大量的这种服务。B.应用程序安全服务(SecurityService)大部分的数据库应用软件都必须得进行应用程序的安全控制。PFC的应用程序安全服务为你完成了大步部分的安全管理。你可以使用PFC提供的安全扫描器定义你为了实现安全控制而涉及的对象。安全扫描器会将需要进行安全控制的对象记录到数据库中(PFC提供了5个用于实现安全控制的表)。PFC还提供了用于设置用户使用权限的模块,你只需针对具体的应用稍做修改即可使用。然后你只

18、需开启安全服务,在需要进行安全控制的窗体、菜单、数据窗口的构造事件中调用gnv_app.inv_security.of_SetSecurity(this)即可。当然PFC的安全服务仍然存在缺陷,例如PFC提供的用户管理没有密码的设置。C.数据窗口缓存服务(DataWindowCaching)数据窗口的缓存服务为应用程序提供了一个缓存数据的功能。可以有效的减少对数据库的访问。提高应用程序的响应速度。使用该服务非常简单只需将DataWindow或者SQL语句注册一边即可。2.2窗口服务A.偏爱服务(PreferenceService)PFC的窗口偏爱服务提供了自动保存与恢复用户设置的功能。偏爱服务

19、一旦被开启,它会自动的记录窗体的大小、位置、工具条状态等与窗体相关的信息,当窗口再次被打开时偏爱服务会自动的恢复这些设置。所有这一切只需调用窗体函数This.of_SetPreference(True)即可。B.状态条服务(StatusbarSerice)PBMDI窗口提供的状态条非常简单。为此PFC专门提供了一个状态条服务。利用状态条服务,可以设计出功能强大的状态条。例如你可以在状态条上显示图标,并可以响应事件。可以在状态上显示时间,可以显示进度条等,还可以显示其他的一些与系统相关信息,例如:剩余内存。2.3数据窗口服务数据窗口是PFC最重要的一部分也是使用得最多的服务。A.下拉数据窗口查询

20、服务(DropDownDataWindowSearchService)下拉数据窗口查询服务提供了一种自动滚动到首字符与用户输入的字符相同的数据项上。例如:当用户输入A时,下拉数据窗口查询服务会自动的滚到以字符A开头的数据项上。B.高级查询服务(FilterService)高级查询服务提供了一种非常灵活的查询方式给用户。它还可以提供类似SQL语句查询给那些高级用户。一般的用户通过使用高级查询几乎可以完成所有的查询操作。在配合DataWindow的计算列、汇总函数等,各种情况下的汇总、统计功能也都完成了。在本次项目中我就大量的使用了高级的dataWindow控件的of_SetFilter(True

21、)函数,再调用of_SetStyle设置高级查询窗口的样式,即完成高级查询功能的制作。C.改变大小服务(ResizeService)ResizeService提供了一种功能使得DataWindow控件的大小发生变化相应的调整其中的控件的大小与位置。ResizeService使用起来与使用窗口的Resize服务一样方便、简单。D.行管理服务(RowManagerService)行管理服务提供了一种对数据行进行有效管理的服务。例如:行管理服务提供的恢复删除的功能。你只需调用事件pfc_RestoreRow即可恢复用户已删除的数据。为数据库应用软件的开发提供了极大的方便。2.4全局服务全局服务提供了

22、一些在任何场合、任何环境中都可以使用的服务。l菜单服务(MenuService)菜单服务提供了一种方便的机制供菜单与窗口通讯。本次项目中的所有的菜单都使用了的菜单服务。使用菜单服务提供菜单的重用性、减少重复的代码。A.改变尺寸服务(ResizeService)ResizeService为许多可视的容器对象都提供了Resize服务的功能。例如窗口的Resize功能就是由该服务提供的。可视用户自定义对象的祖先类u_base也使用了ResizeService。因此,如果你遵循PFC的继承策略。那么你自定义的UserObject也将具备Resize功能。ResizeService还大量的运用在其他场合

23、,例如u_tabpage对象中。你也完全可以在其他自定义对象或其他场合使用ResizeService,因为它是全局的。B.文件服务(FileService)PFC的文件服务提供了一种与平台无关的文件服务。也就说使用PFC的文件服务中的关于文件的函数可以不必考虑具体的操作系统,PFC会自动的根据应用程序所在的操作系统进行相应的API调用。小结:PFC的服务还有许多,而且都很有用,使用起来也很方便。例如INI文件服务提供了一种非常便利的方式访问INI文件。DataWindow的排序服务,日历、计算器服务等。由于篇幅有限,只做了简单的介绍。C.PFC分层的概念与用意PFC中层的概念是PFC非常重要的

24、一大特色。也正是PFC的层的概念吸引了我,使我开始学习PFC。PFC中层的设计使得软件开发与维护变得非常方便。下面就详细的讲述以下PFC层的概念。3.1PFC中的PFE层(也叫扩展层)PFC它是一套类库。PFC的设计是为了制作一套可以提供所有使用PB开发数据库应用软件所需要的功能。但是我们都知道这是不可能的。因为,任何应用软件都可能存在一些特别情况,需要特别的运用。如果不存在PFC的扩展层或者说PFC没有分层的概念。那么我们为了具体的应用需要做修改时,我们将会直接修改PFC的代码。如果真的是这样的话,那么便会出现一个问题,那就是当Sybase公司升级PFC时,你又不得不再次重新修改一遍,因为新

25、版的PFC覆盖了原来的PFC文件你所做的修改也全部丢失。但是如果存在一个独立的扩展层,那么扩展层就是一整套完全继承PFC对象的全部对象集合。扩展层的对象保存在独立的PBLs中。PFC将PFC对象定义为PFC层对象,所有PFC层对象的前缀都带有pfc_(例如pfc_w_main),并且都保存在PFCxxxxx.PBL中。PFC将扩展层对象定义为PFE层,所有的PFE层对象都没有前缀(例如w_main),并且PFE层对象全部保存在PFExxxx.PBL中。PFE层中其实没有任何代码,只是简简单单的继承了PFC层中的对象。这样做的好处就是假设开发人员需要为特定的应用而修改PFC对象时,这时改去修改P

26、FE中的对象就可以了。这样当Sybase公司升级PFC时,便不会再有冲突了。引入PFE层后我们的对象也就全部改为继承PFE对象,这样如果我们需要增加一个整个应用程序都具备的特性时只需修改PFE中的对象即可完成。例如:我们程序的窗体全部继承W_Main。如果我们要在令到我们的应用程序中的全部窗口的图标都会变化(一张会笑的脸!),我们只需在W_Main窗口增加代码就可以令到整个应用程序的所有窗口都具备这种特性。由此可以看到扩展层为我们的开发带来了极大的灵活性。其实PFC扩展层的设计也是PFC面向对象设计的一个重要特点。也正是PFC的面向对象的设计使得我们修改整个应用程序如此容易(上例中修改W_Ma

27、in窗口)。3.2PFC的中间层PFE层是一套完全继承PFC层对象的对象集合。按照这种思路Sybase公司又提出了中间层的概念。中间层对象就是那些继承PFC层的对象,PFE层的对象又继承中间层的对象。也就说中间层的对象是位于PFC与PFE层对象之间的对象。中间层有时也叫企业层、部门层对象。中间层提供了供开发人员设计一种企业级或者部门级软件特色的功能。我们都知道一个软件企业或者一个软件部门开发的软件往往不止一套。而往往一个软件企业或者软件部门开发的软件都具备自己的一套特色(从外观上、功能上、操作方式上等)。如果每个企业或者每个部门做每套软件是都要在PFE层的对象,PFC层、中间层、PFE层对象3

28、.3PFC的继承结构由于PFC的分层的特点,使得PFC对象之间的继承关系也带有一些特点。图1中描述的继承关系只是一个大概的样式,PFC中的对象的真真继承关系并非如此。下面图2描述的则是PFC真真的继承关系:4PFC中跨平台的设计PFC非常注重跨平台的设计。在讲述多态时曾提到PFC利用多态实现跨平台的文件管理。与文件管理类似,PFC的平台服务(提供了一些关于操作系统调用的API)也是一个跨平台的服务。下面将着重讲述一下PFC如何实现跨平台的文件管理。PFC首先定义了一个抽象基类n_cst_filesrv。该基类中定义了所有PFC提供的文件管理函数,但是这些函数都没有任何实质性的代码。源代码如下:

29、PublicFunctionStringof_GetCurrentDirectory()/FunctioncouldfoundindescendentReturn其他的省略然后PFC定义一个n_cst_filesrv类的一个子类n_cst_filesrvwin32。类n_cst_filesrvwin32的作用就是在WIN32操作系统下实现of_GetCurrentDirectory()函数以及其他函数。同样PFC为MAC操作系统定义了n_cst_filesrvMAC类,类n_cst_filesrvMAC的作用就是在MAC操作系统下实现of_GetCurrentDirectory()函数以及其他

30、函数。为了方便说明我只据两个操作系统的例子,至于跨多个操作系统与跨两个操作系统没有任何本质区别。PFC程序员在使用PFC的文件服务时是这样使用的:1定义n_cst_filesrv类型的变量。n_cst_filesrvlnv_filesrv2调用全局函数f_SetFilesrv(n_cst_filesrvanv_filesrv,Booleanab_switch)开启文件服务f_SetFilesrv(lnv_filesrv,True)3这样PFC的文件服务便会根据不同的操作系统调用相应的文件API。对PFC的程序员来讲编写跨平台的软件的真是非常方便。其实真真的PFC跨平台的代码就在函数f_SetFilesrv中,源代码(稍做修改):Functionf_SetFilesrv(n_cst_filesrvanv_filesrv,Booleanab_switch)/Argumentanderrorchecking.IfIsNull(ab_switch)ThenReturn-1If

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1