У меня есть компонент, который широко используется в кодовой базе моего приложения (то есть - несколько приложений). Я хочу изменить одно из часто используемых свойств обработчика событий. Мне нужен инструмент / утилита, которая просматривала бы исходный файл формы Delphi 6 (DFM + PAS) и выполняла поиск и замену для определенных в настоящее время обработчиков событий для экземпляров компонента в форме.
Например. Предположим, у меня есть свойство обработчика событий для компонента, в настоящее время определенного как:
property eventHandler1: TOldEventHandlerProc read FOnEvent write FOnEvent;
Где TOldEventHandlerProc определяется как:
TOldEventHandlerProc = procedure(oneParm: string) of object;
Я хочу изменить TOldEventHandlerProc на:
TOldEventHandlerProc = procedure(oneParm: string; twoParm: integer) of object;
Я бы хотел, чтобы утилита проверила содержимое пары файлов формы DFM / PAS и нашла все экземпляры FOnEvent, которые были определены, и заменила старый список параметров для нового списка параметров на основе нового определения TOldEventHandlerProc. Например, если у вас есть форма с именем MyForm1 с экземпляром компонента с именем MyComp1, у вас будет следующее сгенерированное IDE объявление для обработчика событий:
TMyForm1 = class(TForm)
// IDE created event handler stubs.
procedure MyComp1OnEvent(oneParm: string);
с телом обработчика событий, объявленным как:
procedure TMyForm1.MYCom1OnEvent(oneParm: string);
Утилита должна будет найти каждый экземпляр обработчика OnEvent (), подставить объявление заголовка для обработчика события и объявление тела для обработчика события и поменять местами списки параметров с результатом:
TMyForm1 = class(TForm)
// IDE created event handler stubs.
procedure MyComp1OnEvent(oneParm: string; twoParm: integer);
с телом обработчика событий, объявленным как:
procedure TMyForm1.MYCom1OnEvent(oneParm: string; twoParm: integer);
Если я не смогу найти такой инструмент, я сам напишу быстрый и грязный, но я решил спросить, смогу ли я сэкономить время. Кто-нибудь знает такой инструмент рефакторинга?