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.

Referencias entre formularios

Foro público de Xailer en español
Responder
ddupre
Mensajes: 331
Registrado: Lun Nov 12, 2007 3:53 pm

Referencias entre formularios

Mensaje por ddupre »

Hola foro:
Necesito referirme a un componente de un formulario desde otro, si bien
lo he hecho, aquí­ se me da una situación que no se resolver, y para
mostrarlo mejor pongo el siguiente trozo de código:
Function Func0000() // Función de inicio del sistema
Local oEntrada
AppData:AddData("nNroempresa",1)
AppData:AddData("cNomEmpresa",space(1))
AppData:AddData("oMventas",TMySQLDataSource():Create())
AppData:AddData("nColorDialogos",clAliceBlue)
AppData:AddData("cUsuario",space(20))
set date french
set epoch to 1960
oEntrada := Tpant0000():New(Application)
oEntrada:Show()
TMenu0000():New(Application):Show()
oEntrada:Showmodal()
Func0001() // Conecta la base de datos
if TUsuario():New(Application):Showmodal() <> mrOK
Application:oMainForm:Close(.T.)
else
if TEmpresa():New(Application):Showmodal() <> mrok
Application:oMainForm:Close(.T.)
endif
endif
Return Nil
La cosa es que desde el OnInitialize de TUsuario tengo que des habilitar
una opción de TMenu0000.
Esa opción es la primera del menu a la cual le asigné la propiedad
"cVarname" con la palabra "cCuentas".
¿Alguna idea de como hacerlo?
Desde ya muchas gracias.
Daniel.
jasm.quitaesto
Mensajes: 420
Registrado: Sab Ago 16, 2008 9:06 pm

Referencias entre formularios

Mensaje por jasm.quitaesto »

Daniel,
Cuando creas un formulario desde otro así­:
oForm2 := Tform2:New( Self ) //le paso el valor del formulario en el
que estoy
Puedes acceder al formulario padre o llamante con :Parent :
oForm2:Parent:oEdit1
por ejemplo, accederá al contron oEdit1 del formulario oForm1 que es
desde el que se creo oForm2. Desde dentro de oForm2, lo referencia con
::oParent:oEdit1.
Saludos
Jose Alfonso Suarez
El 07/09/2010 18:34, Daniel Du Pré escribió:
> Hola foro:
> Necesito referirme a un componente de un formulario desde otro, si bien
> lo he hecho, aquí­ se me da una situación que no se resolver, y para
> mostrarlo mejor pongo el siguiente trozo de código:
>
> Function Func0000() // Función de inicio del sistema
> Local oEntrada
>
> AppData:AddData("nNroempresa",1)
> AppData:AddData("cNomEmpresa",space(1))
> AppData:AddData("oMventas",TMySQLDataSource():Create())
> AppData:AddData("nColorDialogos",clAliceBlue)
> AppData:AddData("cUsuario",space(20))
>
> set date french
> set epoch to 1960
>
> oEntrada := Tpant0000():New(Application)
> oEntrada:Show()
>
> TMenu0000():New(Application):Show()
> oEntrada:Showmodal()
>
> Func0001() // Conecta la base de datos
>
> if TUsuario():New(Application):Showmodal() <> mrOK
> Application:oMainForm:Close(.T.)
> else
> if TEmpresa():New(Application):Showmodal() <> mrok
> Application:oMainForm:Close(.T.)
> endif
> endif
>
> Return Nil
>
> La cosa es que desde el OnInitialize de TUsuario tengo que des habilitar
> una opción de TMenu0000.
> Esa opción es la primera del menu a la cual le asigné la propiedad
> "cVarname" con la palabra "cCuentas".
>
> ¿Alguna idea de como hacerlo?
>
> Desde ya muchas gracias.
> Daniel.
>
>
>
ddupre
Mensajes: 331
Registrado: Lun Nov 12, 2007 3:53 pm

Referencias entre formularios

Mensaje por ddupre »

José Alfonso,
Gracias por tu respuesta.
Entiendo perfecto tu explicación, es más, la vi en otro post.
Lo que me sucede aquí­ es que dentro de New() pongo Application, sin
saber exactamente lo que estoy haciendo, porque utilicé una idea que vi
en el foro para cambiar el formulario de inicio de la aplicación.
Entonces, no me doy cuenta quién es el formulario padre, y a demás no me
doy cuenta como es el "parentesco" entre Tmenu0000 y TUsuario.
Espero haber sido claro, sino intentare explicarlo mejor.
Saludos
Daniel.
El 07/09/10 13:59, José Alfonso Suárez Moreno escribió:
> Daniel,
>
> Cuando creas un formulario desde otro así­:
>
> oForm2 := Tform2:New( Self ) //le paso el valor del formulario en el
> que estoy
>
> Puedes acceder al formulario padre o llamante con :Parent :
>
> oForm2:Parent:oEdit1
>
> por ejemplo, accederá al contron oEdit1 del formulario oForm1 que es
> desde el que se creo oForm2. Desde dentro de oForm2, lo referencia con
> ::oParent:oEdit1.
>
> Saludos
>
> Jose Alfonso Suarez
>
>
>
> El 07/09/2010 18:34, Daniel Du Pré escribió:
>> Hola foro:
>> Necesito referirme a un componente de un formulario desde otro, si bien
>> lo he hecho, aquí­ se me da una situación que no se resolver, y para
>> mostrarlo mejor pongo el siguiente trozo de código:
>>
>> Function Func0000() // Función de inicio del sistema
>> Local oEntrada
>>
>> AppData:AddData("nNroempresa",1)
>> AppData:AddData("cNomEmpresa",space(1))
>> AppData:AddData("oMventas",TMySQLDataSource():Create())
>> AppData:AddData("nColorDialogos",clAliceBlue)
>> AppData:AddData("cUsuario",space(20))
>>
>> set date french
>> set epoch to 1960
>>
>> oEntrada := Tpant0000():New(Application)
>> oEntrada:Show()
>>
>> TMenu0000():New(Application):Show()
>> oEntrada:Showmodal()
>>
>> Func0001() // Conecta la base de datos
>>
>> if TUsuario():New(Application):Showmodal() <> mrOK
>> Application:oMainForm:Close(.T.)
>> else
>> if TEmpresa():New(Application):Showmodal() <> mrok
>> Application:oMainForm:Close(.T.)
>> endif
>> endif
>>
>> Return Nil
>>
>> La cosa es que desde el OnInitialize de TUsuario tengo que des habilitar
>> una opción de TMenu0000.
>> Esa opción es la primera del menu a la cual le asigné la propiedad
>> "cVarname" con la palabra "cCuentas".
>>
>> ¿Alguna idea de como hacerlo?
>>
>> Desde ya muchas gracias.
>> Daniel.
>>
>>
>>
>
ddupre
Mensajes: 331
Registrado: Lun Nov 12, 2007 3:53 pm

Referencias entre formularios

Mensaje por ddupre »

Hola foro:
Sigo probando y no encuentro como llegar desde un formulario a otro en
el caso de formularios como los que pongo en el ejemplo.
1) Alguien que me pueda dar alguna idea?
2) Quisiera saber que es lo que estoy haciendo cuando pongo
New(Application), ¿donde puedo leer algo al respecto? o en su defecto,
¿alguien podrí­a explicármelo?
Desde ya muchas gracias.
Daniel.
El 07/09/10 20:15, Daniel Du Pré escribió:
> José Alfonso,
>
> Gracias por tu respuesta.
> Entiendo perfecto tu explicación, es más, la vi en otro post.
> Lo que me sucede aquí­ es que dentro de New() pongo Application, sin
> saber exactamente lo que estoy haciendo, porque utilicé una idea que
> vi en el foro para cambiar el formulario de inicio de la aplicación.
> Entonces, no me doy cuenta quién es el formulario padre, y a demás no
> me doy cuenta como es el "parentesco" entre Tmenu0000 y TUsuario.
>
> Espero haber sido claro, sino intentare explicarlo mejor.
>
> Saludos
> Daniel.
>
>
> El 07/09/10 13:59, José Alfonso Suárez Moreno escribió:
>> Daniel,
>>
>> Cuando creas un formulario desde otro así­:
>>
>> oForm2 := Tform2:New( Self ) //le paso el valor del formulario en el
>> que estoy
>>
>> Puedes acceder al formulario padre o llamante con :Parent :
>>
>> oForm2:Parent:oEdit1
>>
>> por ejemplo, accederá al contron oEdit1 del formulario oForm1 que es
>> desde el que se creo oForm2. Desde dentro de oForm2, lo referencia
>> con ::oParent:oEdit1.
>>
>> Saludos
>>
>> Jose Alfonso Suarez
>>
>>
>>
>> El 07/09/2010 18:34, Daniel Du Pré escribió:
>>> Hola foro:
>>> Necesito referirme a un componente de un formulario desde otro, si bien
>>> lo he hecho, aquí­ se me da una situación que no se resolver, y para
>>> mostrarlo mejor pongo el siguiente trozo de código:
>>>
>>> Function Func0000() // Función de inicio del sistema
>>> Local oEntrada
>>>
>>> AppData:AddData("nNroempresa",1)
>>> AppData:AddData("cNomEmpresa",space(1))
>>> AppData:AddData("oMventas",TMySQLDataSource():Create())
>>> AppData:AddData("nColorDialogos",clAliceBlue)
>>> AppData:AddData("cUsuario",space(20))
>>>
>>> set date french
>>> set epoch to 1960
>>>
>>> oEntrada := Tpant0000():New(Application)
>>> oEntrada:Show()
>>>
>>> TMenu0000():New(Application):Show()
>>> oEntrada:Showmodal()
>>>
>>> Func0001() // Conecta la base de datos
>>>
>>> if TUsuario():New(Application):Showmodal() <> mrOK
>>> Application:oMainForm:Close(.T.)
>>> else
>>> if TEmpresa():New(Application):Showmodal() <> mrok
>>> Application:oMainForm:Close(.T.)
>>> endif
>>> endif
>>>
>>> Return Nil
>>>
>>> La cosa es que desde el OnInitialize de TUsuario tengo que des
>>> habilitar
>>> una opción de TMenu0000.
>>> Esa opción es la primera del menu a la cual le asigné la propiedad
>>> "cVarname" con la palabra "cCuentas".
>>>
>>> ¿Alguna idea de como hacerlo?
>>>
>>> Desde ya muchas gracias.
>>> Daniel.
>>>
>>>
>>>
>>
jasm.quitaesto
Mensajes: 420
Registrado: Sab Ago 16, 2008 9:06 pm

Referencias entre formularios

Mensaje por jasm.quitaesto »

Daniel,
En el caso de New( Application ), el oParent del formulario creado así­,
apuntará a Application.
Saludos
Jose A. Suarez
El 09/09/2010 15:42, Daniel Du Pré escribió:
> Hola foro:
> Sigo probando y no encuentro como llegar desde un formulario a otro en
> el caso de formularios como los que pongo en el ejemplo.
>
> 1) Alguien que me pueda dar alguna idea?
> 2) Quisiera saber que es lo que estoy haciendo cuando pongo
> New(Application), ¿donde puedo leer algo al respecto? o en su defecto,
> ¿alguien podrí­a explicármelo?
>
>
> Desde ya muchas gracias.
>
> Daniel.
>
>
> El 07/09/10 20:15, Daniel Du Pré escribió:
>> José Alfonso,
>>
>> Gracias por tu respuesta.
>> Entiendo perfecto tu explicación, es más, la vi en otro post.
>> Lo que me sucede aquí­ es que dentro de New() pongo Application, sin
>> saber exactamente lo que estoy haciendo, porque utilicé una idea que
>> vi en el foro para cambiar el formulario de inicio de la aplicación.
>> Entonces, no me doy cuenta quién es el formulario padre, y a demás no
>> me doy cuenta como es el "parentesco" entre Tmenu0000 y TUsuario.
>>
>> Espero haber sido claro, sino intentare explicarlo mejor.
>>
>> Saludos
>> Daniel.
>>
>>
>> El 07/09/10 13:59, José Alfonso Suárez Moreno escribió:
>>> Daniel,
>>>
>>> Cuando creas un formulario desde otro así­:
>>>
>>> oForm2 := Tform2:New( Self ) //le paso el valor del formulario en el
>>> que estoy
>>>
>>> Puedes acceder al formulario padre o llamante con :Parent :
>>>
>>> oForm2:Parent:oEdit1
>>>
>>> por ejemplo, accederá al contron oEdit1 del formulario oForm1 que es
>>> desde el que se creo oForm2. Desde dentro de oForm2, lo referencia
>>> con ::oParent:oEdit1.
>>>
>>> Saludos
>>>
>>> Jose Alfonso Suarez
>>>
>>>
>>>
>>> El 07/09/2010 18:34, Daniel Du Pré escribió:
>>>> Hola foro:
>>>> Necesito referirme a un componente de un formulario desde otro, si bien
>>>> lo he hecho, aquí­ se me da una situación que no se resolver, y para
>>>> mostrarlo mejor pongo el siguiente trozo de código:
>>>>
>>>> Function Func0000() // Función de inicio del sistema
>>>> Local oEntrada
>>>>
>>>> AppData:AddData("nNroempresa",1)
>>>> AppData:AddData("cNomEmpresa",space(1))
>>>> AppData:AddData("oMventas",TMySQLDataSource():Create())
>>>> AppData:AddData("nColorDialogos",clAliceBlue)
>>>> AppData:AddData("cUsuario",space(20))
>>>>
>>>> set date french
>>>> set epoch to 1960
>>>>
>>>> oEntrada := Tpant0000():New(Application)
>>>> oEntrada:Show()
>>>>
>>>> TMenu0000():New(Application):Show()
>>>> oEntrada:Showmodal()
>>>>
>>>> Func0001() // Conecta la base de datos
>>>>
>>>> if TUsuario():New(Application):Showmodal() <> mrOK
>>>> Application:oMainForm:Close(.T.)
>>>> else
>>>> if TEmpresa():New(Application):Showmodal() <> mrok
>>>> Application:oMainForm:Close(.T.)
>>>> endif
>>>> endif
>>>>
>>>> Return Nil
>>>>
>>>> La cosa es que desde el OnInitialize de TUsuario tengo que des
>>>> habilitar
>>>> una opción de TMenu0000.
>>>> Esa opción es la primera del menu a la cual le asigné la propiedad
>>>> "cVarname" con la palabra "cCuentas".
>>>>
>>>> ¿Alguna idea de como hacerlo?
>>>>
>>>> Desde ya muchas gracias.
>>>> Daniel.
>>>>
>>>>
>>>>
>>>
zeasoftware
Mensajes: 1831
Registrado: Mar Oct 11, 2005 9:53 am

Referencias entre formularios

Mensaje por zeasoftware »

Yo hice una clase igual para el usuario TUser (uso en ingles las
herramientas, para poder usarlas en español en el sistema), un arreglo de
opciones permitidas al usuario y en los menu-es agregé un metodo tipo
requestState:
With Object :AddItem("&Productos", ID_PRODUCTOS, "Productos" )
:lAutoSize := AppData:lBarwName
:nID_Check := ID_PRODUCTOS
:OnClick := {|| ::Launch(TProductos()) }
:OnCheckState := {|| AppData:lConected .And. ;
AppData:TAppUser:ItemEnabled(
ID_PRODUCTOS ) }
End With
asi recorro todas las opciones, habilitando y des-habilitando las que
requiera cada usuario.
Espero te sirva.
Saludos.
--
Ramón Zea
01.993.231-62-29
http://www.paginasprodigy.com/zeasoftware/
zeasoftware@prodigy.net.mx
zeasoftware@hotmail.com
ramonzea@yahoo.com
zeasoft.movil@hotmail.com
ddupre
Mensajes: 331
Registrado: Lun Nov 12, 2007 3:53 pm

Referencias entre formularios

Mensaje por ddupre »

Gracias Ramón por tu ayuda.
Saludos.
El 09/09/10 12:22, Ramón Zea escribió:
> Yo hice una clase igual para el usuario TUser (uso en ingles las
> herramientas, para poder usarlas en español en el sistema), un
> arreglo de
> opciones permitidas al usuario y en los menu-es agregé un metodo tipo
> requestState:
>
> With Object :AddItem("&Productos", ID_PRODUCTOS, "Productos" )
> :lAutoSize := AppData:lBarwName
> :nID_Check := ID_PRODUCTOS
> :OnClick := {|| ::Launch(TProductos()) }
> :OnCheckState := {|| AppData:lConected .And. ;
> AppData:TAppUser:ItemEnabled(
> ID_PRODUCTOS ) }
> End With
>
> asi recorro todas las opciones, habilitando y des-habilitando las que
> requiera cada usuario.
>
> Espero te sirva.
>
> Saludos.
ddupre
Mensajes: 331
Registrado: Lun Nov 12, 2007 3:53 pm

Referencias entre formularios

Mensaje por ddupre »

José Alfonso
Nuevamente gracias por la ayuda.
Saludos
El 09/09/10 11:43, José Alfonso Suárez Moreno escribió:
> Daniel,
>
> En el caso de New( Application ), el oParent del formulario creado
> así­, apuntará a Application.
>
> Saludos
>
> Jose A. Suarez
>
> El 09/09/2010 15:42, Daniel Du Pré escribió:
>> Hola foro:
>> Sigo probando y no encuentro como llegar desde un formulario a otro en
>> el caso de formularios como los que pongo en el ejemplo.
>>
>> 1) Alguien que me pueda dar alguna idea?
>> 2) Quisiera saber que es lo que estoy haciendo cuando pongo
>> New(Application), ¿donde puedo leer algo al respecto? o en su defecto,
>> ¿alguien podrí­a explicármelo?
>>
>>
>> Desde ya muchas gracias.
>>
>> Daniel.
>>
>>
>> El 07/09/10 20:15, Daniel Du Pré escribió:
>>> José Alfonso,
>>>
>>> Gracias por tu respuesta.
>>> Entiendo perfecto tu explicación, es más, la vi en otro post.
>>> Lo que me sucede aquí­ es que dentro de New() pongo Application, sin
>>> saber exactamente lo que estoy haciendo, porque utilicé una idea que
>>> vi en el foro para cambiar el formulario de inicio de la aplicación.
>>> Entonces, no me doy cuenta quién es el formulario padre, y a demás no
>>> me doy cuenta como es el "parentesco" entre Tmenu0000 y TUsuario.
>>>
>>> Espero haber sido claro, sino intentare explicarlo mejor.
>>>
>>> Saludos
>>> Daniel.
>>>
>>>
>>> El 07/09/10 13:59, José Alfonso Suárez Moreno escribió:
>>>> Daniel,
>>>>
>>>> Cuando creas un formulario desde otro así­:
>>>>
>>>> oForm2 := Tform2:New( Self ) //le paso el valor del formulario en el
>>>> que estoy
>>>>
>>>> Puedes acceder al formulario padre o llamante con :Parent :
>>>>
>>>> oForm2:Parent:oEdit1
>>>>
>>>> por ejemplo, accederá al contron oEdit1 del formulario oForm1 que es
>>>> desde el que se creo oForm2. Desde dentro de oForm2, lo referencia
>>>> con ::oParent:oEdit1.
>>>>
>>>> Saludos
>>>>
>>>> Jose Alfonso Suarez
>>>>
>>>>
>>>>
>>>> El 07/09/2010 18:34, Daniel Du Pré escribió:
>>>>> Hola foro:
>>>>> Necesito referirme a un componente de un formulario desde otro, si
>>>>> bien
>>>>> lo he hecho, aquí­ se me da una situación que no se resolver, y para
>>>>> mostrarlo mejor pongo el siguiente trozo de código:
>>>>>
>>>>> Function Func0000() // Función de inicio del sistema
>>>>> Local oEntrada
>>>>>
>>>>> AppData:AddData("nNroempresa",1)
>>>>> AppData:AddData("cNomEmpresa",space(1))
>>>>> AppData:AddData("oMventas",TMySQLDataSource():Create())
>>>>> AppData:AddData("nColorDialogos",clAliceBlue)
>>>>> AppData:AddData("cUsuario",space(20))
>>>>>
>>>>> set date french
>>>>> set epoch to 1960
>>>>>
>>>>> oEntrada := Tpant0000():New(Application)
>>>>> oEntrada:Show()
>>>>>
>>>>> TMenu0000():New(Application):Show()
>>>>> oEntrada:Showmodal()
>>>>>
>>>>> Func0001() // Conecta la base de datos
>>>>>
>>>>> if TUsuario():New(Application):Showmodal() <> mrOK
>>>>> Application:oMainForm:Close(.T.)
>>>>> else
>>>>> if TEmpresa():New(Application):Showmodal() <> mrok
>>>>> Application:oMainForm:Close(.T.)
>>>>> endif
>>>>> endif
>>>>>
>>>>> Return Nil
>>>>>
>>>>> La cosa es que desde el OnInitialize de TUsuario tengo que des
>>>>> habilitar
>>>>> una opción de TMenu0000.
>>>>> Esa opción es la primera del menu a la cual le asigné la propiedad
>>>>> "cVarname" con la palabra "cCuentas".
>>>>>
>>>>> ¿Alguna idea de como hacerlo?
>>>>>
>>>>> Desde ya muchas gracias.
>>>>> Daniel.
>>>>>
>>>>>
>>>>>
>>>>
>
jrcsistemas
Mensajes: 180
Registrado: Lun Sep 15, 2008 2:53 pm

Referencias entre formularios

Mensaje por jrcsistemas »

Perdón si voy a decir una barbaridad.
Pero no se podria hacer una funcion que busque los formularios que "existen"
y crear una tabla indice con su nombre. Esa tabla estaria guardada en
Appdata
Seria algo como :
ActualizarTablaIndice() // Busca los "formularios activos" y crea la tabla
en relacion a Application. Llamada en cada iniciacion y cierre de un
formulario.
::oControl:Value := TraerValordeFormulario("ofrmMenuClientes",
"::oNombre:Value" )
// Traer el valor del control oNombre del formulario ofrmMenuClientes y
cargarlo en oControl del formalario actual
o
LlevarValor( "ofrmProveedores", "::oCalle:Value", ::oDomicilio:Value )
// Enviar el valor de oDomicilio a aCalle del formulario ofrmProveedores
Mis conocimientos no me alcanzan ni siquiera para empezar. Pero si se
pudiera realizar. Se terminaria eso del padre y el hijo...No se. Tal vez
funcione
Juan Castañeda
__________ Información de ESET NOD32 Antivirus, versión de la base de firmas de virus 5439 (20100910) __________
ESET NOD32 Antivirus ha comprobado este mensaje.
http://www.eset.com
zeasoftware
Mensajes: 1831
Registrado: Mar Oct 11, 2005 9:53 am

Referencias entre formularios

Mensaje por zeasoftware »

Puedes hacer:
With Object ofrmProveedores
:oCalleProv:value := ::oCalle:Value
:oDirProv:value := ::oDomicilio:Value
:show()
End With
Lo demás no entiendo cual seria su uso.
Espero haberte apoyado.
--
Ramón Zea
01.993.231-62-29
http://www.paginasprodigy.com/zeasoftware/
zeasoftware@prodigy.net.mx
zeasoftware@hotmail.com
ramonzea@yahoo.com
zeasoft.movil@hotmail.com
jrcsistemas
Mensajes: 180
Registrado: Lun Sep 15, 2008 2:53 pm

Referencias entre formularios

Mensaje por jrcsistemas »

Ramón gracias por tu respuesta. Es exactamente lo que necesito.
Desecho la idea del indice.
Lo unico que me falta y no se como hacer
* Saber si el formulario esta creado. Una especie de Existe(oFrmProveedores)
* Saber si se puede evaluar por macro en un With
With Object &cFormularioDestino.
&(:oCalleProv:value) := Valor1
&(:oDirProv:value) := Valor2
End With
Es simplemente una idea, para poder mandar un dato entre objetos no
"padre-hijo" sino a cualquier formulario que "exista".
Las funciones serian
GrabarFrm( cNombreFormularioDestino, cNombreControlDestino, cNuevoValor) //
Ej LeerFrm("oFrmProveedores","::oNombre:Value", cNombre )
cNombre := LeerFrm( cNombreFormuarioOrigen, cNombreControlOrigen) // Ej
cNombre := LeerFrm( "oFrmProveedores","::oNombre:Value")
Espero haberme explicado.
Juan Ramón Castañeda
__________ Información de ESET NOD32 Antivirus, versión de la base de firmas de virus 5440 (20100910) __________
ESET NOD32 Antivirus ha comprobado este mensaje.
http://www.eset.com
ddupre
Mensajes: 331
Registrado: Lun Nov 12, 2007 3:53 pm

Referencias entre formularios

Mensaje por ddupre »

Juan:
En el ejemplo que puse hay dos formularios que (para mi) no tienen
referencia padre-hijo, pero logré acceder a uno desde el otro.
Con las indicaciones de José Alfonso y estudiando la clase TApplication
vi que hay una propiedad llamada aForms, que va conteniendo la
información de todos los formularios creados y que estén visibles u
ocultos, no los destruidos.
Entonces, como mis formularios están creados de esta forma:
TMenu0000():New(Application):Show()
TUsuario():New(Application):Showmodal()
Puse en el onInitialize de Tusuario() esto:
Application:aForms[1]:cCuentas:lEnabled := .F.
en aForms[1] está la información del menú principal de la aplicación
y cCuentas es el cVarName de una opción del menú
y funcionó perfectamente.
Un saludos
Daniel
El 10/09/10 10:17, Juan Castañeda escribió:
> Perdón si voy a decir una barbaridad.
>
> Pero no se podria hacer una funcion que busque los formularios que "existen"
> y crear una tabla indice con su nombre. Esa tabla estaria guardada en
> Appdata
>
> Seria algo como :
>
> ActualizarTablaIndice() // Busca los "formularios activos" y crea la tabla
> en relacion a Application. Llamada en cada iniciacion y cierre de un
> formulario.
>
> ::oControl:Value := TraerValordeFormulario("ofrmMenuClientes",
> "::oNombre:Value" )
> // Traer el valor del control oNombre del formulario ofrmMenuClientes y
> cargarlo en oControl del formalario actual
>
> o
>
> LlevarValor( "ofrmProveedores", "::oCalle:Value", ::oDomicilio:Value )
> // Enviar el valor de oDomicilio a aCalle del formulario ofrmProveedores
>
> Mis conocimientos no me alcanzan ni siquiera para empezar. Pero si se
> pudiera realizar. Se terminaria eso del padre y el hijo...No se. Tal vez
> funcione
>
> Juan Castañeda
>
>
>
> __________ Información de ESET NOD32 Antivirus, versión de la base de firmas de virus 5439 (20100910) __________
>
> ESET NOD32 Antivirus ha comprobado este mensaje.
>
> http://www.eset.com
>
>
>
>
zeasoftware
Mensajes: 1831
Registrado: Mar Oct 11, 2005 9:53 am

Referencias entre formularios

Mensaje por zeasoftware »

Algo asi:
If ( oFrmProveedores <> Nil .And. ValType(oFrmProveedores) == "O" ) // y
puedes validas mas cosas
With Object oFrmProveedores
:oCalleProv:value := Valor1
:oDirProv:value := Valor2
End With
End
Pero... exactamente que quieres hacer?
Cargados de un proveedor desde una ventana de consulta? Si es asi, tengo
otra solucion viable.
Saludos.
--
Ramón Zea
01.993.231-62-29
http://www.paginasprodigy.com/zeasoftware/
zeasoftware@prodigy.net.mx
zeasoftware@hotmail.com
ramonzea@yahoo.com
zeasoft.movil@hotmail.com
jrcsistemas
Mensajes: 180
Registrado: Lun Sep 15, 2008 2:53 pm

Referencias entre formularios

Mensaje por jrcsistemas »

Ramón
Gracias por tu respuesta y perdona la demora en contestarte, pero ando con
varias cosas.
No tengo en este momento un problema puntual. Simplemente saber como
referirme a un control de un formulario abierto sin tener que depender de
oparent.
Me sirve perfectamente lo que me respondiste.
En el caso de la edicion de datos ya me ayudaste en su momento.
Gracias nuevamente
Juan
__________ Información de ESET NOD32 Antivirus, versión de la base de firmas de virus 5448 (20100913) __________
ESET NOD32 Antivirus ha comprobado este mensaje.
http://www.eset.com
Responder