●
决定画什么●
怎样画部件图形
在Shape控制的例子中,需要增加一些能使用户在设计时改变形状的属性。
1.
决定画什么图形部件通常都具有改变外观的能力,图形控制的外观取决于其某些属性的结合,例如
Gauge控制具有决定其形状、方向和是否图形化地显示其过程的能力。同样,Shape控制也应有决定显示各种形状的能力. 给予Shape控制这种能力,增加名为Shape的属性。这需要下列三步: ● 声明属性类型 ● 声明属性 ● 编写实现方法⑴
声明属性类型当声明一个用户自定义类型的属性时,必须首先声明属性类型。最普通地用于属性的自定义类型是枚举类型。
对
Shape控制来说,需要声明一个该控制能画形状的枚举,下面是枚举类型的声明:
type
TSampleShapeType=(sstRectangle, sstSquare, sstRoundRect,
sstRoundSquare, sstEllipse, sstCircle);
TSampleShape = class(TGraphicControl)
end;
这样,就可以用该类型来声明属性。 ⑵ 声明属性 当声明一个属性时,通常需要声明私有域来保存属性值,然后描述读写属性值的方法。 对于Shape控制,将声明一个域保存当前形状,然后声明一个属性通过方法调用来读写域值。
type
TSampleShape=class(TGrahpicControl)
private
FShape: TSampleShapeType;
procedure SetShape(value: TSampleShapeType);
published
property Shape: TSampleShapeType read FShape write SetShape;
end;
现在,只剩下SetShape的实现部分了。 ⑶ 编写实现方法 下面是SetShape的实现:
procedure TSampleShape.SetShape(value: TSampleShapeType);
begin
if FShape<>value then
begin
FShape := value;
Invalidate(True); {
强制新形状的重画 }end;
end;
2.
覆盖constructor和destructor 为了改变缺省属性值和初始化部件拥有的对象,需要覆盖继承的constructor
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




