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.
procedure
maprocedure;
var
mondatamodule : TDmdDb
Begin
mondatamodule := TDmdDb.Create(self
)
End
;
À partir de là , tous les objets déposés sur le Datamodule sont accessibles par
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.
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.