以下是我在网上找到的资料,但好象并不能完全解决问题。
=======================================
在做了个控件,在控件中我想得到当前的单元文件名,请问有哪位大哥会?
我用了这样的方法,但只能得到当前的窗口名.
constructor TSkynewWriteDFM.Create(AOwner: TComponent);
begin
inherited;
fversion:=c_version ;
FDFMfilename:=self.Owner.Name+'.DFM';//在属性列中会出现的
FActive:=false;
end;
self.Owner.Name+'.DFM'
也不是绝对安全(正确)的,比如,将你的控件放在一个Panel中以后。
是我没有说清楚,我的控件是不可见控件,他的Owner只能是Form.
uses TypInfo;
constructor TSkynewWriteDFM.Create(AOwner: TComponent);
begin
inherited;
fversion:=c_version ;
FDFMfilename:=GetTypeData(ClassInfo)^.UnitName + '.DFM';//在属性列中会出现的
//...
end;
不对啊,得到的却是SkynewWriteDFM.DFM
我想得到当前Form对应的单元文件名,即Unit后面的文件名.
^v^ 要学会举一反三
uses TypInfo;
constructor TSkynewWriteDFM.Create(AOwner: TComponent);
begin
inherited;
fversion:=c_version ;
FDFMfilename:=GetTypeData(AOwner.ClassInfo)^.UnitName + '.DFM';//在属性列中会出现的
//~~~~~~~
//...
end;
TObject::ClassInfo 返回类信息指针
通过GetTypeData()可以到底这个指针指向的类描述数据,如所在声明单元名
如果是设计期间的元件,它们的Owner都为当前所设计Form
=======================================
|