Цитата:
Сообщение от Uniq!
Есть нюанс, что при загрузке данных используются и другие формы.
|
Формы должны использоваться для
отображения данных, поскольку они визуальные компонеты. Исключение -- главная форма. Она запускает интерактивный
процесс, поэтому ей позволено брать на себя больше. Любое другое использование форм -- быдлокод. Формы не предназначены для передачи данных.
Если речь идет про конфигурацию, нужно создать некий невизуальный класс TEnvironment, умеющий читать и сохранять себя в ini-файлы или куда нужно. Логически связанные элементы конфигурации можно оформить в подклассы, можно в записи, а можно и в свойства. Предварительно созданный и проинициализированный экземпляр TEnvironment по мере надобности передается формам и модулям данных, и они читают из него нужные настройки.
Можете закидать меня помидорами, но TDataModule я считаю быдлокодерским компонентом. В Delphi он реализован неправильно: отсутствует возможность класть созданный в проекте экземпляр DataModule на форму, как это происходит с фреймами. Модуль данных должен быть невизуальным аналогом фрейма, а не нарушением агрегации, как сейчас.
Цитата:
Сообщение от Uniq!
Процедуры AfterConnect для Global И Local connection идентичны (с точностью до имён)
|
Они не должны быть идентичны, это должен быть физически один и тот же обработчик. В IDE есть возможность назначить один обработчик нескольким событиям, в том числе у разных компонентов, выбирая его из выпадающего списка. Это азы.
Другой явный образчик быдлокода -- обращение из события к самому себе через внешнюю переменную. Грубо говоря, в коде нужно везде поубирать обращения к fDM к чертовой матери.
Цитата:
Сообщение от Uniq!
Функция Load:
|
Тут тоже все поставлено с ног на голову. Не формы управляют процессом, а процесс управляет формами. Форма-заставка -- всего лишь бессловесная табличка, в ней не место коду загрузки данных.
Цитата:
Сообщение от Mrak
а udl файлы не нравятся?
|
Возможно, это будет решением. Тогда в настройках можно задавать имя UDL-файла.