pfc是什么软件啊!

pfc是什么软件啊!,第1张

 PFC的全称是Particle Flow Code,即颗粒流程序,是由美国Itasca公司开发的一款计算软件,主要用于研究散粒体或可简化为散粒体的系统的分析。目前有二维(PFC2D)和三维(PFC3D)两种,该软件属于离散元(DEM)范畴。

目前,PFC应用的领域主要有土木工程、矿业工程、材料工程、食品工程、制药工程及农业等。

PFC是PowerBuilder高级开发工具集中的一个基本类库,提供了进行一般应用开发时会经常用到的对象和函数代码。PowerBuilder5.0的基本类库中的内容十分丰富,比以前版本中所提供的功能要增加了许多,而且对象之间的继承和引用关系也比以前更为清晰合理。因此编写一个完全建构在PFC类库之上的应用可大大提高软件质量,而且利用基类的已有代码也会使得许多复杂的功能实现起来要轻松得多。可是如何编写这样的应用,以合理地继承、利用和改造PFC的基本框架,以及使用PFC时应注意的事项,却是十分复杂的问题,在这里无法用几千字就能够讲清楚。不过我们仍然能够像使用以往版本的类库一样,只是借用PFC中一些对象的基本功能以省去自己编写代码的麻烦。

本文将主要介绍如何利用PFC中几个数据窗口功能,为我们的编程带来便利。

我们在应用中会遇到层次型关系的数据,例如部门和雇员实体之间的关系。在对一个部门下雇员的数据进行维护时,可以使用Master/Detail的表现形式,在数据窗口dw_1表现已有部门的数据,并根据用户选择的某一条记录,在dw_2中变换所选定部门雇员的信息,并对雇员信息进行维护。

首先声明一个全局变量:

n_cst_appmanagergnv_app

在应用的Open事件中加入:

gnv_app=CREATEn_cst_appmanager

gnv_app.Eventpfc_Open(commandline)

在应用的Close事件中键入:

gnv_app.Eventpfc_Close()

DESTROYn_cst_appmanager

在窗口中我们定义dw_1和dw_2为PFC中u_dw的实例对象,在窗口的Open事件中我们编程如下:

//设置dw_1和dw_2的级联方式

dw_1.of_setlinkage(true)

dw_2.of_setlinkage(true)

dw_1.of_settransobject(sqlca)

dw_2.of_settransobject(sqlca)

//定义dw_1和dw_2的级联关系

dw_2.inv_linkage.of_linkto(dw_1)

dw_2.inv_linkage.of_setarguments("dept","dept")

dw_2.inv_linkage.of_setusecollinks(1)//设置连接方式为filter

//触发dw_2的pfc_retrieve()事件

dw_2.eventpfc_retrieve()

ifdw_1.eventpfc_retrieve()=-1then

messagebox("错误","提取数据错误-类别")

else

dw_1.setfocus()

endif

在dw_1和dw_2的pfc_retrieve

事件中将祖先的代码覆盖,并分别写下如下语句:

returnthis.retrieve()

在dw_1的rowfocuschanged事件代码中将对该数据窗口的数据进行过滤,而执行retrieve()函数将触发这一事件。

使用PFC中这个对象的优点还可以体现在以下两点:当需要更新级联的所有数据窗口时,只需执行dw_1.inv_linkage.of_update()一条命令即可完成;如果想要在dw_2中增加一行新数据,可使用dw_2.pfc_addrow(0)或dw_2.pfc_insertrow()函数,这个函数会将dw_2中dept字段的值自动设置为dw_1中dept的当前值,从而避免了手工使用GetItem和SetItem函数来设置。

在上述简单的关系中,并未充分体现出PFC优越性。但在一个工厂中对零件的管理或是大型商场中对商品的管理,往往是要通过多次的级联才能定位到某一类产品的子目,在这样的系统中,拥有一个像u_dw这样的基类,编程的效率就可以提高许多。

在一个数据窗口中如果有的列含有下拉式数据窗口时,在这些列中使用下拉搜索功能会给用户带来很多方便,也就是说在这些列中当用户使用键盘敲入数据时,应用程序自动地搜索下拉式数据窗口中对应的值,使其跳转到相应的记录上。使用PFC,我们只需指定这个数据窗口继承n_cst_dwsrv_dropdownsearch对象,并在这个数据窗口中键入下列代码:

constructor事件:

dw_1.of_setdropdownsearch(true)

dw_1.inv_dropdownsearch.of_addcolumn()

editchanged事件:

inv_dropdownsearch.eventpfc_editchanged(row,dwo,data)

这个数据窗口中所有的下拉式数据窗口就都具备了下拉搜索功能。不过我们要对这个PFC对象进行改进,以适应中国国情。原有的搜索功能是要求用户在该列中输入下拉式数据窗口的显示值(displaycolumn)才能查询,这对于使用拼音文字的用户是十分方便的,应用将随着用户输入字符的增多,逐步递进地显示相应的记录。可是在中文应用软件中,该列的显示值一般都为中文,输入并不方便,所以有经验的 *** 作员往往习惯于使用他们熟悉的编号,即下拉式数据窗口的实际存储值(datacolumn),因此将应用程序做成对实际值进行查询也许更符合中国用户的习惯。我们就需要在n_cst_dwsrv_dropdownsearch中的pfc_editchanged事件中作如下修改:

覆盖祖先类的代码,键入新代码。新代码是对它的祖先对象pfc_n_cst_dwsrv_dropdownsearch中pfc_editchanged事件的代码作部分修改,将其中第72行

ls_dddw_displaycol=adwo_obj.dddw.displaycolumn

改为:

ls_dddw_displaycol=adwo_obj.dddw.datacolumn

即可。(因代码过长,我们无法在这里全部引述。)

3.使用PFC中有关数据窗口打印的功能。在u_dw对象中还提供了一些有关打印的事件和函数,我们首先在数据窗口的构造事件或窗口的Open事件中,将数据窗口设置允许打印预览:dw_1.of_setprintpreview(true)。

我们可以在程序中调用dw_1.eventpfc_print()、dw_1.eventpfc_printpreview()、dw_1.eventpfc_pagesetup()、dw_1.eventpfc_zoom()分别用来实现打印、打印预览、页面设置、预览窗口的放大缩小等功能。在这些功能中,PowerBuilder会自动d出相应的窗口,由用户设置打印的份数,页面纸张的大小,预览窗口的显示比例等参数。

此外在窗口对象中PFC提供了response风格窗口的祖先类w_response,其中加入一些用户可能经常用到的功能。例如只需在继承窗口的open事件中加入如下语句:this.inv_base.of_center(),可实现该窗口在打开时窗口在屏幕的正中位置显示;又如在open事件中加入:this.of_setbase(true),每个继承窗口缺省都有数据数据窗口存储功能等等。

哦,基本懂你的意思了。可是你这样做,可能会有时间累积差啊。为什么不直接都用系统时间呢。因类系统时间都一样的。

我想了两种方法,不知道行不行,你可以试一下:

方案一:

分时段法。两个程序都读取系统时间,但是规字每个程序的读/写时间段。比如PFC在运行,而ANSYS在等待,那么就让ANSYS只在每分钟的10~30s内读,而让pfc只在每分钟的40~60S内写。

方案二:

不判断文件里的数据,而只判断文件有无。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11629293.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存