2011-09-13 2 views
2

필자는 애플리케이션 코드베이스 (예 : 여러 애플리케이션)에서 널리 사용되는 구성 요소를 보유하고 있습니다. 일반적으로 사용되는 이벤트 핸들러 속성 중 하나를 변경하고 싶습니다. 필자는 Delphi 6 폼 소스 파일 (DFM + PAS)을 거쳐 폼에있는 컴포넌트의 인스턴스에 대해 현재 정의 된 이벤트 핸들러를 검색하고 교체하는 도구/유틸리티가 필요합니다.Delphi 6 이벤트 처리기 속성을 리팩토링하는 도구/유틸리티?

예를 들면. 내가 구성 요소에 이벤트 핸들러 속성은 현재 정의가 있다고 가정 등 :

TOldEventHandlerProc는 다음과 같이 정의된다
property eventHandler1: TOldEventHandlerProc read FOnEvent write FOnEvent; 

:

TOldEventHandlerProc = procedure(oneParm: string; twoParm: integer) of object; 

나는 것 :

TOldEventHandlerProc = procedure(oneParm: string) of object; 

난에 TOldEventHandlerProc을 변경하려면 유틸리티가 Form의 DFM/PAS 파일 쌍의 내용을 검사하고 정의 된 FOnEvent의 모든 인스턴스를 찾고 새 매개 변수에 대해 이전 매개 변수 목록을 교체하도록합니다. TOldEventHandlerProc의 새로운 정의에 기반한 r 목록. 예를 들어, 이벤트 핸들러에 대한 다음 IDE 생성 선언 할 것이다 MyComp1라는 이름의 구성 요소의 인스턴스와 MyForm1라는 형태로 주어진 :

TMyForm1 = class(TForm) 
    // IDE created event handler stubs. 
    procedure MyComp1OnEvent(oneParm: string); 

이벤트 핸들러의 몸은 선언과 같은 :

procedure TMyForm1.MYCom1OnEvent(oneParm: string); 

TMyForm1 = class(TForm) 
    // IDE created event handler stubs. 
    procedure MyComp1OnEvent(oneParm: string; twoParm: integer); 
:

유틸리티의 onEvent() 핸들러의 각 인스턴스를 찾아 이벤트 처리기에 대한 헤더 선언과 이벤트 핸들러의 몸 선언을 대체하고 그 결과의 존재와 매개 변수 목록을 교환해야 이벤트 핸들러의 몸

는 다음과 같이 선언 :

procedure TMyForm1.MYCom1OnEvent(oneParm: string; twoParm: integer); 

가 나는 신속하고 더러운 하나에게 자신을 쓸 것이다 이러한 도구를 찾을 수없는 경우하지만 난 있는지 물어 거라고 생각 I 시간을 절약 할 수 있습니다. 누구든지 리팩토링 도구를 알고 있습니까?

+2

GExperts에는 양식 파일을 검색 할 수있는 grep 검색 및 바꾸기 옵션이 있습니다. 모든 양식이 text-dfm으로 저장되어 있고 어디서나 바꿀 텍스트가 똑같다고 확신하는 경우 작동 할 수 있습니다. –

+2

내장 된 찾기 대화 상자는 정규식도 지원하며 텍스트 패턴을 검색하고 바꿀 수 있습니다. "정규 표현식"주제 도움말을 참조하십시오. –

답변

2

리팩토링 기능은 최근 Delphi 버전에서 사용할 수 있습니다.

코드 중 하나를 사용하여 쉽게 코드를 리팩토링하고 결국 모든 DFM을 수정하여 Delphi 6과의 호환성을 보장 할 수 있습니다.