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.

Controlar un Form desde otro

Foro público de Xailer en español
Responder
Jesus Semper
Mensajes: 54
Registrado: Lun Ene 04, 2010 2:40 pm

Controlar un Form desde otro

Mensaje por Jesus Semper »

Intento que al pulsar un boton en TForm1 se cambie el valor de un control
oLabel de otro TForm2 pero no lo consigo.
¿Existe algun modo de hacerlo?
desarrollo
Mensajes: 109
Registrado: Lun Abr 02, 2007 10:12 am

Controlar un Form desde otro

Mensaje por desarrollo »

WITH OBJECT oFrm2 := TForm2():New( self )
:oLabel2:cText := "Un valor nuevo"
:Show()
END WITH
"Jesus" <jesus@semper-sl.com> escribió en el mensaje
news:460fbf27$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Intento que al pulsar un boton en TForm1 se cambie el valor de un control
> oLabel de otro TForm2 pero no lo consigo.
>
>
> ¿Existe algun modo de hacerlo?
>
>
Jesus Semper
Mensajes: 54
Registrado: Lun Ene 04, 2010 2:40 pm

Controlar un Form desde otro

Mensaje por Jesus Semper »

Gracias por la rapida respuesta.
Al hacerlo asi me crea un nuevo formulario ademas del que ya tengo.
Mi problema es, teniendo YA CREADOS y visibles TForm1 y tForm2, desde un
boton del primer
formulario hacer que se cambie el contenido de otro control del segundo
formulario y que sea visible
el cambio.
En otros lenguajes oops seria algo asi como:
TForm2:oLabel2:cText := "Un valor en oLabel2 nuevo"
TForm2:Show()
pero no me reconoce TForm2
jrcpoli-quitar
Mensajes: 558
Registrado: Mar Feb 09, 2010 2:26 pm

Controlar un Form desde otro

Mensaje por jrcpoli-quitar »

Jesus escribió:
> Gracias por la rapida respuesta.
> Al hacerlo asi me crea un nuevo formulario ademas del que ya tengo.
>
> Mi problema es, teniendo YA CREADOS y visibles TForm1 y tForm2, desde un
> boton del primer
> formulario hacer que se cambie el contenido de otro control del segundo
> formulario y que sea visible
> el cambio.
Pero creas los dos formularios independientemente o el segundo se crea a
partir del primero.
>
> En otros lenguajes oops seria algo asi como:
>
> TForm2:oLabel2:cText := "Un valor en oLabel2 nuevo"
> TForm2:Show()
>
Te corrijo esto que has puesto, si solo quieres que cambie el oLabel no
puedes hacer un TForm2:Show() en todo caso serí­a TForm2:oLabel2:Show()
de todas formas si el segundo no es accesible desde el primero te dará
error.
>
> pero no me reconoce TForm2
>
>
Si creas el formulario TForm2 a partir del primero siempre tienes las
variables del primero en ::oParent:oLabel:cText
También puedes hacer Datas en el TForm2 que sean llamadas al pulsar el
botón del TForm1 en el evento Onclick del botón.
Si eres un poco mas concreto creo que te entenderí­amos mejor, o pon un
ejemplo sencillo y lo enví­as con eso seguro que te entendemos.
José Ramón Castro
Jesus Semper
Mensajes: 54
Registrado: Lun Ene 04, 2010 2:40 pm

Controlar un Form desde otro

Mensaje por Jesus Semper »

Intentare explicarme.
Dispongo de un formulario TForm1 con varios controles TButtom.
Tambien tengo otro formulario TForm2 con un control oLabel1
En el oButtom2 de TForm1, tengo el codigo:
//---------------------------------------------------------- --------------
METHOD Button2Click( oSender ) CLASS TForm1
LOCAL oForm2 := TForm2():New(Self):Show() //para presentar el TForm2
RETURN Nil
//---------------------------------------------------------- --------------
que funciona correctamente para que aparezca el formulario tal y como se
diseño.
El problema que no se resolver es como desde el TForm1, pulsando otro boton
de este,
se puede cambiar el texto del oLabel1 del TForm2 y verlo simultaneamente.
Hasta ahora tengo escrito en el codigo de este boton:
//---------------------------------------------------------- ----------------
----
METHOD Button3Click( oSender ) CLASS TForm1
WITH OBJECT oFrm2 := TForm2():New( self )
:oLabel1:cText := "Un valor en oLabel1 nuevo"
:oEdit1:value := "Un valor en oEdit1 nuevo"
:Show()
END WITH
TForm2():Show()
RETURN Nil
//---------------------------------------------------------- ----------------
----
Esto funciona sin error pero no cambia el dato en el TForm2 existente.
Lo que hace es: primero presenta un formulario vacio sin datos y luego crea
otro Form2
con el dato oLabel1 cambiado a lo solicitado.
notelo
Mensajes: 54
Registrado: Sab Abr 28, 2007 2:06 pm

Controlar un Form desde otro

Mensaje por notelo »

Jesus,
> METHOD Button3Click( oSender ) CLASS TForm1
>
> WITH OBJECT oFrm2 := TForm2():New( self )
> :oLabel1:cText := "Un valor en oLabel1 nuevo"
> :oEdit1:value := "Un valor en oEdit1 nuevo"
> :Show()
:Create()
> END WITH
>
> TForm2():Show()
Estas llamando a Show() dos veces.
Saludos,
José Lalí­n
Jesus Semper
Mensajes: 54
Registrado: Lun Ene 04, 2010 2:40 pm

Controlar un Form desde otro

Mensaje por Jesus Semper »

!Muy bien!. Elimino el TForm2():Show() ultimo y deja de aparecerme la
dichosa pantalla sin datos.
Sin embargo me sigue creando cada vez que pulso el boton un nuevo
formulario, imagino que debido al :New(self).
¿Como hacer que trabaje sobre el TForm2 que ya esta abierto, sin crear otro
formulario?
"José Lalín" <notelo@digo.com> escribió en el mensaje
news:46110230$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
>
> Jesus,
>
> > METHOD Button3Click( oSender ) CLASS TForm1
> >
> > WITH OBJECT oFrm2 := TForm2():New( self )
> > :oLabel1:cText := "Un valor en oLabel1 nuevo"
> > :oEdit1:value := "Un valor en oEdit1 nuevo"
> > :Show()
>
> :Create()
>
> > END WITH
> >
> > TForm2():Show()
>
> Estas llamando a Show() dos veces.
>
> Saludos,
> José Lalín
notelo
Mensajes: 54
Registrado: Sab Abr 28, 2007 2:06 pm

Controlar un Form desde otro

Mensaje por notelo »

Jesus,
> ¿Como hacer que trabaje sobre el TForm2 que ya esta abierto, sin crear otro
> formulario?
Puedes hacerlo de varias maneras:
* Con una estática:
METHOD Button2Click( oSender ) CLASS TForm1
static oForm2
if oForm2 == Nil
oForm2 := TForm2():New( Self )
endif
oForm2:Show()
RETURN Nil
* Haciendo el formulario modal
METHOD Button2Click( oSender ) CLASS TForm1
LOCAL oForm2 := TForm2():New( Self ):ShowModal()
RETURN Nil
Mira la propiedad nModalResult.
Saludos,
José Lalí­n
PILO
Mensajes: 583
Registrado: Vie Jul 06, 2007 5:18 pm

Controlar un Form desde otro

Mensaje por PILO »

Te aconsejo mires el ejemplo del datacontrolsdbfdata6
Espero que te ayude en lo que quieres hacer, yo hago algo
parecido y he cogido los ejemplos de aqui
Responder