属性可以有如下几种类型下面只给出简单介绍而这些类型的属性会在组件制作时详细的运用
简单类型属性如上面定义的加一个例子
Property text:string read Ftext write SetText;
枚举类型属性
TEnumtype=(EnumEnumEnum);
FEnumtype:TEnumtype;
Property Enumtype:TEnumtype read FEnumtype write FEnumtype;
在对象察看器中看来就是下拉列框选择值
集合类型属性
Tset=(setsetset);
Tsets=set of Tset;
Fsets:Tsets;
Property sets:Tsets read Fsets write Fsets;
在对象察看器中看来就是列出几个选项分别设置真假比如TForm的BorderIcons属性即是
对象类型属性一个属性是一个对象而这个对象必须派生自Tpersistent或者他之下的类才能在对象察看器中可以展开它并设置它里面的属性
数组类型属性数组属性如果要在对象察看器中看见需要有自己的属性编辑器(如果不想在对象察看器看当然就不用啦)是比较高级的组件在后来的组件制作再来介绍会更直观一些这里只给出它的定义形式
property Selected[Index: Integer]: Boolean read GetSelected write SetSelected;
三事件
事件其实是一种特殊的属性他是指针类型指向一个事件方法类型当有特定的事件发生时它就会关联到一段执行代码
下面以一个例子来讲解事件是怎么发生的
我们先定义一个鼠标点下事件的鼠标事件类型它其实就是方法指针
type TMouseEvent = procedure (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X
Y: Integer) of object;
又定义一个私有成员鼠标事件类型的即一个方法指针类型
FonMouseDown:TMouseEvent
最后定义一个属性类要通过这个属性将外部的事件处理函数和FonMouseDown关联在一起
onMouseDown:TMouseEvent read FonMouseDown write FonMouseDown;
当有鼠标左键点击的系统会向窗口会发送WM_LBUTTONDOWN;消息
[] [] []