其他语言

位置:IT落伍者 >> 其他语言 >> 浏览文章

DELPHI基础教程:Delphi自定义部件开发(三)[4]


发布日期:2023年10月07日
 
DELPHI基础教程:Delphi自定义部件开发(三)[4]

下面是DataSource和DataField的声明和它们的实现方法

type

TDBCalendar = class(TSampleCalendar)

private { 属性的实现方法是 }

function GetDataField: string; { 返回数据库字段的名字 }

function GetDataSource: TDataSource; { 返回数据源(Data source)的引用 }

procedure SetDataField(const Value: string) { 给数据库字段名赋值 }

procedure SetDataSource(Value: TDataSource) { 给数据源赋值 }

published { 使属性在设计时可用 }

property DataField: string read GetDataField write SetDataField;

property DataSource: TDataSource read GetDataSource write SetDataSource;

end;

……

function TDBCalendarGetDataField: string;

begin

Result := FDataLinkFieldName;

end;

function TDBCalendarGetDataSource: TDataSource;

begin

Result := FDataLinkDataSource;

end;

procedure TDBCalendarSetDataField(const Value: string)

begin

FDataLinkFieldName := Value;

end;

procedure TDBCalendarSetDataSource(Value: TDataSource)

begin

FDataLinkDataSource := Value;

end;

现在就建立了日历和DataLink的链此外还有一个更重要的步骤你必须在日历构建时创建DataLink对象在日历析构时撤消DataLink对象

⑶ 初始化DataLink

在数据相关控制在其存在的期间要不停地访问DataLink对象因此必须在其构建函数中创建DataLink创建并且在析构时撤消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 := TFieldDataLinkCreate;

end;

destructor TDBCalendar Destroy;

begin

FDataLinkFree;

inherited Destroy;

end;

现在部件已拥有完整的DataLink但部件还不知从相联的域中读取什么数据

响应数据变化

一旦控制拥有了数据联接(DataLink)和描述数据源和数据域的属性就需在数据记录改变时响应域中数据的变化

DataLink对象都有个名为OnDataChange的事件当数据源指示数据发生变化时DataLink对象调用任何OnDataChange所联接的事件处理过程

要在数据改变时更新数据就需要给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 := TFieldDataLinkCreate;

FDataLinkOnDataChange := DataChange;

end;

destructor TDBcalendarDestroy;

begin

FDataLinkOnDataChange := nil;

FDataLinkFree;

inherited Destroy

end;

procedure TDBCalendarDataChange(Sender: TObject)

begin

if FDataLinkFiled=nil then

CalendarDate := ;

else

CalendarDate := FDataLinkFieldAsDate;

end;

返回目录DELPHI基础教程

编辑推荐

Java程序设计培训视频教程

JEE高级框架实战培训视频教程

Visual C++音频/视频技术开发与实战

Oracle索引技术

ORACLEG数据库开发优化指南

Java程序性能优化让你的Java程序更快更稳定

C嵌入式编程设计模式

Android游戏开发实践指南

[] [] [] []

               

上一篇:DELPHI基础教程:Delphi自定义部件开发(二)[1]

下一篇:DELPHI基础教程:Delphi自定义部件开发(三)[3]