转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 数据库 >> SyBase >> 正文
PowerBuilder应用开发系列讲座(37)         ★★★★

PowerBuilder应用开发系列讲座(37)

作者:闵涛 文章来源:闵涛的学习笔记 点击数:773 更新时间:2009/4/22 22:54:22
p align="center">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_ 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中的p fc_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_pri ntpreview()、dw_1.eventpfc_pagesetup()、dw_1.eventpfc_zoom()分别用来实现打印、打印预览、页面设置、预览窗口的放大缩小等功能。在这些功能中,PowerBuilder会自动弹出相应的窗口,由用户设置打印的份数,页面纸张的大小,预览窗口的显示比例等参数。
  此外在窗口对象中PFC提供了response风格窗口的祖先类w_res ponse,其中加入一些用户可能经常用到的功能。例如只需在继承窗口的open事件中加入如下语句:this.inv_base.of_center(),可实现该窗口在打开时窗口在屏幕的正中位置显示;又如在open事件中加入:this.of_setbase(true),每个继承窗口缺省都有数据数 据窗口存储功能等等。


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Sql Server  · MySql
    · Access  · ORACLE
    · SyBase  · 其他
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台