Я сделал MVC-подобный фреймворк для моего текущего клиента, для вас это будет примерно так:
- TDatamodule = Модель (для данных, поэтому материал TDataset)
- TForm = View (содержит источники данных, подключенные к TDatasets модели)
- Controller.pas = Контроллер (выполнение / бизнес-логика)
Постарайтесь, чтобы ваша форма была как можно более чистой: может содержать материалы только для графического интерфейса. Реализация специальной (бизнес-правила, обновления данных и т. Д.) Логики в контроллере. Помните: ваш вид должен быть легко заменен другим видом (например, веб-страницей).
В моей MVC-подобной среде представление вызывает методы (такие как поиск, обновление и т. Д.) С параметрами контроллера, контроллер знает, что и как искать и т. Д., И заполняет / обновляет модель. Вид связан с моделью (свойство контроллера).
Это не совсем MVC, но таким образом GUI отделен от всех видов логики, и его все еще легко отлаживать и поддерживать (вы можете использовать инъекцию зависимостей / слабую связь с контроллером и т. Д., Но это усложняет, только когда необходимо)