Don't you think it's a good idea to change protected methods that mean changing the edited value to be virtual?
When I need to detect when editing value is changed, I override these methods in a derived class, instead of subscribing to the events that notifing the changes?
TTMSFNCRadioGroup.ControlClick
I don't know if this was designed for ControlChanged but seems to work.
At first stage I tried UpdateItemIndexControl that is alredy virtual but I dosen't works.
TTMSFNCSearchEdit.DoEditChanged
For this component is need to know if dropdown is open or closed in OnExit method for detect if changes was finised.
I don't know how to get this state directly, so I used
OnBeforeDropDown, OnDropUp.
Maybe doBeforeDropDown, doDropUp should to be make virtual