小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

delphi

 Hust書讀天下 2015-01-05

基本介紹 編輯本段

Delphi,是Windows平臺(tái)下著名的快速應(yīng)用程序開發(fā)工具(Rapid Application Development,簡(jiǎn)稱RAD)。它的前身,即是DOS時(shí)代盛行一時(shí)的“BorlandTurbo Pascal”,最早的版本由美國(guó)Borland(寶蘭)公司于1995年開發(fā)。

詳細(xì)介紹 編輯本段

Delphi由Borland公司推出的Delphi是全新的可視化編程環(huán)境,為我們提供了一種方便、快捷的Windows應(yīng)用程序開發(fā)工具。它使用了MicrosoftWindows圖形用戶界面的許多先進(jìn)特性和設(shè)計(jì)思想,采用了彈性可重復(fù)利用的完整的面向?qū)ο蟪绦蛘Z言(Object-Oriented Language)、當(dāng)今世界上最快的編譯器、最為領(lǐng)先的數(shù)據(jù)庫技術(shù)。

對(duì)于廣大的程序開發(fā)人員來講,使用Delphi開發(fā)應(yīng)用軟件,無疑會(huì)大大地提高編程效率,而且隨著應(yīng)用的深入,您將會(huì)發(fā)現(xiàn)編程不再是枯燥無味的工作——Delphi的每一個(gè)設(shè)計(jì)細(xì)節(jié),都將帶給您一份欣喜。

Delphi是Borland公司研制的新一代可視化開發(fā)工具,可在Windows3.x、Windows95、WindowsNT、WindowsXP、Windows Vista、Windows7等環(huán)境下使用。當(dāng)前,Delphi 也可以在LINUX平臺(tái)上開發(fā)應(yīng)用,其在LINUX上的對(duì)應(yīng)產(chǎn)品Kylix。

Delphi 擁有一個(gè)可視化的集成開發(fā)環(huán)境(IDE),采用面向?qū)ο?/a>的編程語言ObjectPascal和基于部件的開發(fā)結(jié)構(gòu)框架。Delphi它提供了500多個(gè)可供使用的構(gòu)件,利用這些部件,開發(fā)人員可以快速地構(gòu)造出應(yīng)用系統(tǒng)。開發(fā)人員也可以根據(jù)自己的需要修改部件或用Delphi本身編寫自己的部件。

“真正的程序員用c,聰明的程序員用Delphi”,這句話是對(duì)Delphi最經(jīng)典、最實(shí)在的描述。Delphi被稱為第四代編程語言,它具有簡(jiǎn)單、高效、功能強(qiáng)大的特點(diǎn)。和VC相比,Delphi更簡(jiǎn)單、更易于掌握,而在功能上卻絲毫不遜色;和VB相比,Delphi則功能更強(qiáng)大、更實(shí)用??梢哉fDelphi同時(shí)兼?zhèn)淞薞C功能強(qiáng)大和VB簡(jiǎn)單易學(xué)的特點(diǎn)。它一直是程序員至愛的編程工具。Delphi具有以下的特性:基于窗體和面向?qū)ο蟮姆椒ǎ咚俚木幾g器,強(qiáng)大的數(shù)據(jù)庫支持,與Windows編程緊密結(jié)合,強(qiáng)大而成熟的組件技術(shù)。但最重要的還是Object Pascal語言,它才是一切的根本。Object Pascal語言是在Pascal語言的基礎(chǔ)上發(fā)展起來的,簡(jiǎn)單易學(xué)。

Delphi提供了各種開發(fā)工具,包括集成環(huán)境、圖像編輯(Image Editor),以及各種開發(fā)數(shù)據(jù)庫的應(yīng)用程序,如DesktopDataBase Expert等。除此之外,還允許用戶掛接其它的應(yīng)用程序開發(fā)工具,如Borland公司的資源編輯器(Resourse Workshop)。

在Delphi眾多的優(yōu)勢(shì)當(dāng)中,它在數(shù)據(jù)庫方面的特長(zhǎng)顯得尤為突出:適應(yīng)于多種數(shù)據(jù)庫結(jié)構(gòu),從客戶機(jī)/服務(wù)機(jī)模式到多層數(shù)據(jù)結(jié)構(gòu)模式;高效率的數(shù)據(jù)庫管理系統(tǒng)和新一代更先進(jìn)的數(shù)據(jù)庫引擎;最新的數(shù)據(jù)分析手段和提供大量的企業(yè)組件。

發(fā)展歷程 編輯本段

1995 1.0 支持16位Windows開發(fā)。基于框架(VCL)的,可拖曳、可視化的開發(fā)環(huán)境

1996 2.0 以32位編譯器為核心,支持C/S數(shù)據(jù)庫開發(fā)

1997 3.0 語法:加入接口(Interface)的機(jī)制。IDE:首次提供了(Code Insight)

1998 4.0 語法:加入動(dòng)態(tài)數(shù)組和方法覆蓋等支持。IDE:增強(qiáng)調(diào)試能力,提供代碼模板

1999 5.0 增強(qiáng)了IDE和調(diào)試器,提供了TeamSource。簡(jiǎn)化Internet的開發(fā),增強(qiáng)數(shù)據(jù)庫支持

2001 6.0 提供了Web Service??缙脚_(tái)的Kylix 1.0和CLX

2002 7.0 提供了.NET的過渡,增強(qiáng)的Internet開發(fā)(IntraWeb),完善數(shù)據(jù)庫支持,增加了Indy網(wǎng)路元件和Rave Report資料庫報(bào)表,并且支援UML及XP的程式制作。

2003 8.0 單純的for .NET版本,擁有C#的能力,保留了Delphi的易用性(業(yè)內(nèi)視為一個(gè)過渡版本)

2004 9.0 正式名稱:Delphi 2005。語法:加入了inline及for in loop等功能。IDE:把Borland Delphi. Net、Borland Delphi Win32、Borland C#、Enterprise Core Objects等環(huán)境和功能集成成一個(gè)開發(fā)工具,因此可以在Win32和.NET開發(fā)環(huán)境中切換或同時(shí)進(jìn)行

2005 10.0 發(fā)布名稱:Borland Developer Studio(BDS) 2006。集成C++ Builder; ECO(Enterprise Core Objects)升級(jí)到ECO III; 集成Together for Delphi,可以在同一個(gè)IDE中進(jìn)行UML開發(fā);QA Audits和QA Metrics可以快速的把握專案的設(shè)計(jì)和代碼的質(zhì)量。

2006 Turbo Borland將BDS 2006拆分成幾個(gè)獨(dú)立的版本(Delphi for win32、Delphi for .net、C#、C++ Builder),而且不能同時(shí)安裝兩個(gè)不同的版本。由于Borland的IDE生產(chǎn)部份獨(dú)立成為一家名為codegear的公司,所以這個(gè)版本是以Borland名義推出的最后一個(gè)版本。

2007 11.0 正式名稱:CodeGear RAD Studio - Delphi 2007。

2008 5.7 Borland正式宣布將CodeGear子公司出售給Embarcadero(易博龍)技術(shù)公司。

2008 8.25 Embarcadero發(fā)布CodeGear Delphi 2009 Pre-release版。

2009 8.25 Embarcadero發(fā)布CodeGear.RAD.Studio.2010版

2010.8.30 Embarcadero 發(fā)布 Delphi XE(又名Delphi 2011,代號(hào)為Fulcrum)

2011.1.27 Embarcadero公司宣布成立一個(gè)新的精簡(jiǎn)版Delphi Starter Edition,是在愛好者和誰得到一個(gè)稍微簡(jiǎn)化的功能集為一個(gè)小的創(chuàng)業(yè)公司的價(jià)格,旨在可用性。

版本更新 編輯本段

注 FM = 可用于 FM 應(yīng)用平臺(tái) VCL = 可用于VCL

Delphi 2009中新增內(nèi)容

  1. Unicode FM VCL
  2. 功能區(qū)控件VCL
  3. Robust項(xiàng)目管理FM VCL
  4. 重要的DataSnap 升級(jí)FM VCL
  5. 泛型和匿名方法FM VCL

Delphi 2010中新增內(nèi)容

  1. 構(gòu)建已啟用觸碰和手勢(shì)支持的應(yīng)用FM VCL
  2. Windows 7支持FM VCL
  3. IDE內(nèi)視FM VCL
  4. dbExpress可連接到Firebird 數(shù)據(jù)庫FM VCL
  5. 已添加到Delphi語言的擴(kuò)展 RTTI(反射)FM VCL

Delphi XE中新增內(nèi)容

  1. 用DataSnap進(jìn)行擴(kuò)展的多層開發(fā)FM VCL
  2. 額外的附帶工具(CodeSite Express、IP*Works、Beyond Compare Differ)VCL
  3. 針對(duì)Azure和Amazon的云計(jì)算支持FM VCL
  4. IDE中的Subversion 集成FM VCL
  5. 正則表達(dá)式FM VCL

Delphi XE2中新增內(nèi)容

  1. 針對(duì)Windows的64位 Delphi編譯器FM VCL
  2. FireMonkey應(yīng)用平臺(tái) - 利用一個(gè)代碼庫創(chuàng)建多平臺(tái)、多設(shè)備應(yīng)用FM
  3. 用FireMonkey 創(chuàng)建Windows 和Mac OS X桌面應(yīng)用FM
  4. DataSnap移動(dòng)連接器FM VCL
  5. LiveBindings引擎FM VCL
  6. FastReport報(bào)表工具FM VCL

Delphi XE3中新增內(nèi)容

  1. Windows 8支持FM VCL
  2. 通過Metropolis UI,將Windows 現(xiàn)代化的外觀融入到您的應(yīng)用中FM VCL
  3. OS X Mountain Lion和Retina 顯示支持FM
  4. 可視化的LiveBindings FM VCL
  5. 增強(qiáng)的FireMonkey樣式、音頻/視頻和3D FM
  6. 修復(fù)和功能增強(qiáng)FM VCL

Delphi XE4中新增內(nèi)容

  1. 通過Delphi iOS ARM編譯器、工具鏈、全新可視化開發(fā)環(huán)境和針對(duì)iOS的控件,開發(fā)iOS 應(yīng)用FM
  2. IBLite數(shù)據(jù)庫可用于iOS,帶有不受限的部署許可證FM
  3. FireDAC – 功能強(qiáng)大、快速且簡(jiǎn)單的數(shù)據(jù)訪問FM VCL
  4. FireMonkey傳感器對(duì)位置、方向和運(yùn)動(dòng)的支持FM
  5. FireMonkey框架和全新的 TListView組件 FM
  6. OS X全屏模式FM
  7. 修復(fù)和功能增強(qiáng)FM VCL

Delphi XE5中新增內(nèi)容

  1. 開發(fā)Android應(yīng)用FM
  2. 針對(duì)Android 和iOS的全新移動(dòng)組件FM
  3. REST客戶端支持,以訪問基于云端的 RESTful web服務(wù)(在專業(yè)版和更高級(jí)版本中)FM VCL
  4. FireDAC已集成到Delphi安裝,并且核心組件已包括在專業(yè)版中FM VCL
  5. 針對(duì)Android的IBLite數(shù)據(jù)庫,并帶有不受限的部署許可證FM
  6. 開發(fā)iOS 7 應(yīng)用FM
  7. 修復(fù)和功能增強(qiáng)FM VCL

Delphi XE6中的新增內(nèi)容

  1. 應(yīng)用Tethering組件擴(kuò)展您的現(xiàn)有Windows應(yīng)用到移動(dòng),無需一定要移植您的整個(gè)Windows應(yīng)用。選擇對(duì)移動(dòng)有意義的特性,并輕松地與您的現(xiàn)有 Windows應(yīng)用進(jìn)行交互。連接您的桌面(VCL 和FMX)應(yīng)用和移動(dòng)應(yīng)用。為您的VCL應(yīng)用創(chuàng)建移動(dòng)伙伴應(yīng)用。通過Wi-Fi 和在您的本地網(wǎng)絡(luò)上工作。 將來的版本會(huì)支持藍(lán)牙。
  2. 任務(wù)欄組件通過預(yù)覽內(nèi)的按鈕控件,組件可用于顯示您的應(yīng)用中可選擇的多個(gè)窗口預(yù)覽。自動(dòng)或自定義預(yù)覽。在任務(wù)欄按鈕中顯示您的應(yīng)用的進(jìn)度。在任務(wù)欄按鈕上疊加圖標(biāo)。
  3. 云端服務(wù)(BaaS)與用于Kinvey和Parse的組件進(jìn)行集成與領(lǐng)先的后端即服務(wù)(BaaS)提供者集成,以添加功能特性和平臺(tái)服務(wù)到您的移動(dòng)應(yīng)用。您可以輕松地訪問云端中的公共服務(wù),無需一定要您自己構(gòu)建或維護(hù)后端服務(wù)。在任意設(shè)備和平臺(tái)上使用推送通知來吸引您的用戶。訪問云端中的數(shù)據(jù)和對(duì)象存儲(chǔ)。用戶身份認(rèn)證。在XE5中已引入的 REST客戶端支持上構(gòu)建。通過公共的API組件集,支持流行的BaaS 提供者、Kinvey和Parse。
  4. 全新的VCL 樣式賦予您的應(yīng)用一個(gè)現(xiàn)代化的Windows或自定義外觀。包括Windows 手寫板樣式。支持Windows 7 和Windows 8。完全樣式化您的應(yīng)用,包括菜單和邊框。
  5. VCL傳感器組件即使對(duì)于使用全新 Windows平板電腦像Surface Pro的Windows用戶來說,傳感器也無處不在?,F(xiàn)在您的 Delphi應(yīng)用可以添加位置、運(yùn)動(dòng)和其他特性。從運(yùn)行在Windows平板電腦上的VCL應(yīng)用訪問設(shè)備傳感器。加速計(jì)、GPS和回轉(zhuǎn)儀功能。
  6. 內(nèi)置購買和內(nèi)置廣告功能移動(dòng)應(yīng)用是應(yīng)用開發(fā)人員的收入產(chǎn)生良機(jī)?,F(xiàn)在通過集成內(nèi)置購買功能和廣告,您可以將您的移動(dòng)應(yīng)用兌換成現(xiàn)金。iOS 和Android上的銷售內(nèi)容、功能、服務(wù)和訂閱。支持頂部廣告網(wǎng)絡(luò)(Google AdMob和Apple iAd)。
  7. 創(chuàng)建用于Google眼鏡的應(yīng)用用delphi進(jìn)行的多設(shè)備應(yīng)用開發(fā)現(xiàn)在已延伸到PC、平板電腦、和智能手機(jī)外,到可穿戴設(shè)備。 創(chuàng)建可運(yùn)行在Google 眼鏡上的Android應(yīng)用。帶有已優(yōu)化Google眼鏡的外觀和分辨率的全新自定義樣式。Google眼鏡設(shè)備設(shè)計(jì)器模板。
  8. 可訪問性使您的應(yīng)用對(duì)大多數(shù)用戶來說更易于使用,包括使用屏幕閱讀器軟件的那些用戶。針對(duì)FM 桌面應(yīng)用的全新可訪問性特性。支持 Windows上的JAWS 和Mac OS X上的VoiceOver。
  9. 質(zhì)量、性能和穩(wěn)定性獲取最好的開發(fā)經(jīng)驗(yàn),并為您的用戶交付最佳的用戶體驗(yàn)。解決了超過 2,000個(gè)已報(bào)告的問題。增強(qiáng)了所有平臺(tái)上的總體應(yīng)用運(yùn)行時(shí)性能。
  10. 核心和數(shù)據(jù)庫特性貫穿于產(chǎn)品的核心增強(qiáng)。數(shù)據(jù)庫和FireDAC 增強(qiáng)、FDMemTable。用于FireDAC 的數(shù)據(jù)庫瀏覽器。Apache支持(WebBroker)。DirectX 11標(biāo)題。DataSnap性能和更新向?qū)?。RTL重構(gòu)和功能增強(qiáng)。FireDAC Informix驅(qū)動(dòng)程序更新。Apache C++支持。

特點(diǎn)特性 編輯本段

Delphi發(fā)展至今,從Delphi1、Delphi2到現(xiàn)在的Delphi2011,不斷添加和改進(jìn)各種特性,功能越來越強(qiáng)大。Delphi5開始添加了對(duì)IDE(集成開發(fā)環(huán)境)的很多改進(jìn)新特性,擴(kuò)展了數(shù)據(jù)庫支持(ADO和InterBase數(shù)據(jù)庫),帶有Internet支持的MIDAS改進(jìn)版,TeamSouse版本控制工具,轉(zhuǎn)換功能,框架概念以及很多的新組件與新特性。

Delphi 6.0是Borland公司推出的一套無論是界面還是功能都近乎完美的應(yīng)用程序開發(fā)工具。與以前的Delphi版本相比,Delphi 6.0使用更簡(jiǎn)便,效率也更高。

Delphi 7.0Delphi 7.0使用更簡(jiǎn)便,效率更高,最穩(wěn)定的一個(gè)版本,被稱為開發(fā)人員的工具之最,也是Borland產(chǎn)品最頂峰時(shí)期,更是風(fēng)靡全球。

Delphi2010內(nèi)置的Direct 2D模塊及開發(fā)庫,其新加的功能:擁有一個(gè)能同時(shí)運(yùn)作于x86和x64的IDE,在此IDE下將會(huì)有跨平臺(tái)編譯器,能夠編譯用于linux和MAC的應(yīng)用程序;將會(huì)支持windows7下的觸摸式編程;強(qiáng)化的DataSnap;將支持云計(jì)算;將支持函數(shù)式編程,這需要很多時(shí)間,據(jù)David估計(jì)是2011會(huì)實(shí)現(xiàn)。

Delphi XE2實(shí)現(xiàn)了跨平臺(tái)通用開發(fā),通過Delphi XE2所帶的FireMonkey平臺(tái),Delphi可以開發(fā)跨平臺(tái)應(yīng)用程序,并原生編譯到Windows和Mac OS X平臺(tái)。FireMonkey還可以為iPhone、iPod Touch和iPad創(chuàng)建iOS應(yīng)用,并分發(fā)到蘋果公司的應(yīng)用商店。Delphi的FireMonkey應(yīng)用程序擁有完全的硬件加速。

特點(diǎn)

(1)直接編譯生成可執(zhí)行代碼,編譯速度快。由于Delphi編譯器采用了條件編譯和選擇鏈接技術(shù),使用它生成的執(zhí)行文件更加精煉,運(yùn)行速度更快。在處理速度和存取服務(wù)器方面,Delphi的性能遠(yuǎn)遠(yuǎn)高于其他同類產(chǎn)品。

(2)支持將存取規(guī)則分別交給客戶機(jī)或服務(wù)器處理的兩種方案,而且允許開發(fā)人員建立一個(gè)簡(jiǎn)單的部件或部件集合,封裝起所有的規(guī)則,并獨(dú)立于服務(wù)器和客戶機(jī),所有的數(shù)據(jù)轉(zhuǎn)移通過這些部件來完成。這樣,大大減少了對(duì)服務(wù)器的請(qǐng)求和網(wǎng)絡(luò)上的數(shù)據(jù)傳輸量,提高了應(yīng)用處理的速度。

(3)提供了許多快速方便的開發(fā)方法,使開發(fā)人員能用盡可能少的重復(fù)性工作完成各種不同的應(yīng)用。利用項(xiàng)目模板和專家生成器可以很快建立項(xiàng)目的構(gòu)架,然后根據(jù)用戶的實(shí)際需要逐步完善。

(4)具有可重用性和可擴(kuò)展性。開發(fā)人員不必再對(duì)諸如標(biāo)簽、按鈕及對(duì)話框等Windows的常見部件進(jìn)行編程。Delphi包含許多可以重復(fù)使用的部件,允許用戶控制Windows的開發(fā)效果。

(5)具有強(qiáng)大的數(shù)據(jù)存取功能。它的數(shù)據(jù)處理工具BDE(BorlandDatabaseEngine)是一個(gè)標(biāo)準(zhǔn)的中介軟件層,可以用來處理當(dāng)前流行的數(shù)據(jù)格式,如xBase、Paradox等,也可以通過BDE的SQLLink直接與Sybase、SQLServer、Informix、Oracle等大型數(shù)據(jù)庫連接。Delphi既可用于開發(fā)系統(tǒng)軟件,也適合于應(yīng)用軟件的開發(fā)。

(6)擁有強(qiáng)大的網(wǎng)絡(luò)開發(fā)能力,能夠快速的開發(fā)B/S應(yīng)用,它內(nèi)置的IntraWeb和ExpressWeb使得對(duì)于網(wǎng)絡(luò)的開發(fā)效率超過了其他任何的開發(fā)工具。

(7)Delphi使用獨(dú)特的VCL類庫,使得編寫出的程序顯得條理清晰,VCL是現(xiàn)在最優(yōu)秀的類庫,它使得Delphi在軟件開發(fā)行業(yè)處于一個(gè)絕對(duì)領(lǐng)先的地位。用戶可以按自己的需要,任意的構(gòu)建、擴(kuò)充、甚至是刪減VCL,以滿足不同的需要。

(8)從Delphi8開始Delphi也支持.Net框架下程序開發(fā)。

當(dāng)前DELPHI 已經(jīng)成為一個(gè)品牌,而不僅僅是一個(gè)開發(fā)平臺(tái)或開發(fā)語言的名稱。當(dāng)前DELPHI產(chǎn)品已經(jīng)由CodeGear公司繼續(xù)發(fā)展,該公司是BORLAND公司的全資子公司。當(dāng)前,CodeGear為廣大開發(fā)者提供了DELPHI FOR PHP,以高度可視化的方式全面支持面向?qū)ο?/a>的PHP 網(wǎng)站開發(fā),大大提高了PHP開發(fā)網(wǎng)站的代碼復(fù)用程度,成為WEB應(yīng)用開發(fā)的新利器。

編程方法 編輯本段

Delphi的編程語言是以Pascal為基礎(chǔ)的。Pascal語言具有可讀性好、編寫容易的特點(diǎn),這使得它很適合作為基礎(chǔ)的開發(fā)語言。同時(shí),使用編譯器創(chuàng)建的應(yīng)用程序只生成單個(gè)可執(zhí)行文件(.EXE),正是這種結(jié)合,使得Pascal成為Delphi這種先進(jìn)開發(fā)環(huán)境的編程語言。

本章中,將討論ObjectPascal的主要特點(diǎn),并講解如何在事件處理過程和其他應(yīng)用程序中,使用它來編制程序代碼。本章將講解Delphi應(yīng)用程序中最常用的ObjectPascal語法,而不是Pascal語言的一切細(xì)節(jié)。如果您完全不熟悉Pascal編程,請(qǐng)參閱一些基礎(chǔ)的Pascal教程。如果您具有編程經(jīng)驗(yàn),并能熟練地使用其他流行程序語言,您將在本章的ObjectPascal中發(fā)現(xiàn)一些相同的概念。如果您已經(jīng)熟悉了BorlandPascal,就可以快速瀏覽或跳過本章。 

編寫ObjectPascal程序代碼 

在前邊的章節(jié)中,通過例程,已經(jīng)編寫了幾行簡(jiǎn)單的代碼。在本章中,將從熟悉Pascal編程的角度,配合實(shí)例,講解ObjectPascal編程的基該方法。

在編寫自己的ObjectPascal程序時(shí),要注意程序的可讀性。Pascal語言是英式結(jié)構(gòu)語言,在程序中選擇合適的縮排、大小寫風(fēng)格,并在需要時(shí)將程序代碼分行,會(huì)使得程序代碼能夠很容易地被自己和他人讀懂。一般的程序員都有這樣的體驗(yàn):如果不給程序加上適當(dāng)?shù)淖⒔?,一段時(shí)間后,自己也難以理清程序的流程。給程序及時(shí)地加上注釋是良好的編程習(xí)慣。Delphi的注釋需要加注在{}之間,編輯器會(huì)把它們處理成為空白。Delphi保留了BorlandPascal編輯器的風(fēng)格,關(guān)鍵字采用黑體字,被注釋的部分會(huì)變暗,這使得編程風(fēng)格良好,易讀易寫。

語句類型 編輯本段

賦值語句

在事件處理過程中,最常用到的工作就是把一個(gè)新值賦給一個(gè)屬性或變量。在設(shè)計(jì)用戶界面時(shí),可以使用ObjectInspector(ObjectInspector)來改變其屬性;但有時(shí)需要在程序執(zhí)行時(shí)改變屬性的值,而且有些屬性只能在執(zhí)行時(shí)改變,這些屬性在Delphi的在線幫助的“Proprety”主題中被標(biāo)為執(zhí)行期屬性。進(jìn)行這種改變,就必須使用賦值語句。

下文的賦值語句表征一個(gè)OnClick事件。當(dāng)按鈕按動(dòng)后,將編輯框部件Edit1的Color屬性置為clRed:

procedureTForm1.Button1Click(Sender:TObject);

begin

Edit1.Color:=clRed;

end; 

當(dāng)按動(dòng)按鈕后賦值語句被執(zhí)行,編輯框變成紅色。

在語句中,部件的名稱在屬性前,中間用“.”表示屬性的所屬關(guān)系。這樣就準(zhǔn)確地指定了要將clRed值賦給哪一部件的哪一屬性。賦值號(hào)為“:=”,不論給屬性還是給變量賦值,都是將右邊的值賦給左邊的屬性或變量。

當(dāng)將一個(gè)屬性值、變量、常量或文本數(shù)據(jù)賦給屬性或變量時(shí),所賦值的類型和接受此值的屬性或變量的類型應(yīng)相同或兼容。一個(gè)屬性或變量的類型定義了此屬性或變量的可能值集合,也定義了程序代碼可以執(zhí)行的運(yùn)算。在前邊的例程中,編輯框部件的Color屬性和clRed的類型都是TColor??梢栽谠诰€幫助中找到一個(gè)屬性的類型;另外一種方法是在ObjectInspector中選定該屬性值段,并按下F1鍵,則類型將在屬性說明的結(jié)尾處列出,例如Color屬性列出下邊的語句: 

PropertyColor:TColor; 

有些屬性是只讀(ReadOnly)的,它們只能被讀取,不能被改變。請(qǐng)查閱在線幫助,在Delphi中這些只讀屬性都有注解?!?/p>

標(biāo)識(shí)符的說明與使用 

標(biāo)識(shí)符是Delphi應(yīng)用程序中一些量的名稱,這些量包括變量(var)、常量(const)、類型(type)、過程(procedure)、方法(Method)及其他,ObjectPascal在應(yīng)用標(biāo)識(shí)符時(shí),必須首先說明它們。ObjectPascal是強(qiáng)類型語言,它的編譯器可以檢查確保賦給變量或?qū)傩缘闹凳钦_的類型,以便于您改正錯(cuò)誤。因?yàn)镺bjectPascal是編譯語言,所以Delphi的執(zhí)行速度要比使用解釋語言快得多。在使用標(biāo)識(shí)符前說明它們,可以減少程序錯(cuò)誤并增加代碼的效率。 

變量

變量是程序代碼中代表一個(gè)內(nèi)存地址的標(biāo)識(shí)符,而此地址的內(nèi)存內(nèi)容在程序代碼執(zhí)行時(shí)可以被改變。在使用變量前必須對(duì)它進(jìn)行說明,即對(duì)它進(jìn)行命名,并說明它的類型。在所有變量說明以前加上保留字var。變量說明左邊是變量的名稱,右邊則是該變量的類型,中間用(:)隔開?!?/p>

var

Value,Sum:Integer;

Line:String; 

在窗體中加入一個(gè)名稱為Edit1的編輯框,再加入一個(gè)名稱(屬性Name)為Add的按鈕部件,并建立如下的事件處理過程:

procedureTForm1.addClick(Sender:TObject);

var

X,Y:Integer;

begin

X:=100;

Y:=20;

Edit1.Text:=IntToStr(X+Y);

end; 

在本例中,當(dāng)按動(dòng)ADD按鈕時(shí),編輯框中顯示值120。在ObjectPascal中,必須確保變量或?qū)傩员毁x予類型相同或兼容的值。您可以嘗試將賦給X的值改為100.0,或去掉IntToStr函數(shù),在編譯時(shí)會(huì)出現(xiàn)類型不匹配的錯(cuò)誤,這也說明了ObjectPascal強(qiáng)類型語言的特點(diǎn)。

過程函數(shù)

過程與函數(shù)是程序中執(zhí)行特定工作的模塊化部分。Delphi的運(yùn)行庫包含許多過程與函數(shù)以供您的應(yīng)用程序調(diào)用。您不必了解過程與函數(shù)的邏輯,但要知道過程與函數(shù)的用途。在對(duì)象中說明的過程和函數(shù)稱為方法(Method)。所有的事件處理過程都是過程,以保留字procedure開頭。每一個(gè)事件處理過程只包含了當(dāng)這一事件發(fā)生時(shí)需要執(zhí)行的程序代碼。在事件處理過程中使用Delphi已經(jīng)存在的過程與函數(shù),只需在程序代碼中調(diào)用它們即可。

函數(shù)使用

與過程一樣,函數(shù)的程序代碼也執(zhí)行特定的工作。它和過程的差別為:函數(shù)執(zhí)行時(shí)會(huì)返回一個(gè)值,而過程則沒有返回值。函數(shù)可以用來賦給一個(gè)屬性或變量;也可以使用返回值來決定程序的流程。前文中實(shí)際上已經(jīng)接觸過了函數(shù)。在講述變量時(shí),曾用到過下面的程序段:Edit1.Text:=IntToStr(X+Y);其中,IntToStr(Value)把一個(gè)LongInt類型的數(shù)值轉(zhuǎn)化為字符串的值,Value是IntToStr唯一的參數(shù),它可以是一個(gè)整形的值、變量、屬性或產(chǎn)生整形值的表達(dá)式。調(diào)用函數(shù),必須把返回值賦給和此返回值類型兼容的變量或?qū)傩浴?/p>

有些函數(shù)返回一個(gè)True或False的布爾量,用戶的程序可以根據(jù)返回值來決定跳轉(zhuǎn)。下文的例程講述了函數(shù)返回值為Boolean的判斷用法:

在窗體中加入一個(gè)ColorDialog對(duì)象和一個(gè)Name屬性為ChangeColor的按鈕。為按鈕的OnClick事件建立事件處理過程如下: 

procedureTForm1.ChangeColorClick(Sender:TObject);

begin

ifColorDialog1.Executethen

Form1.Color:=ColorDialog1.Color

else

Form1.Color:=clRed;

end; 

此事件處理過程使用一個(gè)返回Boolean值的Execute方法。按動(dòng)按鈕,并在顏色對(duì)話框中選擇一個(gè)顏色。如果按動(dòng)OK按鈕,ColorDialog.Execute方法將返回True,則Form1.Color將被賦值為ColorDialog1.Color,窗體顯現(xiàn)您選用的顏色;如果按動(dòng)顏色對(duì)話框的Cancel按鈕,方法將返回False值,窗體將變?yōu)榧t色。

跳轉(zhuǎn)語句 

ObjectPascal的跳轉(zhuǎn)語句有if和case兩個(gè)?!?/p>

if語句

if語句會(huì)計(jì)算一個(gè)表達(dá)式,并根據(jù)計(jì)算結(jié)果決定程序流程。在上文的例程中,根據(jù)ColorDialog.Execute的返回值,決定窗體的背景顏色。if保留字后跟隨一個(gè)生成Boolean值True或False的表達(dá)式。一般用“=”作為關(guān)系運(yùn)算符,比較產(chǎn)生一個(gè)布爾型值。當(dāng)表達(dá)式為True時(shí),執(zhí)行then后的語句。否則執(zhí)行else后的代碼,if語句也可以不含else部分,表達(dá)式為False時(shí)自動(dòng)跳到下一行程序。

if語句可以嵌套,當(dāng)使用復(fù)合語句表達(dá)時(shí),復(fù)合語句前后需加上begin…end。else保留字前不能加“;”,而且,編譯器會(huì)將else語句視為屬于最靠近的if語句。必要時(shí),須使用begin…end保留字來強(qiáng)迫else部分屬于某一級(jí)的if語句。

case語句

循環(huán)語句

ObjectPascal的循環(huán)語句有三種:repeat、while和for語句?!?/p>

repeat語句 

repeat語句會(huì)重復(fù)執(zhí)行一行或一段語句直到某一狀態(tài)為真。語句以repeat開始,以u(píng)ntil結(jié)束,其后跟隨被判斷的布爾表達(dá)式。參閱以下的例程: 

i:=0;

repeat

i:=i+1;

Writeln(i);

until=10; 

當(dāng)此語句被執(zhí)行時(shí),窗體的下方會(huì)出現(xiàn)1到10的數(shù)字。布爾表達(dá)式i=10(注意,與其他語言不同的是,“=”是關(guān)系運(yùn)算符,而不能進(jìn)行賦值操作)直到repeat..until程序段的結(jié)尾才會(huì)被計(jì)算,這意味著repeat語句至少會(huì)被執(zhí)行一次。

while語句

while語句和repeat語句的不同之處是,它的布爾表達(dá)式在循環(huán)的開頭進(jìn)行判斷。while保留字后面必須跟一個(gè)布爾表達(dá)式。如果該表達(dá)式的結(jié)果為真,循環(huán)被執(zhí)行,否則會(huì)退出循環(huán),執(zhí)行while語句后面的程序。

下面的例程達(dá)到和上面的repeat例程達(dá)到同樣的效果: 

i:=0;

whilei0then

test2(A);{經(jīng)前置說明,調(diào)用未執(zhí)行的過程Test2}

writeln(A);

end;

procedureTest2(varA:Integer);{經(jīng)前置說明的Test2的執(zhí)行部分}

begin

A:=Adiv2;

ifA>0rhen

test1(A);{在Test2中調(diào)用已執(zhí)行的過程Test1}

end; 

procedureTForm1.Button1Click(Sender:TObject);

begin

Alpha:=15;{給Alpha賦初值}

Test1(Alpha);{第一次調(diào)用Test1,遞歸開始}

end; 

按鈕的OnClick事件處理過程給Alpha賦初值,并實(shí)現(xiàn)先減1再除2的循環(huán)遞歸調(diào)用,直到Alpha小于0為止。

程序函數(shù)

程序代碼在調(diào)用一個(gè)過程或函數(shù)時(shí),通常用參數(shù)傳遞數(shù)據(jù)到被調(diào)用的過程或函數(shù)中。最常用的參數(shù)有數(shù)值參數(shù)、變量參數(shù)和常量參數(shù)三種。由被調(diào)用過程或函數(shù)定義的參數(shù)為形參,而由調(diào)用過程或函數(shù)指明的參數(shù)叫實(shí)參。在NoValue函數(shù)中,說明函數(shù)體中的AnEditBox是形參,而調(diào)用時(shí)在ifNoValue(Edit1)…中,Edit1是實(shí)參。

數(shù)值參數(shù)在運(yùn)行過程中只改變其形參的值,不改變其實(shí)參的值,即參數(shù)的值不能傳遞到過程的外面。試看下面的例程: 

procedureCalculate(CalNo:Integer);

begin

CalNo:=CalNo*10;

end; 

用以下例程調(diào)用Calculate函數(shù):

Number:=StrToInt(Edit1.Text);

Calculate(Number);

Edit2.Text:=IntToStr(Number);

Number接受由編輯框1輸入的數(shù)值,經(jīng)Calculate過程運(yùn)算。它是一個(gè)數(shù)值型實(shí)參。在進(jìn)入Calculate函數(shù)后,會(huì)把Number實(shí)參拷貝給形參CalNo,在過程中CalNo增大十倍,但并未傳遞出來,因此Number值并未改變,在編輯框2中顯示仍然是編輯框1中的輸入值。形參和實(shí)參占用不同的內(nèi)存地址,在過程或函數(shù)被調(diào)用時(shí),將實(shí)參的值復(fù)制到形參占用的內(nèi)存中。因此出了過程或函數(shù)后,形參和實(shí)參的數(shù)值是不同的,但實(shí)參的值并不發(fā)生變化。如果您想改變傳入的參數(shù)值,就需要使用變量參數(shù),即在被調(diào)用程序的參數(shù)表中的形參前加上保留字var。例如:procedureCalculate(varCalNo:Integer); 

則CalNo并不在內(nèi)存中占據(jù)一個(gè)位置,而是指向?qū)崊umber。當(dāng)一個(gè)變參被傳遞時(shí),任何對(duì)形參所作的改變會(huì)反映到實(shí)參中。這是因?yàn)閮蓚€(gè)參數(shù)指向同一個(gè)地址。將上一個(gè)例程中過程頭的形參CalNo前面加上var,再以同樣的程序調(diào)用它,則在第二個(gè)編輯框中會(huì)顯示計(jì)算的結(jié)果,把第一個(gè)編輯框中的數(shù)值放大十倍。這時(shí)形參CalNo和實(shí)參Number的值都是Nnmber初始值的10倍。

如果當(dāng)過程或函數(shù)執(zhí)行是要求不改變形參的值,最保險(xiǎn)的辦法是使用常量參數(shù)。在參數(shù)表的參數(shù)名稱前加上保留字const可以使一個(gè)形參成為常量參數(shù)。使用常量參數(shù)代替數(shù)值參數(shù)可以保護(hù)您的參數(shù),使您在不想改變參數(shù)值時(shí)不會(huì)意外地將新的值賦給這個(gè)參數(shù)。

枚舉類型

一個(gè)枚舉型的說明列出了所有這種類型可以包括的值: type

Tdays=(Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday); 

可以定義上述枚舉類型的變量

var

DayOfWeek:TDays; 

在枚舉型中,括號(hào)中的每一個(gè)值都有一個(gè)由說明它的位置決定的整形值。例如Sunday有整形值0,Monday有整形值1等。您可以把DayOfWeek說明為一個(gè)整形變量,并將一星期的每一天賦一個(gè)整形值以達(dá)到相同的效果,但用枚舉型會(huì)使得程序可讀性好,編寫容易。當(dāng)您在枚舉型中列出值時(shí),您同時(shí)說明了這個(gè)值是一個(gè)標(biāo)識(shí)符。例如您的程序中如果已經(jīng)含有TDays類型且說明了DayOfWeeks變量,則程序中便不能使用Monday變量,因?yàn)樗呀?jīng)被說明為標(biāo)識(shí)符了。

子界類型

數(shù)組類型

數(shù)組是某種數(shù)據(jù)類型的有序組合,其中每一個(gè)元素的值由其相對(duì)位置來指定,您可以在數(shù)組的某個(gè)位置上放置數(shù)據(jù),并在需要時(shí)使用這些數(shù)據(jù)。下面的類型說明了一個(gè)Double型的數(shù)組變量:

var

Check:array[1..10]ofDouble; 

它表示Check指向一個(gè)含有10個(gè)Double型元素的數(shù)據(jù)串列,代表每一個(gè)元素的是1到10之間的數(shù)字,稱為索引。數(shù)組的每一項(xiàng)由數(shù)組名稱加上[]中的索引來表示。Check包含10個(gè)變量,Check[1]表示第一個(gè)變量。您也可以把數(shù)組定義成類型:

type

TCheck=array[1..10]ofDouble;

變量說明改為:

var

Check:TCheck; 

您可以通過給數(shù)組賦值等方法來使用數(shù)組。下面的語句將0.0賦給Check數(shù)組中的所有元素: 

forJ:=1to10do

Check[J]:=0.0;,

數(shù)組也可以是多維的,下面的類型定義了一個(gè)20行、20列的數(shù)組。

type

Ttable=array[1..20,1..20]ofDouble;

var

table1:TTable; 

,;,;想將這一表格的所有數(shù)據(jù)初始化為0.0,您可以使用for循環(huán): 

var

Col,Row:Integer;

forCol:=1to20do

forRow:=1to20do

Table1[Col,Row]:=0.0;

字符串類型

字符串類型事實(shí)上是一個(gè)一維的字符數(shù)組。當(dāng)您說明一個(gè)字符串型的變量時(shí),您應(yīng)當(dāng)指明這個(gè)字符串的大小,下面是說明字符串類型的例子:

type

MyString:string[15];

var

MyName:MyString; 

則變量MyName被說明成為最多可以包含15個(gè)字符。如果您沒有說明字符串的大小,Delphi會(huì)認(rèn)為字符串包含最大值255個(gè)字符。給字符串賦值可以直接使用

因?yàn)镸yName是一個(gè)可以包含15個(gè)字符的MyString型變量,上文的兩個(gè)的變量都是有效的,一個(gè)漢字可以視作兩個(gè)字符。當(dāng)您給字符串型變量賦的值多于定義數(shù)值時(shí),例如將MyName賦為‘FrankSmith.Franklin’,則Delphi只會(huì)接受前15個(gè)字符‘FrankSmith.Fran’。在內(nèi)存中,字符串通常占用比所說明的大小多一個(gè)

可以使用Delphi豐富的運(yùn)算符、過程和函數(shù)來處理字符串型的變量和屬性。下面介紹幾個(gè)常用的運(yùn)算符和Delphi過程或函數(shù):

Concat和(+)功能相同,都可以將多個(gè)字符串組合在一起,建立一個(gè)較大的字符串;Copy會(huì)返回一個(gè)字符串中的子字符串;Delete在一個(gè)字符串中從一個(gè)指定位置起刪除一定數(shù)目的字符;Insert在一個(gè)字符串中插入一個(gè)字符串;Length返回字符串的長(zhǎng)度;Pos返回一個(gè)子字符串在一個(gè)字符串中的位置,即索引值。

集合類型

集合類型是一群相同類型元素的組合,這些類型必須是有限類型如整形、布爾型、字符型、枚舉型和子界型。在檢查一個(gè)值是否屬于一個(gè)特定集合時(shí),集合類型非常有用。下面的例程可以說明集合類型的用法:在窗體上加入一個(gè)編輯框和一個(gè)按鈕,清除編輯框中的文字,在其上加上Caption為“輸入元音”的標(biāo)簽Label,并在編輯框的下方加入一個(gè)空的標(biāo)簽,將按鈕的Default屬性改為True,建立按鈕的事件處理過程如下: 

procedureTForm1.Button1Click(Sender:TObject);

type

Tvowels=setofChar;

var

Vowels:TVowels;

begin

Vowels:=['a','e','i','o','u'];

ifEdit1.Text[1]inVowelsthen

Lable2.Caption:='是元音';

else

Lable2.Caption:='請(qǐng)?jiān)僭?;

end; 

執(zhí)行這個(gè)程序,在編輯框中輸入字母,表達(dá)式Edit1.Text[1]inVowels的結(jié)果是布爾型的,in是運(yùn)算符,用來判斷字母是否存在于集合中。輸入的判別結(jié)果會(huì)顯示在編輯框的下方。以上就用到了集合類型TVowels。

記錄類型

記錄是您的程序可以成組訪問的一群數(shù)據(jù)的集合。下面的例程說明了一個(gè)記錄類型的用法: 

type

TEmployee=record

Name:string[20];

YearHired:1990..2000;

Salsry:Double;

Position:string[20];

end; 

記錄包含可以保存數(shù)據(jù)的域,每一個(gè)域有一個(gè)數(shù)據(jù)類型。上文的記錄TEmployee類型就含有四個(gè)域。您可以用以下的方式說明記錄型的

end; 

您的程序可以將記錄當(dāng)成單一實(shí)體來操作: 

PromptEmployee:=NewEmployee;

以上介紹了用戶常用的自定義類型。在Delphi的編程中,對(duì)象是非常重要的用戶自定義數(shù)據(jù)類型。象記錄一樣,對(duì)象是結(jié)構(gòu)化的數(shù)據(jù)類型,它包含數(shù)據(jù)的域(Field),也包含作為方法的過程和函數(shù)。在Delphi中,當(dāng)您向窗體中加入一個(gè)部件,也就是向窗體對(duì)象中加入了一個(gè)域;每一個(gè)部件也是對(duì)象,每當(dāng)您建立一個(gè)事件處理過程使得部件可以響應(yīng)一個(gè)事件時(shí),您即自動(dòng)地在窗體中加入了一個(gè)方法。

編程相關(guān) 編輯本段

對(duì)象編程

Delphi是基于面向?qū)ο缶幊痰南冗M(jìn)開發(fā)環(huán)境。面向?qū)ο蟮某绦蛟O(shè)計(jì)(OOP)是結(jié)構(gòu)化語言的自然延伸。OOP的先進(jìn)編程方法,會(huì)產(chǎn)生一個(gè)清晰而又容易擴(kuò)展及維護(hù)的程序。一旦您為您的程序建立了一個(gè)對(duì)象,您和其他的程序員可以在其他的程序中使用這個(gè)對(duì)象,完全不必重新編制繁復(fù)的代碼。對(duì)象的重復(fù)使用可以大大地節(jié)省開發(fā)時(shí)間,切實(shí)地提高您和其他人的工作效率?!?/p>

什么是對(duì)象  

一個(gè)對(duì)象是一個(gè)數(shù)據(jù)類型。對(duì)象就象記錄一樣,是一種數(shù)據(jù)結(jié)構(gòu)。按最簡(jiǎn)單的理解,可以將對(duì)象理解成一個(gè)記錄。但實(shí)際上,對(duì)象是一種定義不確切的術(shù)語,它常用來定義抽象的事務(wù),是構(gòu)成應(yīng)用程序的項(xiàng)目,其內(nèi)涵遠(yuǎn)比記錄要豐富。在本書中,對(duì)象可被理解為可視化部件如按鈕、標(biāo)簽、表等。了解對(duì)象,最關(guān)鍵的是掌握對(duì)象的特性。一個(gè)對(duì)象,其最突出的特征有三個(gè):封裝性、繼承性、多態(tài)性?!?/p>

對(duì)象的封裝性  

對(duì)對(duì)象最基本的理解是把數(shù)據(jù)和代碼組合在同一個(gè)結(jié)構(gòu)中,這就是對(duì)象的封裝特性。將對(duì)象的數(shù)據(jù)域封閉在對(duì)象的內(nèi)部,使得外部程序必需而且只能使用正確的方法才能對(duì)要讀寫的數(shù)據(jù)域進(jìn)行訪問。封裝性意味著數(shù)據(jù)和代碼一起出現(xiàn)在同一結(jié)構(gòu)中,如果需要的話,可以在數(shù)據(jù)周圍砌上“圍墻”,只有用對(duì)象類的方法才能在“圍墻”上打開缺口?!?/p>

對(duì)象的繼承性

繼承性的含義直接而且顯然。它是指把一個(gè)新的對(duì)象定義成為已存在對(duì)象的后代;新對(duì)象繼承了舊類的一切東西。在往新對(duì)象中添加任何新內(nèi)容以前,父類的每一個(gè)字段和方法都已存在于子類中,父類是創(chuàng)建子類的基石。 

對(duì)象的多態(tài)性

多態(tài)性是在對(duì)象體系中把設(shè)想和實(shí)現(xiàn)分開的手段。如果說繼承性是系統(tǒng)的布局手段,多態(tài)性就是其功能實(shí)現(xiàn)的方法。多態(tài)性意味著某種概括的動(dòng)作可以由特定的方式來實(shí)現(xiàn),這取決于執(zhí)行該動(dòng)作的對(duì)象。多態(tài)性允許以類似的方式處理類體系中類似的對(duì)象。根據(jù)特定的任務(wù),一個(gè)應(yīng)用程序被分解成許多對(duì)象,多態(tài)性把高級(jí)設(shè)計(jì)處理的設(shè)想如新對(duì)象的創(chuàng)建、對(duì)象在屏幕上的重顯、程序運(yùn)行的其它抽象描述等,留給知道該如何完美的處理它們的對(duì)象去實(shí)現(xiàn)。

數(shù)據(jù)繼承

前面的TForm1類型是很簡(jiǎn)單的,因?yàn)樗缓杏駼utton1和方法Button1Click。但是在這個(gè)窗體上,您可以改變窗體的大小、加入或刪除窗體的最大最小化按鈕,或設(shè)置這個(gè)窗體為MDI界面。對(duì)于一個(gè)只包含一個(gè)域和方法的對(duì)象來講,您并沒有看到顯式的支持程序。在窗體上單擊鼠標(biāo)或用ObjectInspector的上端的ObjectSelector選中Form1對(duì)象,按動(dòng)F1查閱它的在線幫助,您會(huì)在Properties和Method中找到它的繼承到的全部屬性和方法。這些是在TForm類型中說明的,TForm1是TForm的子類,直接繼承了它所有的域、方法、屬性和事件。例如窗體的顏色屬性Color就是在TForm中說明的。當(dāng)您在工程中加入一個(gè)新窗體時(shí),就等于加入了一個(gè)基本模型。通過不斷地在窗體中加入部件,您就自行定義了一個(gè)新的窗體。要自定義任何對(duì)象,您都將從已經(jīng)存在的對(duì)象中繼承域和方法,建立一個(gè)該種對(duì)象的子類。例如對(duì)象TForm1就被說明為對(duì)象TForm的子類,擁有一個(gè)窗體部件的基本屬性或方法。只有當(dāng)您在窗體中加入了部件或編寫了事件處理過程時(shí),F(xiàn)orm1才成為您自己的類型。

一個(gè)比較特殊的對(duì)象是從一個(gè)范圍較廣或較一般的對(duì)象中繼承下來的,它是這個(gè)特別對(duì)象的祖先,這個(gè)對(duì)象則稱為祖先的后代。一個(gè)對(duì)象只能有一個(gè)直接的祖先,但是它可以有許多后代。TForm是TForm1類型的祖先,所有的窗體對(duì)象都是TForm的后代。

用F1查閱窗體的在線幫助時(shí),您會(huì)發(fā)現(xiàn)TForm被稱為component(部件)。這是因?yàn)樗械牟考际菍?duì)象。

在這個(gè)結(jié)構(gòu)中所有的部件都是對(duì)象。部件類型TComponent從TObject類型中繼承數(shù)據(jù)和程序代碼,并具有額外的可以用作特殊用途的屬性、方法、事件,所以部件可以直接和用戶打交道,記錄它的狀態(tài)并存貯到文件中等等。控制類型TControl從TComponent中繼承而來,又增加了新的功能,如它可以顯示一個(gè)對(duì)象。在上圖中,雖然TCheckBox不是直接由TObject繼承來的,但是它仍然有任何對(duì)象所擁有的屬性,因?yàn)樵赩CL結(jié)構(gòu)中,TCheckBox終究還是從TObject中繼承了所有功能的特殊對(duì)象,但它還有些自行定義的獨(dú)到的功能,如可以選擇記錄狀態(tài)等。

對(duì)象范圍

一個(gè)對(duì)象的范圍決定了它的數(shù)據(jù)域、屬性值、方法的活動(dòng)范圍和訪問范圍。在一個(gè)對(duì)象的說明部分說明的數(shù)據(jù)域、屬性值、方法都只是在這個(gè)對(duì)象的范圍中,而且只有這個(gè)對(duì)象和它的后代才能擁有它們。雖然這些方法的實(shí)際程序代碼可能是在這個(gè)對(duì)象之外的程序庫單元中,但這些方法仍然在這個(gè)對(duì)象的范圍內(nèi),因?yàn)樗鼈兪窃谶@個(gè)對(duì)象的說明部分中說明的。

當(dāng)您在一個(gè)對(duì)象的事件處理過程中編寫程序代碼來訪問這個(gè)對(duì)象的屬性值、方法或域時(shí),您不需要在這些標(biāo)識(shí)符之前加上這個(gè)對(duì)象變量的名稱。例如,如果您在一個(gè)新窗體上加入一個(gè)按鈕和一個(gè)編輯框,并為這個(gè)按鈕編寫OnClick事件處理過程: 

procedureTForm1.Button1Click(Sender:Tobject);

begin

Color:=clFuchsia;

Edit1.Color:=clLime;

end; 

其中的第一行語句是為整個(gè)窗體Form1著色。可以編寫如下:

Form1.Color:=clFuchsia; 

但您可以不必加上Form1.,因?yàn)锽utton1Click方法是在TForm1對(duì)象的范圍里。當(dāng)您在一個(gè)對(duì)象的范圍中時(shí),您可以省略所有這個(gè)對(duì)象中的屬性值、方法、域之前的對(duì)象標(biāo)識(shí)符。但是當(dāng)您編寫第二個(gè)語句改變編輯框的底色時(shí),因?yàn)榇藭r(shí)您想訪問的是TEdit1對(duì)象的Color屬性,而不是TForm1類型的,所以您需要通過在屬性前面加?指明,Delphi會(huì)象第一個(gè)語句一樣,將窗體的顏色變成綠色。因?yàn)镋dit1部件是在窗體中的,它是窗體的一個(gè)數(shù)據(jù)域,所以您同樣不必指明其從屬關(guān)系。

如果Edit1是在其他窗體中,那么您需要在編輯框之前加上這個(gè)窗體對(duì)象的名稱了。例如,如果Edit1是在Form2之中,那它是Form2說明的一個(gè)數(shù)據(jù)域,并位于Form2的范圍中,那么您需要將第二句改為: 

Form2.Edit1.Color:=clLime; 

而且需要把Unit2加入U(xiǎn)nit1的uses子句中。    

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多