在做了个控件,在控件中我想得到当前的单元文件名,请问有哪位大哥会?我用了这样的方法,但只能得到当前的窗口名.constructor TSkynewWriteDFM.Create(AOwner: TComponent);
begin
  inherited;
  fversion:=c_version ;
  FDFMfilename:=self.Owner.Name+'.DFM';//在属性列中会出现的
  FActive:=false;
end;

解决方案 »

  1.   


    self.Owner.Name+'.DFM'也不是绝对安全(正确)的,比如,将你的控件放在一个Panel中以后。
      

  2.   

    是我没有说清楚,我的控件是不可见控件,他的Owner只能是Form.
      

  3.   

    uses TypInfo;constructor TSkynewWriteDFM.Create(AOwner: TComponent);
    begin
      inherited;
      fversion:=c_version ;
      FDFMfilename:=GetTypeData(ClassInfo)^.UnitName + '.DFM';//在属性列中会出现的
    //...
    end;
      

  4.   

    的控件是不可见控件,他的Owner只能是Form那应该没什么问题的..不过你这个控件好像没什么实际作用
      

  5.   

    to:zswang(伴水清清)(专家门诊清洁工) ( ) 不对啊,得到的却是SkynewWriteDFM.DFM
      

  6.   

    我想得到当前Form对应的单元文件名,即Unit后面的文件名.
      

  7.   

    ^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