创建图形部件
图形控制是一类简单的部件因为纯图形部件从不需要得到键盘焦点所以它没有也不要窗口句柄包含图形控制的应用程序用户仍然可以用鼠标操作控制但没有键盘界面
在本例中提供的图形部件是TShapeShape部件位于Component Palette的Additional页本例中的Shape部件有所不同因此称其为TSampleShape
创建图形部件需要下列三个步骤
● 创建和注册部件
● 公布(publishing)继承的属性
● 增加图形功能
创建和注册部件
每个部件的创建都从相同的方式开始在本例中如下
● 建立名为Shapes的部件单元
● 从TGraphicControl 继承将新部件称为TSampleShape
● 在Component Palette的Samples页上注册TSampleShape
unit Shapes
intertace
use SysUtils WinTypes WinProcs Messages Classes
GraphicsControlsForms;
type
TSampleShape=class(TGraphicControl)
end;
implementation
procedure Register;
begin
RegisterComponents(Samples[TSampleShape])
end;
end
公布继承的属性
一旦决定了部件类型就能决定在父类的protected部分声明哪些属性和事件能为用户可见TGraphicControl已经公布了所有作为图形控制的属性因此只需公布响应鼠标和拖放事件的属性
type
TSampleShape=class(TGraphicControl)
published
property DragCursor;
property DragMode;
property OnDragDrop;
property OnDragOver;
property ONEndDrag;
property OnMouseDown;
property OnMouseMove;
property OnMouseup;
end;
这样该Shape控制具有通过鼠标和拖放与用户交互的能力
增加图形能力
一旦你声明了图形部件并公布了继承的属性就可以给部件增加图形功能这时需要知道两点
● 决定画什么
● 怎样画部件图形
在Shape控制的例子中需要增加一些能使用户在设计时改变形状的属性
决定画什么
图形部件通常都具有改变外观的能力图形控制的外观取决于其某些属性的结合例如Gauge控制具有决定其形状方向和是否图形化地显示其过程的能力同样Shape控制也应有决定显示各种形状的能力
给予Shape控制这种能力增加名为Shape的属性这需要下列三步
● 声明属性类型
● 声明属性
● 编写实现方法
⑴ 声明属性类型
当声明一个用户自定义类型的属性时必须首先声明属性类型最普通地用于属性的自定义类型是枚举类型
对Shape控制来说需要声明一个该控制能画形状的枚举下面是枚举类型的声明
type
TSampleShapeType=(sstRectangle sstSquare sstRoundRect
sstRoundSquare sstEllipse sstCircle)
TSampleShape = class(TGraphicControl)
end;
这样就可以用该类型来声明属性
[] [] [] []