Delphi在很大程度上采用了面向對象的開發思路,所以,在采用Delphi作為開發工具時,class和對象就顯得 尤為重要!
對class的明確定義是:對具有相同特征的一類事物所做的歸納。作為一個非常抽象的概念,我們可以對類 這個字舉例來理解:在校的學生,雖然每個人都會有不同的情況,還有小學生、中學生、大學生之分,男、 女生之分,但是他們有一個共同點,都處於求學階段。我們就可以把他們歸納為“學生類”,而每一個學生 就是學生類的對象(有一點需要說明,在很多書中,有實體或者實例這種說法,這裡實體或者實例也就是提 到的對象)。
而類的屬性指的是類的靜態特征,作為上面提到的“學生類”,我們說他具有性別、年齡、學號、班級、學 校名稱、各科考試成績等等特征,而這些,也就是學生類屬性。
類的方法即類的動態特征,即屬於這一類的事物在接收到某種消息或命令時做出的反應,比如學生上課就是 學生類的一個方法,而這個方法的觸發就是上課鈴響這一個消息的產生。
類的龐大作用還體現在它的無限繼承中。作為上面提到的學生類,我們以教育程度來分,不難看出,還可以 分出大學生類,中學生類,小學生類,而他們比學生類這個范圍更具體,學生類所具有的屬性他們每一個都 具有。也就是說,他們都是從學生類繼承而來,在學生類的基礎上更准確的進行了劃分。在這兒,學生類作 為父類,大學生類、中學生類、小學生類等作為子類出現。當然,在學生類以上,也有更抽象的類。比如, 人類是所以具有人類特征的歸納,學生類比人類更具體,在這個地方,人類作為父類,學生類作為子類。從 這兒可以看出,我們可以根據我們的需要,定義一個適合我們使用的類而不需要每一個屬性、方法都去寫出 來,只要簡單的繼承父類就可以了。(通常所說的派生即是父類對子類的說法:父類派生子類).
VCL類庫
delphi面向對象的基礎就是類,要真正了解和提高delphi的知識水平,我們有很大的必要弄清楚Delphi為我們 提供的vcl(類庫)。
Delphi的層次結構如下:
從圖中我們可以看出,Tobject是delphi系統中的所有類的祖先類,其他每一個類都是他的字類。 根據上面的 層次關系,我們可以看到Delphi中每一個類的繼承和派生,對我們使用自定義類是非常必要的。下面主要介 紹部分類:
Tpersistent類:
它由Tobject祖先類直接派生。需要指出的是,Tpersistent類成員都能夠進行流的操作(對數據以數據流的形 式傳遞)
常用方法:
Assign() 一個組件把另一個組件相關的值賦給自己;
AssignTo() 與Assign()相反,在Tpersistent中申明為私有,派生類必須實現他的定義;
Tcomponent類
由Tpersistent類直接派生,它的對象的特性:在設計期間其屬性可以由Object inspector來控制,能夠擁有其 他組件。
Tcomponent類可派生可視組件和非可視組件,如Tbutton和Tmenu
Tcomponent類常用屬性:
Owner:設置或讀取組件擁有者;
CompenentCount:讀取或設置組件的擁有數目;
ComponentIndex:讀取組件在其擁有者列表中的位置(從0開始);
Components:他為一個數組,包含其擁有的組件列表(從0開始); Name:設置和讀取組件名稱;
Tcomponent類常用方法
Create:構造對象;
Destroy:釋放對象;
Getparentcomponent:取得父組件,沒有則返回nil;
HASParent:判斷組件是否有父組件;
InsertComponent:增加一個組件,由調用該方法的組件所擁有;
RemoveComponent:刪除一個自己擁有的組件;
Findcomponent(str:string):根據給出的組件名查找組件;
Tcontrol類
應用:一般用於可視組件
它的屬性包括了本身的位置信息,尺寸信息,外觀屬性等,如:
Top,Left,Width,Height,Visible,enable,text,caption等;
它引入了標准事件如:
Onclick,OnDblclick,OnmouseDown,OnmouseMove等
需要說明的是,在Delphi 中,不能創建它的派生類,只能通過它已經存在的派生類TwinControl和 TgraphicControl派生;
TwinControl類
TwinControl類:標准窗口控件由它派生;
它的對象有窗口句柄(指向對象的指針),能夠接受輸入焦點,能夠成為其他控件的父;
在應用程序開發中,一般使用TwinControl的派生類;
TwinControl類的常用屬性:
Brush:用於繪制控件外形;
Controls: 包含控件的所有子控件(值為一個數組);
ControlCount:讀取子控件的數目;
Handle:讀取TwinControl類對象的句柄;
Showing:設置或讀取對象是否可見;
Tabstop:設置用戶是否能夠用TAB鍵移動焦點;
Taborder:設置對象在其父列表中的序號(從0開始);
TgraphicControl類
本類控件沒有窗口句柄,不能接收輸入焦點,同樣也不能是其他控件的父;
TcostomControl類:
它的派生類常作為自定義控件的基類