Delphi在很大程度上采用了面向对象的开发思路,所以,在采用delphi作为开发工具时,class和对象就显得 尤为重要! 对class的明确定义是:对具有相同特征的一类事物所做的归纳。作为一个非常抽象的概念,我们可以对类 这个字举例来理解:在校的学生,虽然每个人都会有不同的情况,还有小学生、中学生、大学生之分,男、 女生之分,但是他们有一个共同点,都处于求学阶段。我们就可以把他们归纳为“学生类”,而每一个学生 就是学生类的对象(有一点需要说明,在很多书中,有实体或者实例这种说法,这里实体或者实例也就是提 到的对象)。 而类的属性指的是类的静态特征,作为上面提到的“学生类”,我们说他具有性别、年龄、学号、班级、学 校名称、各科考试成绩等等特征,而这些,也就是学生类属性。 类的方法即类的动态特征,即属于这一类的事物在接收到某种消息或命令时做出的反应,比如学生上课就是 学生类的一个方法,而这个方法的触发就是上课铃响这一个消息的产生。 类的庞大作用还体现在它的无限继承中。作为上面提到的学生类,我们以教育程度来分,不难看出,还可以 分出大学生类,中学生类,小学生类,而他们比学生类这个范围更具体,学生类所具有的属性他们每一个都 具有。也就是说,他们都是从学生类继承而来,在学生类的基础上更准确的进行了划分。在这儿,学生类作 为父类,大学生类、中学生类、小学生类等作为子类出现。当然,在学生类以上,也有更抽象的类。比如, 人类是所以具有人类特征的归纳,学生类比人类更具体,在这个地方,人类作为父类,学生类作为子类。从 这儿可以看出,我们可以根据我们的需要,定义一个适合我们使用的类而不需要每一个属性、方法都去写出 来,只要简单的继承父类就可以了。(通常所说的派生即是父类对子类的说法:父类派生子类). VCL类库 delphi面向对象的基础就是类,要真正了解和提高delphi的知识水平,我们有很大的必要弄清楚delphi为我们 提供的vcl(类库)。 Delphi的层次结构如下: 从图中我们可以看出,Tobject是delphi系统中的所有类的祖先类,其他每一个类都是他的字类。 根据上面的 层次关系,我们可以看到delphi中每一个类的继承和派生,对我们使用自定义类是非常必要的。下面主要介 绍部分类: Tpersistent类: 它由Tobject祖先类直接派生。需要指出的是,Tpersistent类成员都能够进行流的操作(对数据以数据流的形 式传递) 常用方法: Assign() 一个组件把另一个组件相关的值赋给自己; AssignTo() 与Assign()相反,在Tpersistent中申明为私有,派生类必须实现他的定义; Tcomponent类 由Tpersistent类直接派生,它的对象的特性:在设计期间其属性可以由Object inspector来控制,能够拥有其 他组件。 Tcomponent类可派生可视组件和非可视组件,如Tbutton和Tmenu Tcomponent类常用属性: Owner:设置或读取组件拥有者; CompenentCount:读取或设置组件的拥有数目; ComponentIndex:读取组件在其拥有者列表中的位置(从0开始); Components:他为一个数组,包含其拥有的组件列表(从0开始); Name:设置和读取组件名称; Tcomponent类常用方法 Create:构造对象; Destroy:释放对象; Getparentcomponent:取得父组件,没有则返回nil; HasParent:判断组件是否有父组件; InsertComponent:增加一个组件,由调用该方法的组件所拥有; RemoveComponent:删除一个自己拥有的组件; Findcomponent(str:string):根据给出的组件名查找组件; Tcontrol类 应用:一般用于可视组件 它的属性包括了本身的位置信息,尺寸信息,外观属性等,如: Top,Left,Width,Height,Visible,enable,text,caption等; 它引入了标准事件如: Onclick,OnDblclick,OnmouseDown,OnmouseMove等 需要说明的是,在delphi 中,不能创建它的派生类,只能通过它已经存在的派生类TwinControl和 TgraphicControl派生; TwinControl类 TwinControl类:标准窗口控件由它派生; 它的对象有窗口句柄(指向对象的指针),能够接受输入焦点,能够成为其他控件的父; 在应用程序开发中,一般使用TwinControl的派生类; TwinControl类的常用属性: Brush:用于绘制控件外形; Controls: 包含控件的所有子控件(值为一个数组); ControlCount:读取子控件的数目; Handle:读取TwinControl类对象的句柄; Showing:设置或读取对象是否可见; Tabstop:设置用户是否能够用TAB键移动焦点; Taborder:设置对象在其父列表中的序号(从0开始); TgraphicControl类 本类控件没有窗口句柄,不能接收输入焦点,同样也不能是其他控件的父; TcostomControl类: 它的派生类常作为自定义控件的基类