1

拉撒路 0.9.30.4

我正在开发一个组件,该组件需要uses在将组件拖放到表单上时将多个单元添加到 unit 子句中。

这篇文章中,我发现了设置设计器挂钩并将所需文件添加到项目中的方法,并且可以将单元添加到uses子句中。

代码示例:

procedure TTestComponent.DoCompAdded(APersistent: TPersistent; Select: boolean);
var
  oProj: TLazProject;
  oFile: TLazProjectFile;
begin
  oProj := LazarusIDE.ActiveProject;
  oFile := oProj.CreateProjectFile('X:\Unit path\AddonUnit.pas');
  oFile.IsPartOfProject := True;
  oProj.AddFile(oFile, True);
end;

constructor TTestComponent.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  GlobalDesignHook.AddHandlerPersistentAdded(@DoCompAdded);
end;

procedure Register;
begin
  RegisterComponents('AAA',[TTestComponent]);
end;  

在调试时,我确保调用了处理程序,AddonUnit向项目中添加了一个单元(我遍历了oProj对象内的所有文件),但这导致结果为零:实际上没有向项目或uses子句添加任何内容。

此外,我发现项目文件集合oProj.Files[index]返回当前打开的编辑器文件,而不是项目中包含的文件。

我是否遗漏了某些内容,或者是否有另一种方法可以将所需的单位包含在uses条款或项目中?

4

0 回答 0