Página 1 de 1
Controlar un Form desde otro
Publicado: Dom Abr 01, 2007 4:16 pm
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?
Controlar un Form desde otro
Publicado: Lun Abr 02, 2007 10:12 am
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?
>
>
Controlar un Form desde otro
Publicado: Lun Abr 02, 2007 12:08 pm
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
Controlar un Form desde otro
Publicado: Lun Abr 02, 2007 2:19 pm
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
Controlar un Form desde otro
Publicado: Lun Abr 02, 2007 2:45 pm
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.
Controlar un Form desde otro
Publicado: Lun Abr 02, 2007 3:15 pm
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
Controlar un Form desde otro
Publicado: Lun Abr 02, 2007 3:25 pm
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
Controlar un Form desde otro
Publicado: Lun Abr 02, 2007 3:35 pm
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
Controlar un Form desde otro
Publicado: Lun Abr 02, 2007 4:21 pm
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