Событие OnCreate модели для Delphi Frame - PullRequest
3 голосов
/ 16 августа 2010

Я занимаюсь разработкой фрейма Delphi, и мне нужно вначале загрузить список бизнес-объектов в элемент управления grid.У фреймов Delphi нет события OnCreate, так как лучше всего это повторить?Должен ли я переопределить конструктор, как предлагается на О ?Должен ли я просто сделать публичную loadData() процедуру и сделать так, чтобы родительский контейнер вызывал ее, когда она будет готова к созданию?

Я хочу убедиться, что все дочерние элементы управления загружены и готовы к работе, прежде чем заполнять их данными иЯ не знаком с иерархией создания компонентов Delphi.

Ответы [ 2 ]

2 голосов
/ 16 августа 2010

Я бы не привязывал заполнение данных к созданию. Вы можете разумно создать фрейм и сохранить его, но изменить содержимое, которое будет отображаться позже. если вы заполняете onCreate, то вам нужно освободить и создать заново, чтобы получить свежие данные. Так что LoadData() - лучший подход.

В зависимости от сложности приложения и количества имеющихся у вас форм и фреймов может быть удобно, чтобы все ваши фреймы наследовали от общего базового фрейма. Затем вы могли бы ввести виртуальный LoadData метод в базе и переопределить в подклассах фреймов.

В качестве альтернативы, вы также можете разработать интерфейс и реализовать его в фреймах. Если все сделано правильно, это может позволить вам обрабатывать формы, рамки или даже панели и т. Д. Единообразно.

Сложно дать вам более конкретный совет, так как это зависит от сложности графического интерфейса и приложения. В общем, всегда хорошо иметь как можно меньше логики / кода в формах / фреймах. Таким образом, введение некоторого класса FormManager, который обрабатывает регистрацию и отображение форм / фреймов, может помочь изолировать это поведение в одном месте. Но если это небольшое, простое приложение, вы можете просто сделать это в формах.

0 голосов
/ 16 августа 2010

Я бы обычно выбирал один из двух разных подходов:

  1. Переопределенный конструктор, принимающий какой-либо объект, который либо содержит все элементы, либо знает, как их получить (например, перечислитель)
  2. Свойство с установщиком для объекта того же типа

Таким образом, логику того, как получить объекты, можно спрятать где-то еще.

(Возможно, это то, что вы уже делаете, но имя «LoadData» заставляет меня поверить, что ваша слава на самом деле собирается загружать данные из какого-то хранилища хранилища, а не просто отображать данные кем-то другим ранее получил ...)

...