其他语言

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

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


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

下面给Shape控制增加了该方法并更新了部件的constructor以使Pen和Brush事件指向新方法

type

TSampleShape = class(TGraphicControl)

published

procdeure StyleChanged(Sender: TObject)

end;

implemintation

constructor TSampleShapeCreate(AOwner:TComponent)

begin

inherited Create(AOwner)

Width := ;

Height := ;

Fpen := TPenCreate;

FPenOnChange := StyleChanged;

Fbrush := TBrushCreate;

FBrushOnChange := StyleChanged;

end;

procedure TSampleShapeStyleChanged(Sender: TObject)

begin

Invalidate(true)

end;

当变化发生时部件重画以响应Pen或Brush的改变

怎样画部件图形

图形控制基本要素是在屏幕上画图形的方法抽象类TGraphicControl定义了名为Paint的虚方法可以覆盖该方法来画所要的图形

Shape控制的paint方法需要做

● 使用用户选择的Pen和Brush

● 使用所选的形状

● 调整座标这样方形和圆可以使用相同的Width和Height

覆盖paint方法需要两步

● 在部件声明中增加Paint方法的声明

● 在implementation部分写Paint方法的实现

下面是Paint方法的声明

type

TSampleShape = class(TGraphicControl)

protected

procedure Paint; override;

end;

然后编写Paint的实现

procedure TSampleShapePaint;

begin

with Canvas do

begin

Pen := FPen;

Brush := FBrush;

case FShape of

sstRectangle sstSquare :

Rectangle( Width Height)

sstRoundRect sstRoundSquare:

RoundRect( Width Height Width div Height div

sstCircle sstEllipse :

Ellipse( Width Height)

end;

end;

end;

无论任何控制需要更新图形时Paint就被调用当控制第一次出现或者当控制前面的窗口消失时Windows会通知控制画自己也可以通过调用Invalidate方法强制重画就象StyleChanged方法所做的那样

返回目录DELPHI基础教程

编辑推荐

Java程序设计培训视频教程

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

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

Oracle索引技术

ORACLEG数据库开发优化指南

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

C嵌入式编程设计模式

Android游戏开发实践指南

[] [] [] []

               

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

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