6

我正在使用Delphi 7and开发一个项目Delphi 2006,我正在开发一个可以获取某些系统信息的组件。现在的要求是组件安装到系统后,IDE上应该有一个菜单项,像这样

在此处输入图像描述

delphi 7像 这样在此处输入图像描述

我在网上搜索了有关添加菜单项的信息,但我没有任何东西可以添加一个IDE项目EurekaLog。任何人都可以告诉我如何添加类似EurekaLog或的项目mysql吗?它在注册表中的某个地方吗?

4

2 回答 2

15

要将菜单添加到 Delphi IDE,您必须使用Delphi Open Tools API。从这里您可以使用这样的代码访问 delphi IDE 的主菜单。

LMainMenu:=(BorlandIDEServices as INTAServices).MainMenu;

或者

LMainMenu:=(BorlandIDEServices as INTAServices).GetMainMenu;

然后添加您想要的菜单项。

检查这些链接以获取其他示例

于 2012-04-23T08:04:23.057 回答
4

如果您想专门向 HELP 菜单添加一个菜单项,并在您的包卸载时将其删除,并处理项目的启用/禁用,那么此向导代码可能会有所帮助。我将 GExperts 文档中显示的示例向导代码作为一个启动项目,并将其作为一个稍微好一点的启动项目发布在这里。如果您获取此代码并扩展它,您可以很快开始:

https://bitbucket.org/wpostma/helloworldwizard/

他们所说的“向导”是指“简单的 IDE 专家”,即在 IDE 中添加了一个菜单,实现了 IOTAWizard 和 IOTAMenuWizard。这种方法有很多好处,并且是 GExperts 向导的编写方式。

代码的核心是这个启动向导,需要将它放入一个包(DPK)并安装,并在IDE中注册:

// "Hello World!" for the OpenTools API (IDE versions 4 or greater)
// By Erik Berry: http://www.gexperts.org/, eberry@gexperts.org

unit HelloWizardUnit;

interface

uses ToolsAPI;

type
  // TNotifierObject has stub implementations for the necessary but
  // unused IOTANotifer methods
  THelloWizard = class(TNotifierObject, IOTAMenuWizard, IOTAWizard)
  public
        // IOTAWizard interface methods(required for all wizards/experts)
        function GetIDString: string;
        function GetName: string;
        function GetState: TWizardState;
        procedure Execute;
        // IOTAMenuWizard (creates a simple menu item on the help menu)
        function GetMenuText: string;
  end;


implementation

uses Dialogs;

procedure THelloWizard.Execute;
begin
  ShowMessage('Hello World!');
end;

function THelloWizard.GetIDString: string;
begin
  Result := 'EB.HelloWizard';
end;

function THelloWizard.GetMenuText: string;
begin
  Result := '&Hello Wizard';
end;

function THelloWizard.GetName: string;
begin
  Result := 'Hello Wizard';
end;

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

end.

上面没有显示注册码,但如果您从上面的链接下载它,它会包含在它自己的“Reg”(注册)单元中。 教程链接在 EDN 上。

于 2012-04-24T23:00:16.493 回答