Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   ¿En qué se diferencia un TDataModule de un TForm? (https://www.clubdelphi.com/foros/showthread.php?t=60240)

noob 25-09-2008 14:57:10

¿En qué se diferencia un TDataModule de un TForm?
 
Mi aplicación tiene varios formularios, uno principal y varios secundarios, y necesito acceder a unos cuantos objetos (los mismos) en todos los formularios.

Para ello lo primero que se me ocurrió fue crear los objetos en el formulario principal y pasar como parámetro aquellos objetos que necesitara a los distintos formularios pero me pareció una chapuza.

Más tarde me comentaron que esto lo podría resolver con un TDataModule creando ahí los objetos y luego accediendo a ellos por medio de la variable DataModule1, pero me he puesto a mirar el TDataModule y no veo ninguna diferencia con un formulario normal y corriente, la única diferencia que veo es que el TDataModule no se ve al ejecutar el programa pero eso lo podemos conseguir poniendo la propiedad Visible de un formulario a False.

¿Tiene alguna cosa interesante de mención el TDataModule o para lo que voy a hacer me valdría también un TForm?

Gracias.

coso 25-09-2008 15:09:34

Hola,
esto lo preguntaron hace nada. No tiene ninguna diferencia, solo que es un form especial que en tiempo de diseño te permite ver los objetos de base de datos de manera especial, mostrandote, por ejemplo, las relaciones maestro-detalle. Poca cosa mas, pero claro esta, es recomendable usarlo para eso mismo. Saludos.

droguerman 25-09-2008 15:09:40

Un DataModule no es visual, es decir en tiempo de ejecución, en ahi se colocan componentes no visuales, la idea es que tu aplicación tenga una capa gráfica (los Formularios) y una capa Lógica (Aqui puedes usar los datamodules).

Sobre todo es cuestión de orden el usarlo o no.

Delphius 25-09-2008 15:11:28

Hola noob,
A diferencia del TForm, un TDataModule no se muestra, no es para diseñar interfaces.
Se trata de una "especie" de Form en el que se puede insertar componentes NO visuales.
La traducción de DataModule sería Módulo de datos. Y su principal propósito es de ser un "depósito" de componentes para accedo a bases de datos. Por ejemplo: datasources, TTables, TQuerys, etc.

Por tanto, teniendo estos controles allí no contaminas la interfaz de controles.
Ahora para tener acceso a los controles que contiene el DataModulo debes declarar en uses la unidad correspondiente a dicho DatModule.

Si buscas en los foros sobre DataModule hallarás un poco más de información. Sugiero que leas la ayuda que proporciona Delphi sobre el tema.
Y a como de complemento, leer la Cara Oculta que se encuentra a disposición de todos en el FTP del club.

Saludos,

noob 25-09-2008 15:15:15

Muchas gracias por la info chicos.

roman 25-09-2008 16:50:08

Si me permiten, yo resumiría lo dicho así:

Cita:

Un DataModule es un contenedor de componentes no visuales.
A pesar del nombre, sirve para poner no sólo componentes de acceso a datos, sino cualquier otro componente no visual como un Timer, un ActionList, etc. En todo caso sirve -como ya han dicho- para mantener una sana separación de código.

Ahora, dos comentarios para noob.

No es lo mismo definitivamente, que poner un formulario con su propiedad Visible en false. Un formulario consume más recursos por ser una ventana. Pueden parecer similares, pero eso sólo es durante el diseño, donde el IDE pone unos diseñadores tanto para el DataModule como para el formulario; ésos son los que se ven parecidos. Pero en la ejecución, el formulario consiste de una ventana que ocupa recursos aún estando oculta, mientras que el DataModule no es una ventana.

Por otra parte, mencionas que vas a crear los objetos. Si vas a crear los objetos manualmente por código, de hecho ni siquiera necesitas un DataModule, puedes usar una unidad plana.

// Saludos


La franja horaria es GMT +2. Ahora son las 00:29:04.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi