- 1、本文档共19页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PB深入开发
PB深入开发
数据库快速开发工具 PowerBuilder 从5.0版本开始提供了一套基础类库PFC(PowerBuilder Foundation Class),使得应用程序的开发速度又提高了一大步。由于PFC使用的不是很广泛,许多开发者对此还不是很了解。下面就我使用的过程中所得到的心得与遇到的问题,整理出来与大家共享与探讨。各位觉得有不合适的地方,希望批评指正。
PFC的帮助对各个独立服务、事件或者函数有一些实例代码,但是对于整体的使用几乎没有很全面地介绍。因此,我写这些东西,作为PFC帮助的一个辅助材料,大部分是在PFC帮助上没有的内容,是我使用PFC的过程中的总结与归纳。
PFC入门
首先,介绍一下如何创建一个简单的PFC应用程序。
构造一个简单的PFC程序框架
使用PFC,我们得先学会使用PFC构造一个简单的应用程序。我们可以根据PFC帮助提供的模式来构造我们的应用程序框架(参见PFC帮助的Overview 中的 For a quick start项),也可以查看PFC例程(Peat、Example等)仿造构造我们的应用程序。下面简单的陈述一下我通常使用PFC构造应用程序的步骤:
首先,创建一个空的应用程序,从对象n_cst_appmanager继承一个新的用户对象,命名为n_mdl_app;
其次,根据PFC帮助快速模型实例创建简单的应用程序框架,有所不同的是:应用程序服务,我使用刚才创建的用户对象n_mdl_app代替了n_cst_appmanager,
设置n_mdl_app的相关事件的代码,可参见PFC例程的程序代码;
打开应用(Application)对象,更改部分属性及代码:
在Additional Properties中,更改Variable Types 页中的3个变量(SQLCA-n_tr; Error-n_err; Message-n_msg)(参考PFC例程Peat)
根据需要更改默认字体的类型及大小(由于我们开发的都是中文界面的应用程序,所有字体更改为“宋体 9pt”),根据需要更改应用程序的图标;
根据需要更改其他的属性,比如:DisplayName, MicroHelpDefault, 等等;
另外,我还需要更改应用对象的SystemError事件的代码,我使用的是逄新利编写的一个错误陷阱模块。
根据需要编写.Ini文件或者更改注册表项值。
好了,到此为止,一个PFC应用程序框架就完成了。试着运行??下,可以看到框架窗口的运行状态。
添加一个工作区窗口
应用程序框架窗口实现出来了,为了能够工作,我们还得有工作区窗口(Sheet)。
首相,随便创建一个Grid型的数据窗口对象,保存为d_demo1。然后从w_sheet窗口继承出来一个窗口对象,然后在这个窗口中放置一个用户对象u_dw(数据窗口的基础祖先对象)。该数据窗口控件的数据对象为刚才创建的数据窗口对象d_demo1。
在窗口的Open事件中编写如下代码:
// 开启Resize服务
this.of_SetResize(True)
//设置Resize服务的原始大小
this.inv_Resize.of_SetOrigsize( dw_Demo.Width + dw_Demo.X * 2, dw_Demo.Height + dw_Demo.Y * 2 )
//注册要实施Resize服务的控件及方法
this.inv_Resize.of_Register(dw_Demo,this.inv_Resize.SCALERIGHTBOTTOM)
//异步触发事件,利用消息路由发送消息。该消息是要检索数据
this.Event Post pfc_MessageRouter(pfc_Retrieve)
在数据窗口控件的Constructor事件中编写如下代码:
this.of_SetTransObject(SQLCA)// 设置事物对象
this.of_SetBase(True)// 开启数据窗口基本服务
this.of_SetPrintPreView(True)// 打印预览服务
this.of_SetRowManager(True)// 行管理服务
this.of_SetRowSelect(True)// 行选择服务
this.of_SetFind(True)// 查找服务
this.of_SetSort(True)// 排序服务
this.of_SetFilter(True)// 筛选服务
this.inv_RowSelect.of_SetStyle(this.inv_RowSelect.EXTEND
文档评论(0)