程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> delphi構件制作方法簡介

delphi構件制作方法簡介

編輯:Delphi
  Delphi作為rad工具,以其快速編譯和友好的可視化界面受到廣泛歡迎。delphi提供了很多現成構件,而且隨著版本更新不斷增加新構件。另外還可以買到第三方開發的特色構件,或從因特網下載免費構件。這些構件足以支持一般應用系統開發。但應用開發人員仍有必要自己制作構件。采用構件形式可以把對象嚴密封裝,並加上一層直觀外殼,有利於軟件調試和代碼重用。開發群體以構件為功能單位分工協作,比較容易實現工程化管理,從軟件規劃設計到測試修改都可以減少意外差錯,大大提高工作效率。成熟的構件還可以作為商品軟件出售,帶來附加效益,且有利於軟件開發的社會化分工協作。Delphi的構件使用和構件制作采用同樣的工作環境和相似的編程方法,只要弄清基本原理,制作構件無需學習多少新東西。

基本概念

制作構件的基本過程可以概括為:

1.編寫構件單元(unit)。其中包含構件聲明和構件實現代碼。

2.按照與普通Delphi單元同樣的方法編譯和調試構件單元。

3.創建構件注冊單元。其中用uses語句連接構件單元,並用register過程完成構件的注冊。

4.編寫構件聯機幫助信息,並編譯成標准Windows幫助文件。

  全部工作完成後,生成構件單元二進制文件(.dcu)、構件注冊源文件(.pas)和幫助信息文件(.hlp)及附加的關鍵詞文件(.kwf)。用戶拿到這些文件後,就可以安裝使用了。在delphi環境下調用菜單命令,啟動安裝過程(安裝過程中需指定注冊文件名),可以把構件注冊到Delphi的vcl庫中,並在構件工具條上生成一個新按鈕。借助helpinst安裝工具可以把關鍵詞文件並入dephi幫助索引系統,用f1鍵實現聯機幫助。

  這樣制作出的.dcu文件與一般Delphi單元沒有根本區別,即使不安裝到vcl庫中也可以由其他單元直接調用。最大的區別在於:構件單元中某些屬性和事件聲明為published,從而在程序設計期對用戶是可見的,用戶可以通過對象編輯窗口(objectinspector)訪問這些屬性和事件。這是可視化程序設計的關鍵所在。

對象的繼承與修改

  制作構件第一件事就是選擇適當的Delphi對象類型作為父對象,以派生新的對象。子對象可以繼承父對象的全部非private部件,但不能擺脫不需要的部件。因此,所選父對象應盡可能多地包含子對象所需的屬性、事件和方法,但不應包含子對象不需要的東西。

  tcomponent是所有delphi構件的基點,但若直接從tcomponent派生新構件,很多東西就需要自己從頭做起。一般只有非可視構件才直接從tcomponent派生。Delphi提供了若干專門用於制作控件(可視構件)的對象類型,都是從tcontrol和twincontrol派生而來。其派生關系如下:

tcontrol---tgraphiccontrol---tcustomlabel
twincontrol--tcustomcontrol---tcustomgrid
---tbuttoncontrol--tcustomgroupbox
---tscrollingwincontrol--tcustompanel
---tcustomcombobox
---tcustomedit
---tcustomlistbox

  tcontrol的子類型用於非窗口式控件,twincontrol的子類型則用於窗口式控件。除非特殊需要,一般不直接從tcontrol和twincontrol派生新控件,而是從其子類型派生。這樣可以充分利用原有的屬性、事件和方法,減少很多工作量。

  在這些構件類型中,非通用的屬性、事件和方法都聲明為protected。這樣可以禁止構件用戶訪問,又能被子類型繼承和修改。在新構件中,可以簡單地把繼承來的屬性和事件重新聲明為published,使構件用戶能在設計期通過對象編輯窗口訪問,也可以進而修改屬性的默認值和讀寫方式,或是重載(override)事件處理子過程和其他構件方法,以修改其中的程序代碼。重聲明可以放寬訪問權限,但不能 相反,例如,不可能把published屬性重聲明為private或protected。

  為了增加新功能,常常需要定義全新的屬性、事件和方法。定義時,一般總是把對用戶開放的屬性和事件聲明為published,把方法聲明為public或protected。

構件屬性

  在構件中,屬性和方法往往可以相互替代。對構件用戶來說,屬性比方法更直觀簡便。因此,只要可能,應盡量以屬性取代方法。屬性類型包括簡單類型(numeric,character,string)、枚舉類型、集合類型、對象類型(例如font)和數組類型(例如tstrings 類型中的strings)。其定義方法如下:

type
private
flayers:integer;{內部存儲用的變量}
functiongetlayers:integer;{用來讀屬性值的方法}
proceduresetlayers(alayers:integer);{用來寫屬性值的方法}
published
propertylayers:
integerreadgetlayerswritesetlayersdefault1;
end;

  每個屬性都需要相應的private變量用於內部存儲。按照約定,變量名以f打頭,後跟屬性名(此處為layers),讀寫方法名稱分別為ge
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved