PB

NO.1.两个事件A,B: 事件A调用事件B,但是想在事件B中使用事件A中的存储过程ids_excel,那么把ids_excel作为事件B的参数传入,事件B就可以使用事件A的存储过程了 Datastore是PB中不可视的数据窗口控制,除此以外与数据窗口相比各个方面都极其相似。


NO.2.由于datastore具有对数据的交互操作,所以用它来代替在程序中经常使用的游标Cursors. 使用datastore检索数据比游标的速度快,并对数据的分组变得容易,提高比较高级的过滤功能,在程序中不需要变量也可以访问数据,并且在PB中使编码变得相对简单。一个调用datastore显示数据的示例:

datastore ds_demo //声明 

ds_demo= create datastore //实例化

ds_demo.dataobject = "d_demo" // d_demo为已存在数据对象 

ds_demo.settransobject(sqlca) 

ds_demo.retrieve() 

dw_1.dataobject = ds_demo.dataobject // 为可见数据窗口dw_1传递数据

ds_demo.sharedata(dw_1) //


NO.3.DataWindows中ItemChanged事件中修改当前单元格值的方法 在PB中,ItemChanged事件具有数据效验功能。通过其返回值,可以告之PB数据是否通过用户效验,然后PB将根据此效验结果决定是接受新值还是拒绝修改。此描述的隐含的表达了:PB在ItemChanged执行完后设置单元格值。另外,程序员无法在ItemChanged修改data参数(即新值)。也就是说,在ItemChanged事件中,我们只能决定是否接受这次修改,若是,则单元格值为输入值(即Data参数值),否则,单元格将保持原值。我们无法为单元格指定两者外的一个值。   这样就无法在ItemChanged中实现这样一种效果:根据用户输入,对其进行一些转换或格式化操作,再赋给单元格。因为在ItemChanged中设置的单元格值会在ItemChanged事件执行完后被冲掉,最终单元格值仍将根据ItemChanged返回值被置为Data值或原值。   但借助Post关键字可以非常简洁的获得此效果,PB文档中对Post的描述大意是:Post将目标调用放入窗口的消息队列中,所调用代码何时执行取决于消息在消息队列中的位置。 此用Post的原理如下:   Windows应用程序是事件驱动或消息驱动的,用户通过界面交互生成消息,程序捕获各种消息并针对各种消息调用不同的处理程序,这些处理程序中包装有用户逻辑。   消息的处理是串行的,在一个消息处理完之前,下一个消息不会被开始处理。一个消息的生命周期从其被生成并加入消息队列开始,到其处理完毕时止。   从ItemChanged事件被触发,到PB根据ItemChanged事件返回值设置单元值格,属于同一个消息处理过程。因此在此期间通过Post调用的操作,将在PB设置单元格之后执行。 此方法的使用描述如下:在ItemChanged事件中,在设置单元格值的语句前加上关键字Post即可。

eg: String NewValue = "17951" + data; 

Post SetValue(Col,Row,NewValue)



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值