當前位置:成語大全網 - 書法字典 - Delphi基礎課程:DELPHI自定義組件開發(1)【1】

Delphi基礎課程:DELPHI自定義組件開發(1)【1】

Delphi不僅支持使用可視化組件WYSIWYG建立應用程序,還支持設計自己的組件來開發應用程序。

在本章中,我們將解釋如何為Delphi應用程序編寫組件。本章將實現兩個目的。

●教妳如何定制零件。

●使您的組件成為Delphi環境的有機組成部分。

德爾菲組件原則

什麽是組件?

組件是Delphi應用程序的程序組件。盡管大多數組件代表用戶界面的可見元素,但組件也可能是程序中的不可見元素,例如數據庫組件。要弄清楚什麽是組件,我們可以從功能定義、技術定義和經驗定義三個方面進行考察。

組件的功能定義

從最終用戶的角度來看,組件是在組件面板上選擇的,並在窗體設計窗口和代碼窗口中操作。從組件編寫人員的角度來看,組件就是代碼中的對象。在編寫組件之前,您應該熟悉現有的Delphi組件,以便您的組件可以滿足用戶的需求。編寫組件的目標之壹是使其盡可能與其他組件相似。

組件的技術定義

從最簡單的角度來看,組件是從TComponent繼承的任何對象。TComponent定義了所有組件必須具有的最基本的行為,例如在組件調色板上顯示和在表單設計窗口中編輯的功能,但是TComponent不知道如何處理您的組件的特定功能,因此您必須自己描述它。

組件作者自己的定義

在實際編程中,組件是可以插入到Delphi開發環境中的任何元素。它可能有各種各樣復雜的程序。簡而言之,只要能夠集成到組件框架中,組件定義就只是壹個接口描述。本章將詳細闡述組件框架,就像解釋編程的局限性壹樣。本章不會教妳如何用給定的語言編寫每個組件,而是告訴妳如何將組件集成到Delphi環境中。

書寫部分的差異

在Delphi環境中構建組件和在應用程序中使用組件有三個重要的區別。

●編寫組件的過程是非可視化的。

●編寫組件需要對對象有更深入的了解。

●寫零件需要遵循更多的規則。

編寫組件是非可視化的。

編寫組件與建立Delphi應用程序最明顯的區別是組件的編寫完全是以代碼的形式進行的,即它是非可視化的,因為Delphi應用程序的可視化設計需要完整的組件,而這些組件的建立需要用Object Pascal代碼編寫。

雖然您不能使用可視化工具來構建組件,但您可以使用Delphi開發環境的所有編程功能,如代碼編輯器、集成調試和對象瀏覽。

編寫零件需要對對象有更深入的了解。

除了非可視化編程之外,構建組件和使用組件的最大區別是,在構建新組件時,需要從現有組件繼承並生成壹個新的對象類型,並添加新的屬性和方法。另壹方面,在構建Delphi應用程序時,組件用戶僅使用現有組件通過更改組件屬性和描述響應事件來定制他們在設計階段的行為。

當繼承產生壹個新對象時,您有權訪問最終用戶看不到的祖先對象部分。這些部分被稱為受保護的接口。在大多數實現中,後代還需要調用其祖先對象的方法,因此組件編寫人員應該非常熟悉面向對象的編程特性。

寫零件時有更多的規則可循。

編寫部件的過程采用了比可視化應用程序生成更傳統的編程方法,並且比使用現有部件有更多的規則可循。在編寫自己的部件之前,最重要的是熟練使用Delphi自己的部件,以直觀地了解命名規則和部件用戶期望的功能。零件用戶期望的最重要的事情是他們可以在任何時候為零件做任何事情,只要他們事先想到並遵循規則,編寫符合這些期望的零件並不難。

構建零件的過程概述

簡而言之,創建定制部件的過程包括以下步驟。

●建立壹個包含新零件的庫單元。

●從現有組件類型繼承新組件類型。

●添加屬性方法和事件。

●在Delphi中註冊組件。

●為部件的屬性方法和事件創建幫助文件。

如果完成這些任務的完整部分包含以下文件。

●編譯庫單元(DCU文件)

●選擇紙板位圖?《DCR檔案》

●幫助文件(HLP文件)

●幫助關鍵字文件(KWF文件)

Delphi組件編程方法

Delphi組件編程概述

Delphi可視化組件類庫

Delphi的組件都是可視化組件類庫(VCL)的對象繼承樹的壹部分。以下是組成VCL的對象之間的關系列表。TComponent是VCL每個組件的祖先。TComponent為Delphi組件正常工作提供了最基本的屬性,事件庫中的所有分支都提供了其他更具體的功能。

構建組件時,通過從對象樹中的現有對象繼承來獲得新對象,並將其添加到VCL。

創建零件的起點。

組件是您希望在設計時運行的任何程序元素。創建壹個新組件意味著從現有類型繼承以獲得壹個新的組件對象類。

創建新零件的主要方法如下

●修改現有控制。

●建立原始控制。

●建立圖形控制。

●建立Windows控件的子類。

●創建非視覺組件。

下表列出了不同建立路徑的起始類別。

該表定義了零件的起點。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

路徑?初始類別

─────────────────────────────

修改現有部件任何現有部件,如t按鈕t列表框。

或抽象組件對象,如TCustomListBox。

建立原始控制?t自定義控件

建立圖形控件TGraphicControl

在控件中建立窗口控件的子類

創建非可視組件TComponent

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

您也可以繼承不是部件的其他對象,但不能在窗體設計窗口中操作它們。Delphi包括許多這樣的對象,例如tiny t字體。

修改現有控件

構建組件最簡單的方法是繼承現有的可用組件並對其進行定制。它可以繼承Delphi提供的任何組件,例如,它可以更改標準控件(如TButton)的默認屬性值。

有些控件(如Listbox和Grid)有許多相同的變量。在這種情況下,Delphi提供了抽象控件類型,從中可以定制許多類型。例如,您可能希望創建壹種特殊類型的TListBox。該部件沒有標準TListBox的某些屬性,因此您不能從祖先類型中刪除屬性,因此您需要從比TListBox更高級別的部件中移動。繼承如TCustomListBox,該組件實現TCustomListBox的所有屬性,但不發布它們。當從抽象類(如TCustomListBox)繼承時,您可以發布那些希望對其他人可用並受保護的屬性。

建立原始控制

標準控件在運行時可見。這些標準控件都繼承自inControl。建立原始控件時,使用TCustomControl作為起始點。標準控件的關鍵特性是它具有將窗口句柄存儲在屬性句柄中的控件。

●可以接受輸入焦點。

●可以將句柄轉移到Windows API函數。

如果控件不需要接受輸入焦點,您可以將其設置為圖形控件,這樣可以節省系統資源。

Lishi Xinzhi/Article/program/Delphi/201311/25121