delphi中有TClass = class of TObject,
请问这个定义有什么用处?最好详细些
请问这个定义有什么用处?最好详细些
解决方案 »
- delphi 6 升级到 Delphi XE
- 请教多线程高手,TThread为何不起作用呢?
- 偶今年已经29了,01年底开始用delphi做项目,到现在已经6年多的工作经验,请问可以拿到多少钱的薪水?
- access插入数据
- delphi7怎么没有报表控件栏?
- 高分求救,高手请进,关于多表联合查询问题!!在线等待
- 哪位老大给我写段sql代码,增加一个数据库用户。
- delphi好象不能分辨fieldattribute和fileattribute中的fareadonly?
- 用smtp这样发送邮件,为什么收到的发件人是许多人的邮件地?
- SQL EXPLORER 中的sql enter 怎么恢复?!!急死我了:(
- 怎样得出DBGrid某一列的汇总?
- delphi10源码怎么自动排列阿?
http://community.csdn.net/Expert/topic/4921/4921458.xml?temp=.7612268
同样,你也可以写
TControlClass = class of TControl;
var
classtype : TControlClass;
begin
classtype := TWinControl;
classtype.Create(nil);
classtype := TForm;
classtype.Create(nil);
end;尤其是,你试图写一个对象创建工厂类的时候,如
function GetControl(ClassType: TControlClass): TControl;
begin
Result := ClassType.Create(nil);
end;
你可以在任何地方使用
GetControl(TForm); GetControl(TDbGrid)等等
另外,该类型还可以得到类的一些基本信息等,看delphi的帮助会讲解得很详细的.
其实,类引用有很多用处
比如:在一个function中你不知道将来会创建一个TButton还是TEdit等等对象,但他们都是TControl的子类就可以有如下代码:
TControlClass = class of TControl;
function CreateMyControl(mycontrol: TControlClass);
var
l_control: TControl;
begin
l_control := mycontrol.create;
l_control.left := 100;
l_control.top := 20;
end;然后,你可以这样来调用:
CreateMyControl(TEdit);
CreateMyControl(TButton);如果function CreateMyControl(myControl: TControlClass);
改成function CreateMyControl(myControl: TControl);
那么只能传入(TControl);
只能这样调用 CreateMyControl(TControl);
而无法CreateMyControl(TEdit);其实实现了类的多态性,使得类创建更加灵活。