Which is nice and easy, unlike the counter which would be difficult. i.e. if OnZoomIn reacted to code changes, then how would you differentiate between the event occurring due to a code change or a user change?
Think about TEdit.OnChange or TCheckbox.OnClick, how do you determine whether the change was by the user or by your code?