In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Cerrar un Dataset desde un formulario ajeno al objeto.

Foro de Xailer profesional en español
Responder
Angel
Mensajes: 135
Registrado: Mié Mar 21, 2007 1:11 pm

Cerrar un Dataset desde un formulario ajeno al objeto.

Mensaje por Angel »

Saludos!
Me explico: mi intención es cerrar un Dataset desde un formulario que no
lo contiene. He intentado cerrarlo via WITH OBJECT NombreDeLaClase()
pero así­ no he podido acceder a las propiedades de dicho formulario.
Si he conseguido cerrarlo de esta manera:
Application:aForms[x]:oDataset:lOpen:=.F. pero creo que no es la más
óptima porque los formularios los tengo que identificar gracias a un
número y no siempre es el mismo, pues depende del usuario. Si en vez de
abrir el modulo X, abre el modulo Y, el número de Application:aForms[],
cambia si no me equivoco. Pregunta aparte: ¿Es posible identificar los
formularios por Application:aforms["Nombredelformulario"] o solo es
posible via 1,2,3,4,5... etc.
Mediante WITH OBJECT NombreDeLaClase():CreateForm(Self), me permite
acceder a los objetos del formulario, pero en este caso no puedo usarlo
¡porque ese formulario ya esta creado!
¿Teneis alguna sugerencia? Gracias por adelantado.
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9458
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Cerrar un Dataset desde un formulario ajeno al objeto.

Mensaje por ignacio »

Ángel,
Existe un método en la clase TDataSource:GetDataSet() para encontrar
cualquier TDataset en base a su propiedad cName (utiliza operador $), pero
lo más recomendable es que sencillamente guarde en una variable o en una
DATA dentro del formulario principal el formulario:
Desde el formulario principal:
CLASS TForm1
DATA oFrmCli
.........................
ENDCLASS
METHOD Clientes() OF TForm1
WITH OBJECT ::oFrmCli := TFrmCli():New( Self )
.........
END WITH
Saludos,
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"Ángel Fernández" <angel@agelso.com> escribió en el mensaje
news:4696280c$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Saludos!
>
> Me explico: mi intención es cerrar un Dataset desde un formulario que no
> lo contiene. He intentado cerrarlo via WITH OBJECT NombreDeLaClase() pero
> así no he podido acceder a las propiedades de dicho formulario.
>
> Si he conseguido cerrarlo de esta manera:
> Application:aForms[x]:oDataset:lOpen:=.F. pero creo que no es la más
> óptima porque los formularios los tengo que identificar gracias a un
> número y no siempre es el mismo, pues depende del usuario. Si en vez de
> abrir el modulo X, abre el modulo Y, el número de Application:aForms[],
> cambia si no me equivoco. Pregunta aparte: ¿Es posible identificar los
> formularios por Application:aforms["Nombredelformulario"] o solo es
> posible via 1,2,3,4,5... etc.
>
> Mediante WITH OBJECT NombreDeLaClase():CreateForm(Self), me permite
> acceder a los objetos del formulario, pero en este caso no puedo usarlo
> ¡porque ese formulario ya esta creado!
>
> ¿Teneis alguna sugerencia? Gracias por adelantado.
>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
zeasoftware
Mensajes: 1831
Registrado: Mar Oct 11, 2005 9:53 am

Cerrar un Dataset desde un formulario ajeno al objeto.

Mensaje por zeasoftware »

A ver si te entendi, yo hago algo como esto:
En la clase padre es donde tienes el oDataSet y quieres usarlo en el Hijo?
Class Padre
Component oDataSet
::::::
EndClass
Method Padre_Llama Class Padre
With Object Hijo():New( Self )
:oDataClone := ::oDataSet //aqui paso como parametro el dataset de padre a hijo
:Listado()
End
Return ( Nil )
Class Hijo
Component oDataClone //este no lo defines como Dataset, solo lo escribes parecido a un Data.
:::
EndClass
Method Listado() Class Hijo
With Object ::oDataClone
:Open()
While !:Eof()
:Skip(1)
End
:Close()
End
Return ( Nil )
Espero te sirva.
Saludos,
--
Ramon Zea
zeasoftware@hotmail.com
zeasoft.movil@hotmail.com
ramonzea@yahoo.com
http://www.paginasprodigy.com/zeasoftware/
--
Responder