您的位置:首页 > 其它

PFC的使用与探索(一)

2008-04-28 00:34 806 查看
快速开发工具从5.0版本开始提供了一套基础类库PFC(PowerBuilderFoundationClass),使得应用程序的开发速度又提高了一大步。由于PFC使用的不是很广泛,许多开发者对此还不是很了解。下面就我使用的过程中所得到的心得与遇到的问题,整理出来与大家共享与探讨。各位觉得有不合适的地方,希望批评指正。
PFC的帮助对各个独立服务、事件或者函数有一些实例代码,但是对于整体的使用几乎没有很全面地介绍。因此,我写这些东西,作为PFC帮助的一个辅助材料,大部分是在PFC帮助上没有的内容,是我使用PFC的过程中的总结与归纳。PFC入门
首先,介绍一下如何创建一个简单的PFC应用程序。
构造一个简单的PFC程序框架
使用PFC,我们得先学会使用PFC构造一个简单的应用程序。我们可以根据PFC帮助提供的模式来构造我们的应用程序框架(参见PFC帮助的Overview中的Foraquickstart项),也可以查看PFC例程(Peat、Example等)仿造构造我们的应用程序。下面简单的陈述一下我通常使用PFC构造应用程序的步骤:首先,创建一个空的应用程序,从对象n_cst_appmanager继承一个新的用户对象,命名为n_mdl_app;其次,根据PFC帮助快速模型实例创建简单的应用程序框架,有所不同的是:应用程序服务,我使用刚才创建的用户对象n_mdl_app代替了n_cst_appmanager,
设置n_mdl_app的相关事件的代码,可参见PFC例程的程序代码;打开应用(Application)对象,更改部分属性及代码:在AdditionalProperties中,更改VariableTypes页中的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.EventPostPFC_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.EXTENDED)//设置行选择服务为高级选择模式,支持Ctrl&Shift键this.inv_Sort.of_SetStyle(this.inv_Sort.DROPDOWNLISTBOX)//设置排序服务的对话框样式this.inv_Filter.of_SetStyle(this.inv_Filter.SIMPLE)//设置筛选服务的对话框样式this.inv_Sort.of_SetColumnDisplayNameStyle(this.inv_Sort.HEADER)//设置排序服务的显示内容this.inv_Filter.of_SetColumnDisplayNameStyle(this.inv_Filter.HEADER)//设置筛选服务的显示内容1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: