gpt4 book ai didi

delphi - 我可以通过什么方式生成项目中使用的DFM列表?

转载 作者:行者123 更新时间:2023-12-03 18:30:12 32 4
gpt4 key购买 nike

我想制作一个可以列出当前项目中所有DFM的Delphi插件。

有没有办法获取当前项目中链接的所有DFM文件(及其路径)的列表?

如果列出了所有DFM,则可以提取有关该项目的信息,并且可能仅在当前项目DFM上进行搜索,例如解析DFM以查找属性。

我确实找到了this question,它得到了回答,但是没有解决如何到达DFM的问题。该解决方案要求更改存储库中的每个.pas文件,并在运行时提供解决方案。我的问题是关于设计时间。

最佳答案

这是一个使用OpenTools API的简单示例。将此单元添加到新的仅设计包中,将designidevcl添加到requires子句中。编译并安装软件包。它将在“帮助\帮助向导”下添加一个菜单项“列表DFM”。单击它将调用下面的Execute方法。

unit ListDfmExample;

interface

uses
Windows, VCL.Forms, VCL.Dialogs, Classes, SysUtils, ToolsAPI;

type
TListDfmWizard = class(TNotifierObject, IOTAWizard, IOTAMenuWizard)
{ IOTAWizard }
function GetIDString: string;
function GetName: string;
function GetState: TWizardState;
procedure Execute;
{ IOTAMenuWizard }
function GetMenuText: string;
end;

implementation

function TListDfmWizard.GetIDString: string;
begin
Result := 'TOndrej.ListDfmWizard';
end;

function TListDfmWizard.GetName: string;
begin
Result := 'ListDfm';
end;

function TListDfmWizard.GetState: TWizardState;
begin
Result := [wsEnabled];
end;

procedure TListDfmWizard.Execute;
var
Project: IOTAProject;
I, J: Integer;
ModuleInfo: IOTAModuleInfo;
Module: IOTAModule;
Editor: IOTAEditor;
FormEditor: IOTAFormEditor;
List: TStringList;
begin
Project := GetActiveProject;
if not Assigned(Project) then
Exit;

List := TStringList.Create;
try
for I := 0 to Project.GetModuleCount - 1 do
begin
ModuleInfo := Project.GetModule(I);
if ModuleInfo.FormName <> '' then
begin
Module := ModuleInfo.OpenModule;
for J := 0 to Module.ModuleFileCount - 1 do
begin
Editor := Module.ModuleFileEditors[J];
if Supports(Editor, IOTAFormEditor, FormEditor) then
List.Add(FormEditor.FileName);
end;
end;
end;

ShowMessage(List.Text);
finally
List.Free;
end;
end;

function TListDfmWizard.GetMenuText: string;
begin
Result := 'List DFM';
end;

initialization
RegisterPackageWizard(TListDfmWizard.Create);

end.

关于delphi - 我可以通过什么方式生成项目中使用的DFM列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45718587/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com