У вас есть несколько шаблонов для соединения ORM с пользовательским интерфейсом.
См., Например, шаблон Модель GUI Mediator .Короче говоря, вы пишете наблюдателя, который будет отражать содержимое ORM в компонентах пользовательского интерфейса, и наоборот.Это было реализовано, например, в платформе tiOpf для Delphi (по этой ссылке есть видео).
Другой подход - отобразить ваши данные во время выполнения: вы создаете форму, как обычно, затемВы заполняете содержимое в событии OnShow
, затем кнопка « Сохранить » или « OK » подтвердит правильность, а затем сохранит содержимое в записи ORM.Это то, что делается в основном примере приложения нашей платформы .Легко кодировать в этом простом примере, но может привести к спагетти-коду, если у вас много полей и проверок для работы.
Последний подход - позволить вашему ORM создать форму.
В нашей структуре вы можете определить некоторые свойства пользовательского интерфейса для каждой таблицы в отдельной структуре.Затем единица создаст форму со всеми редактируемыми полями вашего объекта ORM.Ссылки на другие записи будут отображаться в виде поля со списком, логические значения в виде флажков, в качестве радиобоксов и т. Д.Затем фильтрация (например, обрезка текстового поля из пробелов слева или справа) и проверка (например, убедитесь, что значение поля уникально или действительный IP-адрес) обрабатывается не в части пользовательского интерфейса, а в бизнесе.Сама логика, т. е. ORM .
ИМХО, обязательно сохранять истинную многоуровневую архитектуру.То есть пользовательский интерфейс должен полагаться в основном на бизнес-логику.Например, проверка данных должна быть частью ORM, а не UI.Например, если вы решите добавить веб-клиент в клиентское приложение Delphi, вам не придется кодировать проверку в другой раз: она будет общей для обоих клиентов, отдельно от деталей реализации пользовательского интерфейса.