2012-04-23 37 views
4

Delphi 7Delphi 2006을 사용하는 프로젝트에서 작업하고 있는데, 특정 시스템 정보를 얻을 수있는 구성 요소를 개발 중입니다. 이제 요구 사항은 구성 요소가 시스템에 설치 한 후, 거기에이델파이 IDE 사용자 정의 메뉴 항목, 어떻게 그들을 추가 할 수 있습니까?

enter image description here

처럼 IDE의 메뉴 항목이어야하며이 enter image description here

같은 delphi 7을 위해 내가 검색 한 것입니다 그물에 메뉴 항목을 추가하는 방법에 대해서는 나와 있지 않지만 IDE과 같은 항목을 추가하려면 EurekaLog과 같은 항목이 있습니다. 어떤 몸이라도 EurekaLog 또는 mysql과 같은 항목을 추가하는 방법을 알려 줄 수 있습니까? 레지스트리에있는 일부 위치는 무엇입니까?

+3

lookup 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 확인하십시오 – PresleyDias

답변

13

델파이 IDE에 메뉴를 추가하려면 Delphi Open Tools API을 사용해야합니다. 여기에서 이와 같은 코드를 사용하여 델파이 IDE의 메인 메뉴에 접근 할 수 있습니다.

LMainMenu:=(BorlandIDEServices as INTAServices).MainMenu; 

또는

LMainMenu:=(BorlandIDEServices as INTAServices).GetMainMenu; 

그리고 당신이 원하는 메뉴 항목을 추가 할 수 있습니다. 추가 샘플

특별히 도움말 메뉴에 메뉴 항목을 추가하고 또한 얻을 확인하려면
+0

+1, 당신은 델파이 데이터베이스입니다 :) 나는 링크를 통해 이동합니다 – PresleyDias

+0

메뉴 항목에 아이콘을 추가하는 방법? – PresleyDias

+0

RRUZ가 준 링크를 읽으십시오. 마지막 링크에는 무엇을해야하는지 알려주는 섹션이 있습니다. 아이콘을 검색합니다. –

4

에 대한

검사에게 이러한 링크를 패키지가 언로드 될 때 제거되고 항목의 활성화/비활성화가 처리되면이 마법사 코드가 도움이 될 수 있습니다. 나는 GExperts 문서가 보여주는 샘플 마법사 코드를 시작 프로젝트로 사용하여 약간 더 좋은 시작 프로젝트로 게시했습니다. 당신은 당신이 코드를 잡아 경우 매우 빠르게 시작하고 그냥을 연장받을 수 있습니다

그들은 "마법사"가 무엇을 의미

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

는 "간단한 IDE 전문가"입니다, 즉, 메뉴와 뭔가에 추가 IDE는 IOTAWizard와 IOTAMenuWizard를 구현합니다. 이 접근법은 많은 이점을 가지고 있으며 GExperts 마법사가 쓰여지는 방식입니다.

코드의 핵심은 IDE와 패키지 (DPK)에 넣어 설치하고, 등록해야이 스타터 마법사이다, 등록 코드를 상기 도시되지 않은

// "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

hello, hw 정확히'HelloWizard.Execute;'디버깅을 하시겠습니까? 나는 acessing 레지스트리를 거기에서 시도했다. ... acess violation을 준다. – PresleyDias

+0

나는 다른 질문이 있다고 생각한다. 이것을 확인하십시오 : http://stackoverflow.com/questions/8313697/how-do-i-debug-a-designtime-package-unloading-crash-involving-a-crash-in-threadp –