• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

优化你的PowerBuilder程序

发布: 2008-10-14 12:00 | 作者: 不详 | 来源: programfan.com  | 查看: 95次 | 进入软件测试论坛讨论

领测软件测试网

4. 数据窗口间数据的拷贝

  如果需要在数据窗口间共享数据, 应当尽量使用 SHAREDATA() 函数, 但是, SHAREDATA() 函数并不是物理地在数据窗口间拷贝数据, 如果在显示数据的同时, 还要对数据进行操作, 则需要进行数据的拷贝.

  例如, 要求将 DW_1 中选定的行拷贝到 DW_2 中:

  在窗口的 OPEN 事件中编程:
  dw_1.settransobject(sqlca)
  dw_2.settransobject(sqlca)
  dw_1.retrieve()

  在数据窗口 DW_1 的 ROWFOCUSCHANGED 事件中编写下列程序:
  long lr
  lr = dw_1.selectrow(0,false)
  lr = dw_1.getrow()
  lr = dw_1.selectrow(lr,true)

  要完成从 DW_1 到 DW_2 的拷贝工作, 有两种方法:

  第一种:

  在按钮 "拷贝" 的 CLICKED 事件中编程
  long lr
  lr = dw_1.getselectedrow(0)
  dw_1.rowscopy(lr,lr,primary!,dw_2,100,primary!)

  执行程序, 利用 POWERBUILDER PROFILER 得出所需时间为 1.7034(百分之一秒)

  第二种:

  在按钮 "拷贝" 的 CLICKED 事件中编程
  dw_2.object.data = da_1.object.data.selected

  执行程序, 利用 POWERBUILDER PROFILER 得出所需时间为 0.8062(百分之一秒)

  5. 数据窗口属性的访问和修改

  A. 数据窗口属性的访问

  在程序中访问数据窗口的属性有下列几种方法:

  A1. 采用点表达式访问

  A2. 应用多个独立的 DESCRIBE() 函数访问

  A3. 只使用一个 DESCRIBE() 函数, 采用复合参数访问多个属性

  上面三中方法, 通常第一种方法最慢, 第三种方法最快.

  例如:
  在窗口的 OPEN 事件中
  DW_1.SETTRANSOBJECT(SQLCA)
  DW_1.RETRIEVE()

  第一种方法:

  在检索按钮的 CLICKED 事件中编程.
  string dx, dy, dh, dw
  dx = dw_1.object.da_dh.x
  dy = dw_1.object.da_dh.y
  dx = dw_1.object.da_dh.height
  dy = dw_1.object.da_dh.width
  st_1.text =dx+","+dy+","+dh+","+dw
  
  第二种方法:

  string dx, dy, dh, dw
  dx=dw_1.describe("da_dh.x")
  dx=dw_1.describe("da_dh.y")
  dx=dw_1.describe("da_dh.height")
  dx=dw_1.describe("da_dh.width")
  st_1.text =dx+","+dy+","+dh+","+dw

  第三种方法:

  string dx, dy, dh, dw
  st_1.text=dw_1.describe("da_dh.x" +&
  "da_dh.y" +&
  "da_dh.height" +&
  "da_dh.width")

  实验证明, 第三种方法的速度是最快的. 但是程序的可读性最差.

  B. 数据窗口属性的修改

  在程序中修改数据窗口的属性有下列几种方法:

  A1. 采用点表达式修改

  A2. 应用多个独立的 MODIFY() 函数访问

  A3. 只使用一个 MODIFY() 函数, 采用复合参数访问多个属性

  上面三种方法, 通常第一种方法最慢, 第三种方法最快.

  例如:
  在窗口的 OPEN 事件中
  DW_1.SETTRANSOBJECT(SQLCA)
  DW_1.RETRIEVE()

  第一种方法:

  在检索按钮的 CLICKED 事件中编程.
  DW_1.SETREDRAW(FALSE)
  dw_1.object.da_dh.x = 18
  dw_1.object.da_dh.y = 16
  dw_1.object.da_dh.height = 100
  dw_1.object.da_dh.width = 200
  DW_1.setredraw(true)
  st_1.text =dx+","+dy+","+dh+","+dw

  第二种方法:

  DW_1.SETREDRAW(FALSE)
  dw_1.modify("da_dh.x = 18")
  dw_1.modify("da_dh.y = 16")
  dw_1.modify("da_dh.height = 100")
  dw_1.modify("da_dh.width = 200")
  dw_1.setredraw(true)

  

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

32/3<123>

关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网