Je développe un cadre Delphi et devez charger une liste d'objets métier dans un contrôle de grille au début. Les cadres Delphi n'ont pas d'événement OnCreate, alors quelle est la meilleure façon de répliquer cela? Dois-je redéfinir le constructeur comme est suggéré sur About? Devrais-je simplement faire une procédure publique loadData()
et que le conteneur parent l'appelle quand il est prêt à créer? Je veux m'assurer que tous les contrôles enfants sont chargés et prêts à partir avant de les remplir avec des données et je ne suis pas familier avec la hiérarchie de création de composants Delphi.Modèle OnCreate événement pour Delphi Frame
Répondre
Je ne lierais pas le remplissage des données à la création. Vous pouvez raisonnablement créer un cadre et le conserver, mais changer le contenu qu'il affichera plus tard. Si vous peuplez onCreate
alors vous devez libérer et recréer afin d'obtenir de nouvelles données. Donc, avoir une LoadData()
est une meilleure approche. En fonction de la complexité de l'application et du nombre de formulaires et d'images que vous avez, il peut s'avérer utile d'avoir toutes vos images héritées d'un cadre de base commun. Vous pouvez ensuite introduire une méthode virtuelle LoadData
dans la base et remplacer dans les sous-classes d'image.
Alternativement, vous pouvez également concevoir une interface et avoir des cadres l'implémenter. Si cela est fait correctement, cela pourrait vous permettre de traiter uniformément des formulaires, des cadres ou même des panneaux, etc.
Il est difficile de vous donner un conseil plus spécifique, car cela dépend de la complexité de l'interface graphique et de l'application. En général, il est toujours bon d'avoir aussi peu de logique/code dans les formes/cadres que possible. L'introduction d'un type de classe FormManager gérant l'enregistrement et l'affichage des formulaires/cadres peut aider à isoler ce comportement dans un seul emplacement. Mais si c'est une petite application simple, vous pouvez vous en sortir simplement en utilisant des formulaires.
Je généralement choisir l'une des deux approches différentes:
- 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)
- Une propriété avec un setter pour le même type d'objet
De cette façon, la logique d'obtention des objets peut être cachée ailleurs. (Maintenant, il se peut que ce soit ce que vous faites déjà, mais le nom 'LoadData' me fait croire que votre renommée va réellement charger des données à partir d'un référentiel de stockage au lieu de simplement afficher les données. else a déjà été récupéré ...)
- 1. Événement maximisé Delphi-form
- 2. Frame Callbcak pour AxWindowsMediaPlayer
- 3. ProgressDialog onCreate
- 4. ActiveRecordBase ne pas OnCreate
- 5. Turbo Power systools stExport événement dans Delphi
- 6. Événement DockPanel, TForm et OnClose dans Delphi
- 7. ASP.net Delphi image dynamique onclick événement
- 8. Android - Activité Constructeur vs onCreate
- 9. objet javascript oncreate événement comme dans la programmation api win32 - est-ce possible
- 10. modifier l'orientation sans appel OnCreate
- 11. Comment démarrer MPlayer depuis onCreate?
- 12. android weird onCreate/onDestroy balance
- 13. Web Frame Validation Frameworks
- 14. zend-frame navigation
- 15. .NET Rest Frame Frameworks
- 16. Structure de modèle XSL pour choisir le dernier événement
- 17. ImageView change frame/bounds
- 18. touchesmoved quitter frame
- 19. wxPython Frame désactivé/activé?
- 20. Cross Frame Script Réutilisation
- 21. WPF: InkCanvas + Frame
- 22. Android Frame Animation
- 23. WPF Frame control
- 24. Comment détecter le modèle d'imprimante dans Delphi?
- 25. URL de rappel Android appelant oncreate
- 26. Delphi: Annulation d'un TDataSet.Post dans un événement OnBeforePost
- 27. AsyncTask et setAdapter dans les méthodes onCreate
- 28. Modification des propriétés Voir après onCreate()
- 29. FitNesse pour Delphi 2006/Delphi 2007/Delphi 2009
- 30. Perl network frame/packet parser
Oui, le constructeur hérité prioritaire fera l'affaire – zz1433