Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   DataModule... donde lo pongo al crearlo? (https://www.clubdelphi.com/foros/showthread.php?t=38399)

Albano 13-12-2006 18:05:02

DataModule... donde lo pongo al crearlo?
 
Hola a todos! Tengan un buen día.
Estoy empezando con el tema de creación de objetos en tiempo de ejecución y lo que quiero es crear un DataModule para poner algunos componentes ADO sobre él, en lugar de ponerlos sobre un formulario... Lo creo con el siguiente código:
Código Delphi [-]
ModuloDatos := TDataModule.Create(Form1);
Puse el Form1 porque me pedía ese parámetro, pero ahí de todos modos estoy usando el formulario, que es lo que quiero evitar... cómo lo puedo hacer?

Albano 13-12-2006 18:18:23

Resuelto... En lugar de poner Form1, puse ModuloDatos (el mismo componente) y funciona, no necesito el formulario...
Alguien me puede explicar un poquito en qué consiste esa instrucción?
Gracias.

P.D. ya empecé con mis soliloquios.

Lepe 13-12-2006 19:21:35

Iba a abstenerme de reponder.... mi primera respuesta era "ponlo encima del frigorífico :D"... pero después de ver tu último mensaje, quiero hacer una aclaración.

El parámetro que te pide es el Aowner (dueño), quiere decir exactamente: "¿quién será el encargado de destruir el datamodule?".

Si pones Form1, cuando se libere el Form1 se liberará (destruir de memoria) el datamodule. En algunas ocasiones es totalmente válido, por ejemplo si ese Datamodule tiene solo las consultas y Tablas de ese formulario, así hacemos un correcto uso de memoria, al crearse el Form1, se crea todas las consultas y ttables del datamodule, y al cerrar el Form1, automáticamente se libera el datamodule.

Otro escenario es crear al inicio de la aplicación el datamodule y dejarlo creado durante toda la vida del programa. El aowner será el objeto "Application", de tal forma que cuando quieras cerrar el programa, entonces se libere el datamodule automáticamente.

Existen un parámetro especial, puedes poner como Aowner "nil", que significa que nadie destruirá el Datamodule; esto se usa cuando tú en alguna circunstancia especial escribes Datamodule1.Free (o lo que es lo mismo, nadie destruye automáticamente el Datamodule porque yo mismo me encargo de ello llamando a .Free).

Espero que me haya explicado con claridad. Saludos

Albano 13-12-2006 19:32:21

Cita:

Empezado por Lepe
Espero que me haya explicado con claridad. Saludos

Clarísimo!! Ya estoy entendiendo. Gracias.

Crandel 13-12-2006 23:55:54

En la mayoría de las aplicaciones estandar de Base de Datos, personalmente prefiero que el DataModule se cree automáticamente desde el inicio de tu aplicación.

solo asegurate que la linea Application.CreateForm(TDataModule1, DataModule1); se encuentre antes de la creación de los demas fromularios en tu archivo dpr.

o desde las opciones del proyecto en Auto-create forms, que este primero.

AzidRain 14-12-2006 00:31:05

La opcion mas facil como dice Crandel es crear en datamodule en tiempo de diseño y dejar que delphi se encargue de crearlo y borrarlo (el comportamiento por default)...

Albano 14-12-2006 01:36:36

Cita:

Empezado por AzidRain
crear en datamodule en tiempo de diseño y dejar que delphi se encargue de crearlo y borrarlo

Se puede hacer esto con un DLL? Se pueden poner componentes en tiempo de diseño? Tal vez sea una pregunta muy tonta, pero apenas estoy entrando al tema, de verdad no tengo idea.

Crandel 14-12-2006 14:09:15

Cita:

Empezado por Albano
Se puede hacer esto con un DLL? Se pueden poner componentes en tiempo de diseño? Tal vez sea una pregunta muy tonta, pero apenas estoy entrando al tema, de verdad no tengo idea.

no lo creo

pero para esta pregunta es preferible que esperes un poco para ver si alguen te contesta en el hilo horiginal y sino, escribe un nuevo mensaje para que se refresque el hilo

AzidRain 14-12-2006 16:35:42

Nos encontramos en uno de esos hilos en que la verdadera duda yace por ahi escondida en espera de ser adivinada...:)

La pregunta inicial debio ser: "Como puedo poner un DataModule en una DLL para que pueda accesarla desde otros programas"

Y eso cambiaria mucho el hilo...

Asi cambia la cosa...en tiempo de diseño teoricamente es posible hacer una DLL como la que quieres, sobre todo por tratarse de componentes no visuales.

Crandel 14-12-2006 17:58:48

Eso dependera de Albano, posiblemente no le contesten su duda dado que nadie entendio la pregunta :confused: :confused: :confused:

Albano 14-12-2006 22:31:35

Cita:

Empezado por Crandel
posiblemente no le contesten su duda dado que nadie entendio la pregunta :confused: :confused: :confused:

Discúlpenme, es que estoy empezando y me enredo con estos temas (DLLs y Creación de objetos en tiempo de ejecución), en ocaciones no se ni cómo preguntar... Pero mi duda sobre el DataModule está resulelta, mejor me voy a los otros hilos para seguir con el tema de la DLL... Gracias.


La franja horaria es GMT +2. Ahora son las 14:11:05.

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