class function 和funcion 有什么区别
解决方案 »
- 如何在fastreport对文字进行竖排,尤其是括号‘('。
- cxGrid 多选问题
- 在线等候解答:Delphi中的string[10] 对应C++Builder的什么含义?
- 用winexec()调用外部命令,如果含中文路径就不能执行??请问怎么解决??
- 急 !!各位大哥大姐,谁知道delphi6在什么地方下?
- 急!!!在线等待---DbiPackTable需要什么头文件?
- 特殊菜单如何搭配 HotKey?
- 熟悉瑞星的朋友请进来!
- 何方高人指点一下,急呀!!!
- contexteditor 这个delphi写的开源编辑器怎么样才能支持utf8
- sqlserver 中使用ado控件插入图像问题
- 一简单问题,怎样获取计算器名?
类引用类型有时叫做元类(metaclass),表示类引用类型的结构具有如下形式class of type这里的type是任何类类型。标识符type自身表示一个值,它的类型是type类。如果type1是type2的祖先,那么type2的类与type1的类是赋值兼容的。因此,type TClass = class of TObject;var AnyObj: TClass;这里声明一个叫做AnyObj的变量,用于可以保存对任何类的引用。(类引用类型的定义不能直接出现在变量声明或参数列表声明中。)可以把值nil赋给任何类引用类型的变量。要明白类引用类型是如何被使用的,可以查看TCollection(Classes单元中)的构造器声明:type TCollectionItemClass = class of TCollectionItem; ...constructor Create(ItemClass: TCollectionItemClass);这里的声明表明,要创建TCollection的实例对象,就必需向构造器传递TCollectionItem类或自该类派生的类的名称。编译时,想要调用类或对象的类方法或者虚拟的构造器,而不知道其实际类型时,类引用类型是有用的。
构造器和类引用
构造器可以被类引用类型的变量调用。这就允许在编译时构造类型未知的对象。例如,type TControlClass = class of TControl;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);用类引用调用的构造器通常是虚拟的。运行时类引用的类型决定了构造器在调用时的具体实现。
如一个类的名称:classname 可以写成class function
funcion 只能在声明的对象中使用,如该对象的一个具体属性。
public
class function MyFunc1: Boolean;
function MyFunc2: Boolean
end;函数前有class说明这是一个类方法,那意味着MyFunc1在MyClass没有创建时也可调用,而MyFunc2必须在MyClass类创建后才可访问。由于MyFunc1在类没有创建时即可调用,那么意味着类方法中不能调用MyClass中的其它特性和方法。详情参见Delphi的联机帮助。