Unité de type Data Module

Il existe une unité très pratique permettant de regrouper des composants non graphiques, des classes et des procédures. Il s'agit du Data Module.

La principale fonction de cette unité est la centralisation d'objet communs à une ou plusieurs applications. Par exemple : composant de connexion à la base de données, images, menus, procédures globales etc.

Il est même conseillé d'avoir plusieurs Datamodules pour les grosses applications : connexion, gestion des stocks, achats, axport, etc.

L'avantage est la mutualisation des objets.

Commentez Donner une note à l'article (5)

Article lu   fois.

L'auteur

Profil Pro

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

Mise en place

Cette unité se comporte un peu comme une fiche.
Cliquez sur Nouveau. Dans la liste Files, choisissez Datamodule.

Une fiche apparaît à l'écran avec un fond blanc.
Cette unité est ajoutée automatiquement au projet en cours et créée directement dans le code du projet. Bien sûr, il est possible de l'enlever de la liste des objets créés automatiquement pour ne créer le Datamodule que lorsque nécessaire de la même façon que pour une Form (Voir dans les Options du projet / Onglet Fiches).

Imaginons le datamodule TDmdDb et créons-le dynamiquement s'il ne l'est pas automatiquement.

 
Sélectionnez

procedure maprocedure;
var
  mondatamodule : TDmdDb
Begin
  mondatamodule := TDmdDb.Create(self)
End;

A partir de là, tous les objets déposés sur le Datamodule sont accessibles par

 
Sélectionnez

mondatamodule.Momobjet

à condition d'avoir ajouté dans la section Uses de votre unité appelante le nom de l'unité contenant le Datamodule (toujours le même principe que pour une Form).

Vous pouvez déposer tous types de composants non graphiques sur un Datamodule.
Voilà ! C'est aussi simple que cela et ça rend de grands services.

Versions de Lazarus antérieures à 0.9.26

Il existe une petite contrainte avec les versions de Lazarus inférieures à 0.9.26 concernant l'utilisation des Datamodules mais cela n'est absolument pas gênant pour développer.

En effet, malgré le fait d'avoir mis à jour le uses de la form avec le nom de l'unité du datamodule, les objets contenus dans le Datamodule ne sont pas visibles depuis l'inspecteur d'objet des composants de la form, contrairement à Delphi.

Explication :

Si la form utilise le Datamodule mondatamodule qui, lui, contient un composant TSqlquery,
Si la form contient un TDatasource,
Alors, lorsque l'on cliquera dans l'inspecteur d'objet pour sélectionner le Dataset à utiliser pour le TDatasource de la form, le TSqlquery ne s'affichera pas dans liste déroulante.

En attendant, procédez comme cela : par exemple, initialisez la propriété Dataset d'un TDatasource d'une form à un TSqlquery placé dans un Datamodule.

 
Sélectionnez

form1.momdatasource.dataset := mondatamodule.Sqlquery1

Cela est corrigé à partir de la version 0.9.26.

Conclusion

Compliqué ? Non bien sûr. Alors à vos claviers et vos applications seront mieux structurées.

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Copyright © 2008-2010 chris37. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.