b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

pascal 视频教程_pascal和basic_pascal选择排序(85)

电脑杂谈  发布时间:2016-12-28 07:02:37  来源:网络整理

function CreateControl(ControlClass: TControlClass;

const ControlName: string; X, Y, W, H: Integer): TControl;

begin

Result := ControlClass.Create(MainForm);

with Result do

begin

Parent := MainForm;

Name := ControlName;

SetBounds(X, Y, W, H);

Visible := True;

end;

end;

CreateControl函数需要一个类引用类型的参数,它指定创建何种控件,函数使用这个参数来调用构造函数。因为类标志符(类名)表示一个类引用的值,所以能使用它作为参数来调用CreateControl创建一个实例。比如,

CreateControl(TEdit, 'Edit1', 10, 10, 100, 20);

使用类引用来调用的构造函数通常是虚方法,实际调用的构造函数(指实现)由运行时类引用的类型决定。

Class operators(类运算符)

Class operators: Overview(概述)

每个类从TObject继承了两个分别叫做ClassType和ClassParent的方法,前者返回对象的类引用,后者返回对象的父类类引用。这两个方法的返回值都是TClass(这里TClass = class of TObject)类型,它们能被转换为更加明确的类型。每个类还继承了一个叫做InheritsFrom的方法,它测试调用的对象是否从一个指定的类派生而来(如果对象是类的一个实例,结果如何?)。这些方法被is和as运算符使用,很少直接调用它们。

The is operator(is运算符)

is运算符执行动态类型检查,用来验证运行时一个对象的实际类型。

object is class

- 114 -

Classes and objects

若object对象是class类的一个实例,或者是class派生类的一个实例,上面的表达式返回True,否则返回False(若object是nil,则结果为False)。如果object声明的类型和class不相关,也就是说,若两个类不同并且其中一个不是另一个的祖先,则发生编译错误。比如,

if ActiveControl is TEdit then TEdit(ActiveControl).SelectAll;

上面的语句先检查一个对象(变量)是否是TEdit或它的派生类的一个实例,然后再决定是否把它转换为TEdit。

The as operator(as运算符)

as运算符执行受检查的类型转换。表达式

object as class

返回和object相同的对象引用,但它的类类型是class。在运行时,object对象必须是class类的一个实例,或者是它的派生类的一个实例,或者是nil,否则将产生异常;若object声明的类型和class不相关,也就是说,若两个类不同并且其中一个不是另一个的祖先,则发生编译错误。比如,

with Sender as TButton do

begin

Caption := '&Ok';

OnClick := OkClick;

end;

因为运算符优先权的问题,我们经常需要把as类型转换放在一对括号中,比如,

(Sender as TButton).Caption := '&Ok';

Class methods(类方法)


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-23665-85.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 王治超
      王治超

      选个“总统”还要去老美那汇报

    • 钱勇超
      钱勇超

      看待问题要从全局出发

    热点图片
    拼命载入中...