Вопрос

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

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

Это было полезно?

Решение

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

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

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

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

Другие советы

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top