Bitte immer nur ein Thema in einem Beitrag. Danke.
Zu MVVM:
Zuständig die Buttons entsprechend zu de-/aktivieren ist das Viewmodel. Ein Controller gehört da nicht dazu.
Wir machen MVVM mit einem selbstgebauten Framwork. Wegen der schlechten Umsetzung von Generics/
RTTI in Delphi kann ich das nicht empfehlen.