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.
 

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.



Preguntas similares