有时候,数据窗口中的某一列的dddw需要根据条件的变化来回变换,即随条件的变化显示不同dddw的内容,且原dddw与变换后的dddw都带有检索参数,采用《计算机世界》99年3月22日刊登的《PB中隐藏下拉数据窗口的检索参数》一文中介绍的方法也不能抑制检索参数窗口的弹出。查阅Sybase网上技术文档(Document号为44434),谈到两个dddw的切换时说:抑制检索参数窗口的方法(见Document号为44307,即上文采用的方法)不适用于两个dddw替换的情况,除非两个dddw的定义非常相近,不需要重新检索。如果两个dddw的定义不同,dw引擎决定需要重新检索时没有办法抑制检索参数窗口的弹出。
在应用中有时确实需要两个dddw相互切换,显示不同的内容以方便用户的使用,如下图中所示的字段“同类设备编码”,查询状态时dddw显示具有该编码的设备的技术参数,其检索参数为其自身值;当用户按修改按钮后,此字段的dddw显示所有设备编码及各编码代表设备的名称、规格和型号,此时的dddw以“分类代码”为检索参数,两个dddw定义完全不同,分别检索不同的表。
在“修改”按钮中切换dddw的脚本如下: dw_1.object.equipment_account_equip _id.dddw.name = "d_dddw_equip_id" dw_1.object.equipment_account_equip _id.dddw.percentwidth = 450//设定显示宽度 dw_1.object.equipment_account_equip _id.dddw.vscrollbar = "yes"//设定纵向滚动条 dw_1.getchild ("equipment_account_equip_id",idw_child) //改变参数后必须重新getchild使改变后的属性生效 idw_child.settransobject (sqlca) idw_child.retrieve(cl_id)//按分类代码检索
真的如上所述没有办法抑制检索参数了吗?其实有一个非常简单、适用于所有dddw的方法:
在DataWindow painter中打开此dddw,从菜单条选择 Rows→Data后单击Add按钮,在第一列任意输入一些字符,单击OK,再存盘退出;另一dddw也依此操作。这样看似及其复杂的问题轻而易举地解决了,如果一个数据窗口中用到多个dddw,可以省去许多类似下面的语句,使? 编制起来更快捷,程序可读性更好。
dw_1.getchild ("equip_item_equip_id",idw_child1) idw_child1.settransobject (sqlca) if idw_child1.rowcount() = 0 then idw_child1.insertrow(0) end if
以上方法在P200兼容机、Windows95平台上、PowerBuilder5.0上实现,完全可行。
Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved. 闵涛 E_mail:admin@mintao.net(欢迎提供学习资源)
鄂公网安备 42011102001154号
站长:MinTao ICP备案号:鄂ICP备11006601号-18