控件在编译时自动添加所需的单元

时间:2010-02-26 18:24:19  来源:第二电脑网  作者:第二电脑网

  第二电脑网导读:,在编译时,让控件自动给单元添加所需的单元呢?答案是肯定的。 首先引用DesignEditors和DesignIntf单元。然后在控件单元,编写一个继承自TSelectionEditor的类,例如说叫TMyUnitSelector吧。typeTMy...
  正文:在开发控件的时候,常会类似碰到这样的情况:我某个方法或事件的参数的类型,并不在Delphi默认添加的单元中,如果此时直接编译,必然会报错。但是让用户逐个把所需的单元添加回来,又显然太麻烦了,甚至用户也不知道该添加哪些单元。有没有办法让它自动化一点,在编译时,让控件自动给单元添加所需的单元呢?答案是肯定的。
 首先引用DesignEditors和DesignIntf单元。然后在控件单元,编写一个继承自TSelectionEditor的类,例如说叫TMyUnitSelector吧。

type
TMyUnitSelector = class(TSelectionEditor)
public
procedure RequiresUnits(Proc: TGetStrProc); override;   // 覆盖此方法来添加所需的单元
end;
procedure TMyUnitSelector.RequiresUnits(Proc: TGetStrProc);
begin
  // 例如说,我要在编译时,控件能够自动给当前单元添加上DB和DBClient这两个单元
Proc('DB');
  Proc('DBClient');
end;

 最后在注册控件的Register过程中,加上一句就可以啦(假设控件类名叫TMyEdit)。

procedure Register;
begin
  RegisterComponents('Samples', [TMyEdit]);
  RegisterSelectionEditor(TMyEdit, TMyUnitSelector); // 让控件和SelectionEditor关联
end;

控件在编译时自动添加所需的单元》由第二电脑网原创提供,转载请注明:http://www.002pc.com/master/College/Language/Delphi/12928.html


关键字:

关于《控件在编译时自动添加所需的单元》文章的评论

站内搜索: 高级搜索

热门搜索: Windows style 系统 tr IP QQ CPU 安装 function 注册 if td