控制可视控件的重绘。
比如,数据窗口增加行,ddlb增加节点,因为它们是可视控件,都会引起重绘,这样一是引起屏幕闪烁,二是增加系统运行时间。所以在一个循环前,dw_1.setredraw(false),在循环后dw_1.setredraw(true),举例:
--------------------------
dw_1.setredraw(false)
for i = 1 to dw_1.rowcount()
dw_1.insertrow(0)
.......
next
dw_1.setredraw(true)
SetRedraw()
指定每次修改控件属性后是否自动重绘控件
语法objectname.SetRedraw(boolean)
参数objectname 要修改重绘属性的控件或对象名objectname 可以是子数据窗口
但不能是菜单
boolean boolean 型值指定修改控件或对象的属性后PowerBuilder 是否自动重
绘控件或对象有效取值为
TRUE 每次修改属性后自动重绘该对象或控件
FALSE 修改属性后不自动重绘该对象或控件
返回值Integer 函数执行成功时返回1 出现错误时返回-1 如果任一参数为NULL
则SetRedraw()函数返回NULL
用法默认情况下每当应用程序修改了影响控件或对象外观的属性时PowerBuilder
就会自动重绘该控件或对象当应用程序需要修改控件或对象的多个影响其外观的属性
时修改之前利用SetRedraw()函数暂时关闭自动重绘功能修改之后再用SetRedraw()
函数开放自动重绘功能这种方法将会避免屏幕显示的闪烁现象并提高应用程序的性能
使用SetRedraw()函数关闭自动重绘功能后必须在适当的时候重新打开该功能否则
可能会产生问题另外如果窗口中某控件的自动重绘功能被关闭后应用程序修改了该控
件的Visible 或Enabled 属性那么该控件的跳转次序按Tab 键移动焦点的次序可能会
示例1 下面的语句关闭列表框lb_Location 的自动重绘功能
lb_Location.SetRedraw(FALSE)
在修改了列表框的属性比如增加或删除列表项后使用下述语句打开自动重绘功
lb_Location.SetRedraw(TRUE)
示例2 当列表框lb_Location 被设置为自动排序方式后即lb_Location.Sorted =
TRUE 下面的程序段在插入所有列表项后排序列表项并自动重绘列表框避免了每插
入一个列表项就排序一次和自动重绘一次提高了程序运行效率
lb_Location.SetRedraw(FALSE)
lb_Location.AddItem("北京")
lb_Location.AddItem("上海")
lb_Location.AddItem("天津")
lb_Location.AddItem("西安")
lb_Location.AddItem("洛阳")
lb_Location.SetRedraw(TRUE)
联系客服