Anole2.0測試版釋出
與原版本相比,新版控制元件在很多方面都進行了改進:
最大的變化在於核心演算法上有了很大不同,這主要表現在資源使用、載入速度和換膚方案上。
為了減少閃爍,舊版控制元件通常設定控制元件的AutoDraw屬性為True,而新版控制元件使用了子類技術在控制元件視窗的WM_PAINT訊息中繪製控制元件外觀,這大大提高了控制元件的載入速度並減少了資源佔用。
與傳統的貼圖方案相同,舊版控制元件需要為每一個控制元件設定相同的圖片來確定其外觀。例如,一個視窗中有10個按鈕,若要修改其外觀可能會需要使用下面的程式碼:
Set acCommand1.Skin = picNewSkin
Set acCommand2.Skin = picNewSkin
...
這樣做的缺點是改變外觀時要修改所有控制元件的屬性,不僅繁鎖,而且浪費資源,因為每個控制元件的 Skin 屬性中儲存著一個相同的圖片物件。而新版控制元件可以使應用程式中的所有按鈕共享同一個圖片物件,使用者只需改變其中一個按鈕的外觀,那麼其他按鈕也就隨之改變,同時也減少了記憶體的使用,這方面的好處對於較大的應用程式尤為明顯。
其次,屬性設計更加靈活而簡潔。
例如:舊版本的按鈕中有一個布林型的 FocusRectEffect 屬性,可設定是否顯示焦點矩形。而新版中取而代之的是一個長整型的 FocusRectSize 屬性, 調整它的值,不僅可以實現不同大小的焦點框,以適應不同風格的按鈕,同樣可以實現無焦點框的功能。一個屬性實現兩個功能,不僅減少了不必要的資源佔用,更簡便了使用者操作。
除此之外,一些原本在VB中執行時只讀的屬性現在已可讀寫了,如列表框和組合框的Sorted、Style屬性等。
類似的屬性還有很多,大家可以閱讀幫助檔案瞭解更多,同時我們相信您在實際應用中可以有更加深刻的體會。
此外,屬性頁的設計也使使用者在設計時設定屬性值加更方便,以減少程式碼的錄入量。例如:多行文字框的Text屬性、列表框和組合框的List、ItemData等屬性的值,都可以在設計時輸入。
除上述改變外,對舊版本功能上的完善也是新版的工作之一,如:所有面板影象都不再限制尺寸、進度條實現了垂直顯示及顯示不同格式的進度文字、列表框的多選及複選等等。
另需說明的是,大家都知道子類在VB中是危險的, 尤其在VB的IDE中問題更是突出,我們見過太多的產品都有這樣或那樣的問題。雖然新版控制元件大量地使用了子類技術,但作者使用了特有的技術可以防止控制元件出現各種問題,例如:您可以在任何地方使用End語句退出程式(儘管微軟不提倡這樣做,但決不會因為使用了子類而導至程式的非法退出);可以在IDE環境中隨時按下“停止”按鈕中止程式的執行和除錯;當程式中發生錯誤時也不會產生通常的“一般性保護錯誤”而導致程式或VB的IDE非法關閉;可以在程式中的任何地方設定斷點以進行除錯;在IDE中執行程式也不會導致對其他程式或IDE環境中的視窗造成不良影響 ......
總之,您不必擔心控制元件因使用子類帶來的任何負面影響。