其他语言

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

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


发布日期:2024年04月18日
 
DELPHI基础教程:Delphi自定义部件开发(四)[3]

下面的代码声明了Pen和Brush的对象域

type

TSampleShape=class(TGraphicControl)

private

FPen: TPen;

FBrush: TBrush;

end;

⑵ 声明访问属性

可以通过声明与Owned对象相同类型的属性来提供对Owned对象的访问能力这给使用部件的开发者提供在设计时或运行时访问对象的途径

下面给Shape控制提供了访问Pen和Brush的方法

type

TSampleShape=class(TGraphicControl)

private

procedure SetBrush(Value: TBrush)

procedure SetPen(Value: TPen)

published

property Brush: TBrush read FBrush write SetBrush;

property Pen: TPen read FPen write SetPen;

end;

然后在库单元的implementation部分写SetBrush和SetPen方法

procedure TSampleShapeSetBrush(Value: TBrush)

begin

FBrushAssign(Value)

end;

procedure TSampleShapeSetPen(Value: TPen)

begin

FPenAssign(Value)

end;

⑶ 初始化Owned对象

部件中增加了的新对象必须在部件constructor中建立这样用户才能在运行时与对象交互相应地部件的destructor必须在撤消自身之前撤消Owned对象

因为Shape控制中加入了Pen和Brush对象因此要在constructor中初始化它们在destructor中撤消它们

① 在Shape控制的constructor中创建Pen和Brush

constructor TSampleShapeCreate(Aowner: TComponent)

begin

inherited Create(AOwner)

Width := ;

Height := ;

FPen := TPenCreate;

FBrush := TBrushCreate;

end;

② 在部件对象的声明中覆盖destructor

type

TSampleShape=class(TGraphicControl)

public

construstorCreate(Aowner: TComponent) override;

destructordestroy; override;

end;

③ 在库单元中的实现部分编写新的destructor

destructor TSampleShapedestroy;

begin

FPenFree;

FBrushFree;

inherited destroy;

end;

④ 设置Owned对象的属性

处理Pen和Brush对象的最后一步是处理Pen和Brush发生改变时对Shape控制的重画问题Pen和Brush对象都有OnChange事件因此能够在Shape控制中声明OnChange事件指向的事件处理过程

[] [] [] []

               

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

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