作为组件制作的开始应该了解一些概念我以为这些概念是非常重要的将可以作为以后实践的理论基础
一组件的简要层次结构
一般情况下VCL的组件可以从Tcomponent为开始其最明显的特征就是它的属性可以在设计时通过对象察看器来操纵另外他还能拥有其他组件
从Tcomponent下分出非可视组件和可视组件
非可视组件如TOPenDialogTTimerTTable等这些组件因为继承自Tomponent所以也就继承了在设计时可以被操纵的特性
可视化组件始自TControl是它引入了可视化属性和方法使继承自它的类都有了这些可视化特性
TControl又分出两类组件类型从TWinControl(窗口控件)自下的控件和从TGraphicControl(图形控件)自下的控件继承自TWinControl的控件将Windows控件进行封装所以拥有Windows控件的很多特性比如可以得到焦点有唯一的句柄用户可以通过发送消息与这些控件进行交互等而继承自TGraphicControl的控件也是可见的但没有句柄可以称之为图形控件比如TLabelTBevel都是Delphi画出来的并不占用系统资源
二属性
先看一个简单的属性定义
TsomeObj=class
Private
FCount:integer;
Protected
Procedure SetCount(value:Integer);
published
Property count:integer read FCount write SetCount default ;//属性定义
End;
该属性从私有成员FCount读出值而靠SetCount方法设置值到私有成员FCount
属性的优势在于可以很直观进行读写而又不同于私有成员因为属性可以通过写访问方法来保护私有成员
Procedure TsomeBojSetCount(value:Integer);
Begin
If FCount<>value then
FCount:=value;
End;
其中属性定义中的Default并不是默认值(即对象察看器显示的值)默认值要在组件类的构造函数中设定而Default有这样的作用决定DFM文件中是否要保存该属性的值比如上面为Default 即当该属性值为时则该属性不会被保存到DFM中如果该属性值不为则该属性会被保存到DFM中另外属性定义还有一个关键字为
NoDefault设置了这个关键字比如
Property count:integer read FCount write SetCount NoDefault;
则无论它的值是什么都会被写到DFM文件中
[] [] []