Ответ 1
У меня есть собственная платформа Delphi/MySQL, которая позволяет мне быстро добавлять новые экраны. Я не буду делиться этим, но я могу описать подход, который я принимаю:
Я использую интерфейс с вкладками с иерархией на основе TFrame. Я создаю вкладку и свяжу TFrame с ней.
Я позабочусь о всех кроп-сантехнике и concurrency, используя стандартную реализацию хранимой процедуры mysql. CustomerSEL, CustomerGET, CustomerUPD, CustomerDEL и т.д.
Моя основная форма по существу содержит панель навигации и панель, содержащую TPageControl
Пример классов в моей иерархии
TFrame TMFrame - мой вывод, с реализациями интерфейса, которые захватывают OnShow, OnHide и некоторые другие особенности
- TWebBrowserFrame --TDataAwareFrame --TObjectEditFrame --TCustomerEditFrame --TOrderEditFrame и т.д... --TObjectListFrame --TCustomerListFrame
и т.д...
и некоторые диалоги.
TDialog TMDialog --TDataAwareDialog --TObjectEditDialog - TContactEditDialog и т.д.. --TObjectSelectDialog --TContactSelectDialog
и т.д...
Когда я добавляю новый объект для управления, это может быть новый атрибут клиентов, скажем, мы хотим отслеживать, какие транспортные средства принадлежит клиенту.
создать таблицу CustomerVehicles Я запускаю свой специальный генератор sproc, который создает мои SEL, GET, UPD, DEL проверьте эти...
Выведите из базовых классов, упомянутых выше, отбросьте некоторые элементы управления. Добавьте вкладку в TCustomerEdit.
Delphi всегда представляет собой набор данных как абстрактный слой, выставляя это в свой графический интерфейс через DataSources. Добавьте набор данных в модуль данных клиента и "зарегистрируйте его". Моя собственная пользовательская функция в моем классе datamodule, TMDataModule
Контроль безопасности аналогичным образом рассматривается в рамках. Я регистрирую компоненты, для которых требуется, чтобы флаг безопасности был видимым или включенным.
Обычно я могу добавить новый объект, построить sprocs, добавить экраны обслуживания в течение часа.
Конечно, это обычно просто начало, обычно когда вы что-то добавляете, вы используете его больше, чем отслеживание. Если это приложение для гаража, мы хотим добавить автомобиль, привезенный клиентом в гараж, удостоверьтесь, что мы можем отслеживать историю. Но даже так, это быстро.
Я попробовал субконтрактинг для младших парней, использующих "новые инструменты для разработки", и они никогда, кажется, не верят мне, когда я говорю, что я могу сделать это все в десять раз быстрее с Delphi! Я могу сделать через два часа без ошибок, что, кажется, займет у них два дня, и у них все еще есть ошибки...
DO - будьте осторожны, планируя свой VFI! Как уже упоминалось, если вы хотите изменить имя компонента на одном из родительских классов, будьте готовы к неприятностям. Вам нужно будет открыть и "отредактировать" каждого ребенка в иерархии, даже если вы очистите DCU, у вас все еще может быть адский DFM. Уверяю вас, в 2006 году это все еще проблема.
НЕ создайте один datamodule монстра
Не торопитесь в авангарде дизайна, рефакторинг после того, как вы создали тонну иждивенцев, может быть интересной задачей, но это кошмар, когда вам нужно быстро получить что-то новое!