Ich habe eine Komponente, die in meiner gesamten Anwendungscodebasis (d. h. in mehreren Anwendungen) weit verbreitet ist. Ich möchte eine der häufig verwendeten Event-Handler-Eigenschaften ändern. Ich benötige ein Tool/Werkzeug, das eine Delphi 6-Formularquelldatei (DFM + PAS) durchsucht und die aktuell definierten Ereignishandler für Instanzen der Komponente im Formular sucht und ersetzt.
Zum Beispiel. Angenommen, ich habe eine Ereignishandler-Eigenschaft für die Komponente, die derzeit wie folgt definiert ist:
property eventHandler1: TOldEventHandlerProc read FOnEvent write FOnEvent;
Wobei TOldEventHandlerProc wie folgt definiert ist:
TOldEventHandlerProc = procedure(oneParm: string) of object;
Ich möchte TOldEventHandlerProc ändern in:
TOldEventHandlerProc = procedure(oneParm: string; twoParm: integer) of object;
Ich möchte, dass das Dienstprogramm den Inhalt des DFM/PAS-Dateipaars eines Formulars untersucht und alle Instanzen von FONEvent findet, die definiert sind, und die alte Parameterliste gegen die neue Parameterliste austauscht, die auf der neuen Definition von TOldEventHandlerProc basiert. Bei einem Formular mit dem Namen MyForm1 und einer Instanz der Komponente mit dem Namen MyComp1 würden Sie beispielsweise die folgende von der IDE generierte Deklaration für den Event-Handler erhalten:
TMyForm1 = class(TForm)
// IDE created event handler stubs.
procedure MyComp1OnEvent(oneParm: string);
mit dem Körper des Event-Handlers deklariert als:
procedure TMyForm1.MYCom1OnEvent(oneParm: string);
Das Dienstprogramm müsste jede Instanz des OnEvent()-Handlers finden und die Header-Deklaration für den Event-Handler und die Body-Deklaration für den Event-Handler ersetzen und die Parameterlisten vertauschen, was zu einem Ergebnis führen würde:
TMyForm1 = class(TForm)
// IDE created event handler stubs.
procedure MyComp1OnEvent(oneParm: string; twoParm: integer);
mit dem Körper des Event-Handlers deklariert als:
procedure TMyForm1.MYCom1OnEvent(oneParm: string; twoParm: integer);
Wenn ich ein solches Tool nicht finden kann, werde ich selbst ein schnelles und schmutziges Tool schreiben, aber ich dachte, ich frage mal nach, um zu sehen, ob ich mir etwas Zeit sparen kann. Kennt jemand ein solches Refactoring-Tool?