Deswegen würde ich so was auch nicht machen. Wenn man später eigene OnChange-Ereignisse für bestimmte controls braucht muss man wieder alles umstricken, und dann wird's unübersichtlich.
Siehe Lösungsansatz von Dalai. Da braucht man dann nichts umzustricken.
Wieso nicht?
Delphi-Quellcode:
procedure TForm1.ToggleChangeEventHandlers(Enable: Boolean);
var tne: TNotifyEvent;
begin
if Enable then
tne:= SetPropertiesChanged
else
tne:= nil;
//--- Set all OnChange/OnClick event handlers
editName.OnChange:= tne;
editCommandLine.OnChange:= tne;
checkEnabled.OnClick:= tne;
editComments.OnChange:= tne;
comboShowWindow.OnChange:= tne;
comboLocation.OnChange:= tne;
end;
Und wenn du jetzt z.B. für editName noch prüfen willst, ob .text<>'' ist, dann brauchst du doch auch einen eigene Behandlungsroutine.