⑶ 初始化DataLink
在數(shù)據(jù)相關(guān)控制在其存在的期間要不停地訪問DataLink對象,因此,必須在其構(gòu)建函數(shù)中創(chuàng)建DataLink創(chuàng)建并且在析構(gòu)時,撤消DataLink對象,因此要覆蓋日歷的Create和Destroy方法。
type
TDBCalendar=class(TCalendar)
public
constructor Create(Aowna: TComponent); override;
destructor Destroy; override;
end;
constructor TDBCalendar Create (Aowner: TComponent);
begin
inherited Create(AOwner);
FReadOnly := True;
FDataLink := TFieldDataLink.Create;
end;
destructor TDBCalendar Destroy;
begin
FDataLink.Free;
inherited Destroy;
end;
現(xiàn)在,部件已擁有完整的DataLink,但部件還不知從相聯(lián)的域中讀取什么數(shù)據(jù)。
19.3.1.4 響應數(shù)據(jù)變化
一旦控制擁有了數(shù)據(jù)聯(lián)接(DataLink)和描述數(shù)據(jù)源和數(shù)據(jù)域的屬性。就需在數(shù)據(jù)記錄改變時響應域中數(shù)據(jù)的變化。
DataLink對象都有個名為OnDataChange的事件。當數(shù)據(jù)源指示數(shù)據(jù)發(fā)生變化時,DataLink對象調(diào)用任何OnDataChange所聯(lián)接的事件處理過程。
要在數(shù)據(jù)改變時更新數(shù)據(jù),就需要給DataLink對象的OnDataChange事件增加事件處理過程。
下面聲明了DataChange方法,并將其賦給DataLink對象的OnDataChange事件:
type
TDBCalendar=class(TCalendar)
private
procedure Datachange(Sender: TObject);
end;
constructor TDBCalendar Create(AOwner:TComponent);
begin
inherited Create(AOwner);
FReadOnly := True;
FDataLink := TFieldDataLink.Create;
FDataLink.OnDataChange := DataChange;
end;
destructor TDBcalendar.Destroy;
begin
FDataLink.OnDataChange := nil;
FDataLink.Free;
inherited Destroy
end;
procedure TDBCalendar.DataChange(Sender: TObject);
begin
if FDataLink.Filed=nil then
CalendarDate := 0;
else
CalendarDate := FDataLink.Field.AsDate;
end;
;
19.3.2 創(chuàng)建圖形部件
圖形控制是一類簡單的部件。因為純圖形部件從不需要得到鍵盤焦點,所以它沒有也不要窗口句柄。包含圖形控制的應用程序用戶仍然可以用鼠標操作控制,但沒有鍵盤界面。
在本例中提供的圖形部件是TShape。Shape部件位于Component Palette的Additional頁。本例中的Shape部件有所不同,因此稱其為TSampleShape。
創(chuàng)建圖形部件需要下列三個步驟:
● 創(chuàng)建和注冊部件
● 公布(publishing)繼承的屬性
● 增加圖形功能
19.3.2.1 創(chuàng)建和注冊部件
每個部件的創(chuàng)建都從相同的方式開始,在本例中如下:
● 建立名為Shapes的部件單元
● 從TGraphicControl 繼承,將新部件稱為TSampleShape
● 在Component Palette的Samples頁上注冊TSampleShape
unit Shapes
intertace
use SysUtils, WinTypes, WinProcs, Messages, Classes,
Graphics,Controls,F(xiàn)orms;
type
TSampleShape=class(TGraphicControl)
end;
implementation
procedure Register;
begin
RegisterComponents('Samples',[TSampleShape]);
end;
end.
相關(guān)推薦:2010年9月計算機等級考試試題及答案解析專題北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |