Question

Je développe un cadre Delphi et le besoin de charger une liste d'objets d'affaires dans un contrôle du réseau au début. cadres Delphi ont aucun cas OnCreate, alors quelle est la meilleure façon de reproduire ce? Dois-je remplacer le constructeur comme il est suggéré sur A propos ? Dois-je faire une procédure de loadData() publique et que l'appel de conteneur parent quand il est prêt à créer?

Je veux vous assurer que tous les contrôles enfants sont chargés et prêts à aller avant de les remplir avec des données et je ne suis pas familier avec la hiérarchie de création d'un composant Delphi.

Était-ce utile?

La solution

Je ne lier peuplant des données à la création. Vous pouvez créer un cadre raisonnable et le maintenir, mais changer le contenu, il affiche plus tard. si vous remplissez à onCreate alors vous devez libre et Recréer afin d'obtenir de nouvelles données. Donc, avoir un LoadData() est une meilleure approche.

En fonction de la complexité de l'application et le nombre de formes et de cadres que vous avez, il peut être utile d'avoir tous vos cadres hériteront d'un cadre de base commune. Vous pouvez ensuite introduire une méthode de LoadData virtuelle dans la base et remplacement dans les sous-classes de cadre.

Sinon, vous pouvez également concevoir une interface et ont des cadres mettre en œuvre. Si cela est fait correctement qui pourrait vous permettre de traiter des formes, des cadres ou des panneaux même, etc., de façon uniforme.

Il est difficile de vous donner un avis plus précis, car cela dépend de la complexité de l'IUG et l'application. En général, il est toujours bon d'avoir aussi peu logique / code dans les formes / cadres possibles. Ainsi, l'introduction d'une sorte de classe FormManager que l'enregistrement des poignées et l'affichage des formes / cadres peuvent aider à isoler ce comportement dans un seul endroit. Mais si c'est une petite application simple, vous pouvez vous en sortir avec elle juste faire des formes.

Autres conseils

Je choisirais généralement l'une des deux approches différentes:

  1. Un constructeur surchargée prenant une sorte d'objet qui contient soit tous les éléments ou savoir comment les obtenir (par exemple un recenseur)
  2. Une propriété avec un compositeur pour le même type d'objet

De cette façon, la logique de la façon d'obtenir les objets peuvent être caché quelque part ailleurs.

(Maintenant, il se peut que c'est ce que vous faites déjà, mais le nom « LoadData » me fait croire que votre renommée va réellement charger des données depuis une sorte de référentiel de stockage au lieu d'afficher les données quelqu'un d'autre a déjà tiré par les cheveux ...)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top