M>без ООП, как правильно было замечено, достаточно для каждой формы создать по методу, например ctrlRefresh() и вызывать его после каждого действия пользователя, способного изменить состояние контролов. Недостаток: осуществляется проврека ВСЕХ условий, в которых могут участвовать ещё неинициализированные объекты, плюс в случае совсем сложной логики легко самому запутаться, но по крайней мере всё в одном месте.
Вы ещё в OnIdle всуньте.

Не надо проверять ВСЕ условия. Выделите состояния и напишите автомат.
примерГде-то между собакой и богом.