SetRedraw()
功能
指定每次修改控件属性后是否自动重绘控件。
语法
objectname.SetRedraw(boolean)
参数
objectname:要修改重绘属性的控件或对象名。o b j e c tname可以是子数据窗口,但不能是菜单。
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)
该函数可以更直白的理解为:需要进行批量修改对象或者控件的属性时,使用该函数,可以提高程序的性能