控制可視控件的重繪。
比如,數據窗口增加行,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)