2012-04-23 6 views
4

Delphi 7Delphi 2006を使ってプロジェクトを進めていますが、特定のシステム情報を取得するコンポーネントを開発中です。 は今の要件は、このDelphi IDEのカスタムメニュー項目は、どのように追加するのですか?

enter image description here

と私は検索しました。この enter image description here

ようdelphi 7のためのように、コンポーネントがシステムにインストールされた後、IDEのメニュー項目があるはずということですネット上でメニュー項目を追加することについては、しかし、私はIDEのような項目を追加するために何も持っていないEurekaLogがあります。 EurekaLogまたはmysqlのような項目をどのように追加するか教えてください。 レジストリのどこですか?

+3

ルックアップGExpertsソースコード(http://gexperts.svn.sourceforge.net/viewvc/gexperts/)この方法で、IDEを拡張する方法を教えてください – ComputerSaysNo

+1

またはCnWizardsにも['ソースコード](http://code.google.com/p/cnpack/source/browse/#svn%2Ftrunk%2Fcnwizards)利用可能ですが、それは学ぶのはかなり大きなプロジェクトです。 – TLama

+0

@DorinDuminica OK – PresleyDias

答えて

13

メニューをDelphi IDEに追加するには、Delphi Open Tools APIを使用する必要があります。ここから、このようなコードを使って、delphi IDEのメインメニューにアクセスすることができます。その後、

LMainMenu:=(BorlandIDEServices as INTAServices).MainMenu; 

または

LMainMenu:=(BorlandIDEServices as INTAServices).GetMainMenu; 

そして、あなたがしたいメニュー項目を追加します。

あなたは、具体的HELPメニューにメニュー項目を追加し、またそれを得るようにしたい場合は、追加のサンプル

+0

+1をチェックしてください、あなたはデルファイデータベースです:)私はリンクを経由します – PresleyDias

+0

どのようにメニューアイテムにアイコンを追加しますか? – PresleyDias

+0

RRUZがあなたに与えたリンクを読んでください。最終リンクには何をすべきかを示すセクションがあります。アイコンを検索します。 –

4

ため、これらのリンクをチェックパッケージがアンロードされたときに削除され、アイテムの有効/無効が処理されると、このウィザードコードが役に立ちます。私は、GExpertsのドキュメンテーションが示しているサンプルウィザードのコードをスタータープロジェクトとして取り上げ、少し上手いスタートプロジェクトとしてここに掲載しました。 、彼らは「ウィザード」の意味は、「シンプルなIDEエキスパート」である

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

つまり、メニューで何かをに追加:あなたはこのコードを取得し、それを拡張する場合は、非常に迅速に開始することができますIDEは、IOTAWizardとIOTAMenuWizardを実装しています。このアプローチには多くの利点があり、GExpertsウィザードが書かれている方法です。

コードのコアは、パッケージ(DPK)に入れ、インストールされ、IDEに登録する必要がある。このスタータウィザード、ある:

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

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"(登録)ユニットに含まれています。 A tutorial link is on EDN here.

+0

こんにちは、ちょうどこの 'HelloWizard.Execute;'をデバッグするhw?私はそこにacessingレジストリを試してみました..それはacess違反を与える – PresleyDias

+0

私はそれを詳細に他の質問があると思います。これをチェックしてください:http://stackoverflow.com/questions/8313697/how-do-i-debug-a-designtime-package-unloading-crash-involving-a-crash-in-threadp –

関連する問題