llamar a metodos de formularios mdi

29/09/2003 - 20:00 por Oscar Calvo | Informe spam
Hola a todos
tengo un barra de menu en el formulario principal y una serie de formularios
hijos.La barra tiene los botones tipicos de guardar, imprimir etc.quiero que
cuando se pulse sobre "imprimir" se inicie el metodo Frm.imprimir() del
formulario hijo activo en ese momento.La cosa es que no se hacerlo ya que
cuando ejecuto en el formulario principal

Form Frm=FrmPadre.ActiveMdiChild;
Frm.Imprimir();

Cuando hago esto me dice que no es correcto porque no existe el metodo
imprimir() en Frm, cierto porque la propiedad ActiveMdi devuelve una
referencia a form,clase que no tiene ningun metodo imprimir().
Si intento hacer un cast
Form frm=(FrmHijo)FrmPadre.ActiveMdiChild;
Tampoco me deja ya que seria una conversion hacia abajo, ademas esta
solucion tampoco me valdria ya que no se de que clase es exactamente el
formulario activo, solo se que si tiene un metodo imprimir().
Es por esto que no se como enviarle un mensaje al formulario hijo.Podria
redefinir el metodo ActiveMdi() para que devolviera una referencia a una
clase creada por mi llamada FrmBase, hacer que esta clase tuviera el metodo
imprimir() y heredar de ella todos los formularios hijos de la aplicacion,
pero me parece muy lioso ya que no sabria ni como hacer para que ActiveMdi
me devolviera el Form activo.
Tambien me han dicho de hacer una clase estatica con un metodo
imprimir(),guardar() etc.Cada vez que se pulse sobre la barra de menu
deberia llamar a esta clase pasandole el form mdi activo y esta se encarga
de ejecutar el metodo imprimir() correspondiente, pero este diseño me parece
feisimo, no se como lo veis.
Ademas creo que este caso es muy usual, asi que supongo que debe de haber
una solucion muy basica.

Espero haberme explicado bien,
Gracias y un saludo.

Preguntas similare

Leer las respuestas

#1 Millan Andres Sanchez Diaz
29/09/2003 - 21:35 | Informe spam
Te aseguraste de poner tu metodo publico??

Revisa si tu metodo es public o private. Si es private no podras invocarlo
desde otras clases.

Millán Andrés Sánchez Díaz
Business and Technology Consultant
Tels.: (571) 6147862 - 6147983
Fax: (571) 5287076
Cel. : 310-8656566

"Oscar Calvo" wrote in message
news:
Hola a todos
tengo un barra de menu en el formulario principal y una serie de


formularios
hijos.La barra tiene los botones tipicos de guardar, imprimir etc.quiero


que
cuando se pulse sobre "imprimir" se inicie el metodo Frm.imprimir() del
formulario hijo activo en ese momento.La cosa es que no se hacerlo ya que
cuando ejecuto en el formulario principal

Form Frm=FrmPadre.ActiveMdiChild;
Frm.Imprimir();

Cuando hago esto me dice que no es correcto porque no existe el metodo
imprimir() en Frm, cierto porque la propiedad ActiveMdi devuelve una
referencia a form,clase que no tiene ningun metodo imprimir().
Si intento hacer un cast
Form frm=(FrmHijo)FrmPadre.ActiveMdiChild;
Tampoco me deja ya que seria una conversion hacia abajo, ademas esta
solucion tampoco me valdria ya que no se de que clase es exactamente el
formulario activo, solo se que si tiene un metodo imprimir().
Es por esto que no se como enviarle un mensaje al formulario hijo.Podria
redefinir el metodo ActiveMdi() para que devolviera una referencia a una
clase creada por mi llamada FrmBase, hacer que esta clase tuviera el


metodo
imprimir() y heredar de ella todos los formularios hijos de la aplicacion,
pero me parece muy lioso ya que no sabria ni como hacer para que ActiveMdi
me devolviera el Form activo.
Tambien me han dicho de hacer una clase estatica con un metodo
imprimir(),guardar() etc.Cada vez que se pulse sobre la barra de menu
deberia llamar a esta clase pasandole el form mdi activo y esta se encarga
de ejecutar el metodo imprimir() correspondiente, pero este diseño me


parece
feisimo, no se como lo veis.
Ademas creo que este caso es muy usual, asi que supongo que debe de haber
una solucion muy basica.

Espero haberme explicado bien,
Gracias y un saludo.



Respuesta Responder a este mensaje
#2 Oscar Calvo
30/09/2003 - 00:02 | Informe spam
si lo he mirado.De todas formas el codigo ya no compila, me da el mencionado
error de que la clase Form no contiene el metodo imprimir();

"Millan Andres Sanchez Diaz" escribió en el mensaje
news:
Te aseguraste de poner tu metodo publico??

Revisa si tu metodo es public o private. Si es private no podras


invocarlo
desde otras clases.

Millán Andrés Sánchez Díaz
Business and Technology Consultant
Tels.: (571) 6147862 - 6147983
Fax: (571) 5287076
Cel. : 310-8656566

"Oscar Calvo" wrote in message
news:
> Hola a todos
> tengo un barra de menu en el formulario principal y una serie de
formularios
> hijos.La barra tiene los botones tipicos de guardar, imprimir etc.quiero
que
> cuando se pulse sobre "imprimir" se inicie el metodo Frm.imprimir() del
> formulario hijo activo en ese momento.La cosa es que no se hacerlo ya


que
> cuando ejecuto en el formulario principal
>
> Form Frm=FrmPadre.ActiveMdiChild;
> Frm.Imprimir();
>
> Cuando hago esto me dice que no es correcto porque no existe el metodo
> imprimir() en Frm, cierto porque la propiedad ActiveMdi devuelve una
> referencia a form,clase que no tiene ningun metodo imprimir().
> Si intento hacer un cast
> Form frm=(FrmHijo)FrmPadre.ActiveMdiChild;
> Tampoco me deja ya que seria una conversion hacia abajo, ademas esta
> solucion tampoco me valdria ya que no se de que clase es exactamente el
> formulario activo, solo se que si tiene un metodo imprimir().
> Es por esto que no se como enviarle un mensaje al formulario hijo.Podria
> redefinir el metodo ActiveMdi() para que devolviera una referencia a una
> clase creada por mi llamada FrmBase, hacer que esta clase tuviera el
metodo
> imprimir() y heredar de ella todos los formularios hijos de la


aplicacion,
> pero me parece muy lioso ya que no sabria ni como hacer para que


ActiveMdi
> me devolviera el Form activo.
> Tambien me han dicho de hacer una clase estatica con un metodo
> imprimir(),guardar() etc.Cada vez que se pulse sobre la barra de menu
> deberia llamar a esta clase pasandole el form mdi activo y esta se


encarga
> de ejecutar el metodo imprimir() correspondiente, pero este diseño me
parece
> feisimo, no se como lo veis.
> Ademas creo que este caso es muy usual, asi que supongo que debe de


haber
> una solucion muy basica.
>
> Espero haberme explicado bien,
> Gracias y un saludo.
>
>
>


Respuesta Responder a este mensaje
#3 Oscar Calvo
30/09/2003 - 00:17 | Informe spam
problema medio resuelto
Resulta que si puedo hacer la conversion hacia bajo, pero siempre que el
sepa el formulario que esta activo, es decir, tengo que hacer un monton de
comprobaciones de tipo
if (this.ActiveMdiChild.name=="frm1")
{
frm1 formulario=(frm1) this.ActiveMdiChild;
formulario.imprimir();
}
Con lo cual esto ademas de poco elegante es muy costoso de mantener
Alguien tiene alguna otra solucion?
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida