类后面的参数问题 如 TWinControl(XXX)(100分)

  • 主题发起人 主题发起人 tongzhi
  • 开始时间 开始时间
T

tongzhi

Unregistered / Unconfirmed
GUEST, unregistred user!
我遇到如下函数:
function Tform1.ClassFactoryForTWinControl( AnyTWinControlClassName : String ; AOwner : TComponent ) : TWinControl ;
var
FindClass : TPersistentClass ;
begin
FindClass := GetClass(AnyTWinControlClassName) ;
if (FindClass <> nil ) and FindClass.InheritsFrom(TWinControl) then
Result := TWinControlClass(FindClass).Create(AOwner)
else Result := nil ;
end;
请教高手指点:TWinControlClass(FindClass) 的语法的正确理解? 一般类后面跟以括号,括号内的参数作何用途?
我希望得到详尽的解释!!
 
function FindClass(const ClassName: string): TPersistentClass;
begin
Result := GetClass(ClassName);
if Result = nil then ClassNotFound(ClassName);
end;
FindClass 是一个函数,返回为TPersistentClass类,
而TWinControlClass = class of TWinControl;
TWinControl = class(TControl)
TControl = class(TComponent)
也就是说TPersistentClass为TComponet的子类,用
TWinControlClass(FindClass)进行类的转换
 
一般,以Class结尾的类型为 类类型
即TWinControlClass是个类类型,而不是类
TWinControlClass(FindClass)代表把FindClass强制转换成TWinControlClass类型,即一个类,这里FindClass是TWinControlClass的一个实例
 
TWinControlClass = class of TWinControl;
FindClass是TWinControl类或它的子类实例
TWinControlClass(FindClass)是取得FindClass所属的类
TWinControlClass(FindClass).Create(AOwner)
即创建和FindClass一样的类的对象。
 
................
 
强制类型转换
将FindClass转化为其子类的实体。
 
FindClass是TWinControl类或它的子类实例吗?
函数里明明声明了:
FindClass : TPersistentClass ;
而 TPersistentClass = class of TPersistent
 
再问:在一般的构造函数中 如:
tmpFrm := Tform2.Create(AOwner) 中的Create(AOwner)如何理解?
 
接收答案,谢谢大家!
 
AOwner 是指一个组件的属主,属主的意思就是说,属主会管理对象的生死。属主在释放时会释放所包含的对象。如果一个组件被释放了,那同一个属主的其它一组组件都会得到通知。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部