Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Lazarus, FreePascal, Kylix, etc. (https://www.clubdelphi.com/foros/forumdisplay.php?f=14)
-   -   Problemas al no encontrar un tDataSource (https://www.clubdelphi.com/foros/showthread.php?t=68660)

socger 28-06-2010 12:35:31

Problemas al no encontrar un tDataSource
 
Tengo un tForm donde tengo componentes Zeos TzConnection y TzQwery a los que los tengo unidos entre si hasta llegar a un TDataSource.

Bién si en este tForm pongo un tDBEdit y lo asocio en su propiedad Datasource al TDataSource único que tengo en este formulario funciona perfectamente.

El problema radica cuando creo otro formulario y en este pongo en la cláusula uses el anterior tform, pues si en este nuevo tForm pongo un dbEdit, en su propiedad DataSource no aparece el tDataSource del formulario primero.

¿Por qué creeis vosotros que me ocurre esto?. En Delphi si que es posible hacerlo, pero no se porqué en Lazarus no. Algo tengo que haber hecho mal, pues me da un error de Invalid Operation cuando intento ponerle a mano el DataSource del otro formulario (nombredelform.nombredelDataSource)

Saludos y gracias de antemano

olbeup 02-07-2010 09:25:12

Hola Socer,

Yo no trabajo con lazarus, pero en teoría no debe de haber ningún problema al respecto, haz realizado la unión del segundo formulario con el primero.

Un saludo, Amigo mio.

donald shimoda 02-07-2010 15:07:09

Cita:

Empezado por socger (Mensaje 368503)
Tengo un tForm donde tengo componentes Zeos TzConnection y TzQwery a los que los tengo unidos entre si hasta llegar a un TDataSource.

Bién si en este tForm pongo un tDBEdit y lo asocio en su propiedad Datasource al TDataSource único que tengo en este formulario funciona perfectamente.

El problema radica cuando creo otro formulario y en este pongo en la cláusula uses el anterior tform, pues si en este nuevo tForm pongo un dbEdit, en su propiedad DataSource no aparece el tDataSource del formulario primero.

¿Por qué creeis vosotros que me ocurre esto?. En Delphi si que es posible hacerlo, pero no se porqué en Lazarus no. Algo tengo que haber hecho mal, pues me da un error de Invalid Operation cuando intento ponerle a mano el DataSource del otro formulario (nombredelform.nombredelDataSource)

Saludos y gracias de antemano

Tenes abierto el datamodule?
Que versión de lazarus?

socger 09-07-2010 09:33:21

Solucionado
 
Al final he resuelto aparentemente el problema. Todo radica en la opción del menú de Lazarus .... Proyecto\Opciones del proyecto y sobre la lengüeta Formulario

Ahí tengo los formularios que se han ido añadiendo al proyecto, yo sólo pongo en el recuadro de Crear Formularios Automáticamente, aquellos que arrancan con la aplicación y que siempre estarán residentes. Los demás los tengo en el recuadro Formularios disponibles, o sea que se añaden al proyecto pero no los creo automáticamente, sino desde código cuando me hacen falta. Esto lo heredo de Delphi para no cargar la memoria del equipo innecesariamente, de tal manera que los creo, los uso y los destruyo.

Bien pues todos los formularios que estén en este recuadro, no podrán ser vistos en el IDE, por otros formularios a no ser que estén en el otro recuadro. Por ejemplo esto ocurre en la propiedad Datasource del componente tDBEdit. El formulario2 no podrá ver al formulario1 a no ser que el uno esté sobre el recuadro CREAR FORMULARIOS AUTOMATICAMENTE. Así que la solución es tenerlos en este recuadro por un tiempo hasta rellenar todas las propiedades necesarias y luego volverlo al recuadro FORMULARIOS DISPONIBLES. Por su puesto también es necesario tenerlo el formulario1 en la implementation del formulario2, si no ni tansiquiera se podría compilar si su código llamara a alguna función o procedimiento del formulario1.

Me ha costado trabajo y imaginación pero esta solución funciona, si otro usuario descubre el porqué se lo agradecería. O si encuentra otro modo de solucionarlo al estilo Delphi.

Saludos y Gracias por tu respuesta obleup (osea salva)

donald shimoda 09-07-2010 12:52:40

Cita:

Empezado por socger (Mensaje 369789)
Al final he resuelto aparentemente el problema. Todo radica en la opción del menú de Lazarus .... Proyecto\Opciones del proyecto y sobre la lengüeta Formulario

Me parece que estas confundido.:rolleyes:

Los formularios en lazarus funcionan igual que en Delphi, de modo que aunque te parezca que lo que hiciste posibilito que realices una acción determinada, te aseguro que fue otra acción la que soluciono tu problema.
Al igual que delphi los datamodules deben ser lo primeros en el orden de creación si están siendo usados por otros form, y no serán utilizados como formulario principal. El formulario principal es el primer descendiente de TForm que se encuentre en la lista de autocreación , al igual que en Delphi.

Además, para poder usar una datasource o cualquier componente de un datamodule el mismo debe estar en la uses list del formulario que lo usará, y debe estar abierto en el IDE, al igual que Delphi.

Espero haber aclarado la confusión.;)

Saludos


La franja horaria es GMT +2. Ahora son las 22:20:19.

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