拉撒路 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
条款或项目中?