Delphi的VCL技術使很多程序員能夠非常快速的入門:程序員門只要簡單的拖動再加上少量的幾個Pascal語句,呵呵,一個可以運行得非常良好的Delphi程序!恭喜你,你已經可以進行程序開發這個偉大的事業了。不過,當你學了一段時間後也許就不這麼想了哦。因為Delphi是支持面向對象的語言,其實所有的VCL Component都是基於面向對象的語言設計的,那麼當我們用這些面向對象的東東來設計出一些不怎麼面向對象的東東好象有些不倫不類的感覺,當然,這裡不討論用不用面向對象方法的好壞,也不想引起相關人士的抗議,畢竟“蘿卜青菜”嘛。
在Delphi中,所有的控件都聲明在Publish的關鍵字下,這也是利用組件編程的默認位置。這樣,如果一個Form2想要引Form1(假如其為Unit1)中的某個控件時,只要Use Unit1就OK了,如果Form1要引用Form2的東東,也可以如法泡制。不過,如果哪天我不小心把Form2中的控件改了名,那豈不是Form1中調的的代碼全部要重寫了麼?所以,我主張把這些控件作為Form類的專用元素,外部窗體可以通過Form類公布的屬性來訪問其中的控件。
比如:
TForm1=class(Tform)
privte
Button1:Tbutton
end;
不過,這樣的設計是解決了成員的高度封裝不過,編譯會出現錯誤說Tbutton類找不到,原因是我們把Button1放到了Private中,Delphi不會自動幫我們注冊Tbutton類,其實解決這個問題也很簡單只要在
Initialization
中加入 RegisterClasses([Tbutton])
就OK了,當然如果有不同的類的控件都可以如法炮制放在RegisterClasses的參數中,因為其參數是一個控件數組。
當然,這樣的面向對象的設計方法是要比以前那種“拖拉”的方法復雜,不過,我們得到了高度的封裝性,我認為值得,各位呢?