Certains développeurs d'applications de base de données préfèrent créer un module de données avant la forme principale en modifiant le fichier source de projet comme celui-ci la question est - pourquoi? Pourquoi? Quels sont les avantages et les contras? P> p>
5 Réponses :
La raison évidente serait si le formulaire principal nécessite le module de données de sa configuration. Par exemple, s'il y a quelque chose là-bas, les références de formulaire principale dans son oncree, alors bien sûr, le module de données devrait être prêt d'abord. P>
Sinon, cela n'a pas vraiment d'importance. P>
Je suis d'accord, j'ai également vu pour générer des menus de manière dynamique.
Je suis d'accord avec la réponse de Mason car cela explique pourquoi les gens peuvent le faire. Cependant, je pense que c'est une mauvaise approche car elle cache la dépendance dans le code qui est maintenu par l'IDE. À mon avis, le module de données doit être supprimé de la liste de création automatique et doit être créé dans la méthode Oncreate du formulaire principal. p>
Je ne suis pas d'accord sur le fait que le module de données doit être créé par la méthode Oncreate de MainForm et pense que le style est mauvais. Au lieu de cela, je créerais d'abord la forme principale et le module de données, et je ne placerais aucun code à l'intérieur du formulaire principal qui dépend d'une autre forme, lors de sa création ou d'une destruction. Au lieu de cela, j'écrirais des fonctions d'initialisation distinctes et les invoquerais par code que j'écris, pour arriver à un moment donné. Je n'aime pas les événements de formeCreate qui font beaucoup d'autres que de créer des objets locaux qui sont des champs privés / protégés à l'intérieur du formulaire. Tout autre chose ne devrait pas être dans le format de forme.
Juste parce que c'est le moyen le plus acharné d'assurer que le contenu de DataModule est disponible pour MainForm. Si vous n'avez qu'une donnée de données, il n'y a pas de problème. P>
Il y a vraiment deux camps sur celui-ci, et les deux sont corrects. p>
Le premier permet à l'application de gérer la durée de vie de chaque module de formulaire / données. Dans ce scénario, si le formulaire principal utilise le module de données, il doit être créé avant de pouvoir être utilisé. Cela fonctionne bien pour les petites applications, mais il existe une surcharge de chargement lorsque vous obtenez des applications plus importantes avec plusieurs formes ... Toutefois, une fois que l'application est chargée, l'affichage d'un formulaire est presque instantané depuis sa création de mémoire. Étant donné que chaque formulaire / ressource est déjà créée, une grande mémoire est également heurtée lors de l'exécution de l'application. Cette méthode est la valeur par défaut que Delphi "mène" vous aussi lorsque vous ajoutez de nouveaux modules de formulaires / de données à l'application. Si vous n'utilisez pas le DataModule dans l'Oncreate duform, il peut être plus bas dans la commande Créer car il ne sera appelé qu'après la lancée de l'application.Run. P>
Le deuxième camp veut gérer la création et la destruction de chaque module de formulaire / données lui-même (généralement pour toutes les formes autres que le formulaire principal). L'avantage de cette méthode est que l'application se chargera plus rapidement et consomme moins de mémoire immédiatement au démarrage. Généralement dans ce scénario, c'est la forme principale (ou d'autres formes) qui gèrent complètement le cycle de vie de chaque module de formulaire / données qu'ils utilisent. Cette méthode fonctionne mieux pour les applications plus importantes avec de nombreuses formes. P>
MainForm n'est pas affiché avant la création de tous les autres composants. Donc, fondamentalement, vous attendrez dans les deux cas, le module météo est créé en premier ou non. Si votre grille est sur la forme principale, vous risquez d'avoir des problèmes lorsque vous essayez d'utiliser quelque chose comme celui-ci à partir de l'événement de la table de données-modules (ou de la requête) (après ouvert): raison Est évident: la grille n'est pas encore créée. Je dois admettre, je crée également Datamodule d'abord. Mais il y a des raisons, comme celui que je viens de décrire, quand il n'est pas pratique de le faire. P> p>
Il n'y a pas de gestionnaire onecreate ou d'autre. MainForm peut faire référence à des données de données déclarées dans DataModule, mais afaik ils sont résolus avec succès sans changer l'ordre de création.
Cela ne signifie pas que vous devez modifier la source de projet. L'ordre de création de Datamodules et de formulaires peut être modifié dans la boîte de dialogue Options du projet. Le premier formulaire créé sera la forme principale, mais il peut y avoir des données de données créées avant cela. Vous pouvez également consulter ma réponse à cette question: Stackoverflow.com/Questtions/382527/...
Pour Uwe Raabe - Je sais qu'il y a beaucoup d'options. J'ai moi-même parfois compiler un projet de test d'unités d'interface graphique sans aucune forme.