19.3.2 創建圖形部件
圖形控制是一類簡單的部件。因為純圖形部件從不需要得到鍵盤焦點,所以它沒有也不要窗口句柄。包含圖形控制的應用程序用戶仍然可以用鼠標操作控制,但沒有鍵盤界面。
在本例中提供的圖形部件是TShape。Shape部件位於Component Palette的Additional頁。本例中的Shape部件有所不同,因此稱其為TSampleShape。
創建圖形部件需要下列三個步驟:
● 創建和注冊部件
● 公布(publishing)繼承的屬性
● 增加圖形功能
19.3.2.1 創建和注冊部件
每個部件的創建都從相同的方式開始,在本例中如下:
● 建立名為Shapes的部件單元
● 從TGraphicControl 繼承,將新部件稱為TSampleShape
● 在Component Palette的Samples頁上注冊TSampleShape
unit Shapes
intertace
use SysUtils, WinTypes, WinProcs, Messages, Classes,
Graphics,Controls,Forms;
type
TSampleShape=class(TGraphicControl)
end;
implementation
procedure Register;
begin
RegisterComponents('Samples',[TSampleShape]);
end;
end.
19.3.2.2 公布繼承的屬性
一旦決定了部件類型,就能決定在父類的protected部分聲明哪些屬性和事件能為用戶可見。TGraphicControl已經公布了所有作為圖形控制的屬性,因此,只需公布響應鼠標和拖放事件的屬性。
type
TSampleShape=class(TGraphicControl)
published
property DragCursor;
property DragMode;
property OnDragDrop;
property OnDragOver;
property ONEndDrag;
property OnMouseDown;
property OnMouseMove;
property OnMouseup;
end;
這樣,該Shape控制具有通過鼠標和拖放與用戶交互的能力。
19.3.2.3 .增加圖形能力
一旦你聲明了圖形部件並公布了繼承的屬性,就可以給部件增加圖形功能。這時需要知道兩點:
● 決定畫什麼
● 怎樣畫部件圖形
在Shape控制的例子中,需要增加一些能使用戶在設計時改變形狀的屬性。