I work with CodeSite which gives me an exact feedback from what happens at run-time.
1. Place a CodeSite.Send in the OnImageChange event-handler:
procedure TFormMain.imgImportEditorImageChange(Sender: TObject);
begin
CodeSite.Send('TFormMain.imgImportEditorImageChange: test');
end;
2. Then I press Ctrl-Z (on my German keyboard) ONCE to Undo a previous Edit action.
3. In the CodeSite Live Viewer you can see that the OnImageChange event-handler has been called twice (in a time-distance of 3 milliseconds):