Macro sustitucion

14/03/2006 - 21:50 por Juan Carlos Flores | Informe spam
necesito crear un procedimeinto que permita algo como al macro sustitucion.



' Codigo escrito en un form de una libreria de clases para se usado en
forms que heredados.
Sub ProcesoImpresion (ByVal GridaImprimir as String)

me. & GridaImprimir & .PrintPreview()

End Sub



me.ProcesoImpresion(GridaImprmir)
' Esto me mandaría a imprmir un grid el cual desconozco su nombre al
momento de crear el codigo en el form base.



Saludos



JCF

Preguntas similare

Leer las respuestas

#1 Eduardo A. Morcillo [MS MVP VB]
15/03/2006 - 03:11 | Informe spam
¿Hay verdadera necesidad de pasar el nombre del control? ¿Por que no pasar
directamente una referencia al control?

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C
Respuesta Responder a este mensaje
#2 Juan Carlos Flores
15/03/2006 - 15:15 | Informe spam
Gracias Eduardo por contestar.

Yo podría pasar referencia del control si tuviese el control a mi
alcance. Tal seria el caso de invocar un procedimiendo que me llene una
grilla por ejemplo.

En este caso es algo diferente.

Tengo un formulario MDI con un boton IMPRIMIR en una toolbar, el cual
debe funcionar para cualquier formChild que tuviese la facultad de
imprimir algo.

Tratando de usar herencia, he creado un form base el cual contiene la
función de imprimir.
En esta funcion de imprimir utilizo el imprimir de un Grid de terceros
que ya trae como imprimirlo.

El asunto es que en mi form base aun no tengo el grid, por lo tanto no
puedo hacer referencia al grid por su nombre. (no pongo el grid, porque
cuando heredo, el control me queda deshabilitado para modificarlo... no
debería no ?). Bueno, entonces podría usar pasar el control por
referencia, pero resulta que en mi form MDI no puedo acceder al control
porque no es parte de los propiedades, controles o metodos que tiene el
namespace windows form que.


Soluciones que veo yo que pudiera poner

1. MAcro Sustitucion (el grid de esos forms, siempre se llamará igual
"GridReporte" en estos casos.) Asi que mandaria ejecutar el metodo con

DirectCast(ActiveMdiChild, IImprimir).Imprimir("GridReporte")


2. Lograr que en al poner el control grid en el form base, pueda
modificarlos en el form que ha heredado. (Este es el que me gusta mas de
todos)


3. Poder crear una interface hacia el control grid. Lo cual me
permitiría alcanzarlo por medio del ActiveMDI del form MDI y mandarlo
por referencia al metodo de imprimir.

DirectCast(ActiveMdiChild, IGridReporte).GridReporte.ShowPrintPreview()

(Pero esta interface tendría que declararla en cada uno de los forms,
vuelvo a lo que no quiero hacer)



Todo esto se puede evitar si a cada uno de los forms le pusiera el
metodo de imprmir, pero son muchos forms... es por eso el uso de la
herencia.

Gracia Eduardo por tu ayuda y gracias a todos los del foro.


JCF



Eduardo A. Morcillo [MS MVP VB] escribió:
¿Hay verdadera necesidad de pasar el nombre del control? ¿Por que no pasar
directamente una referencia al control?

Respuesta Responder a este mensaje
#3 Eduardo A. Morcillo [MS MVP VB]
15/03/2006 - 15:54 | Informe spam
1. MAcro Sustitucion (el grid de esos forms, siempre se llamará igual
"GridReporte" en estos casos.) Asi que mandaria ejecutar el metodo con

DirectCast(ActiveMdiChild, IImprimir).Imprimir("GridReporte")



Esto puedes lograrlo buscando el control en la collecion Controls del
formulario.

2. Lograr que en al poner el control grid en el form base, pueda
modificarlos en el form que ha heredado. (Este es el que me gusta mas
de todos)



Para hacer simplemente deberia declarar el control como Protected para poder
acceder a el desde los formularios heredados.

3. Poder crear una interface hacia el control grid. Lo cual me
permitiría alcanzarlo por medio del ActiveMDI del form MDI y mandarlo
por referencia al metodo de imprimir.



Y esto es casi lo que ya tienes. Como los formularios heredan de una misma
clase con el metodo imprimir, lo que puedes hacer es sobreescribir el metodo
en cada formulario para que realice la funcion de imprimir que corresponda a
ese formulario. En mi opinion, esta es la mejor solucion.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C
Respuesta Responder a este mensaje
#4 Juan Carlos Flores
15/03/2006 - 23:00 | Informe spam
Eduardo A. Morcillo [MS MVP VB] escribió:
1. MAcro Sustitucion (el grid de esos forms, siempre se llamará igual
"GridReporte" en estos casos.) Asi que mandaria ejecutar el metodo con

DirectCast(ActiveMdiChild, IImprimir).Imprimir("GridReporte")



Esto puedes lograrlo buscando el control en la collecion Controls del
formulario.



No se el nombre del formulario, puede ser cualquiera activo. El control
no aparece usando ActiveMDIChild, solo aparecen los PEM's por defecto
del form.



2. Lograr que en al poner el control grid en el form base, pueda
modificarlos en el form que ha heredado. (Este es el que me gusta mas
de todos)



Para hacer simplemente deberia declarar el control como Protected para poder
acceder a el desde los formularios heredados.



Lo hago, sin embargo me sigue apareciendo sin poder modificar en los
forms heredados. Imagino que es correcto hacerlo en la propiedad
Modifiers del control. Igual lo probé con Public y nada.



3. Poder crear una interface hacia el control grid. Lo cual me
permitiría alcanzarlo por medio del ActiveMDI del form MDI y mandarlo
por referencia al metodo de imprimir.



Y esto es casi lo que ya tienes. Como los formularios heredan de una misma
clase con el metodo imprimir, lo que puedes hacer es sobreescribir el metodo
en cada formulario para que realice la funcion de imprimir que corresponda a
ese formulario. En mi opinion, esta es la mejor solucion.



Bueno, dentro del metodo, las lineas son apenas una o 2 maximo 5, la
idea no es ahorrar la escritura de codigo, si no que el form ya venga
listo, no pudeo hacer overides en cada form, me sale mejor ni siquiera
heredar codigo, y hacerlo directamente en cada form, pero son
demasiados, no sería conveniente.


Saludos.


JCF.

Respuesta Responder a este mensaje
#5 Eduardo A. Morcillo [MS MVP VB]
16/03/2006 - 02:31 | Informe spam
No se el nombre del formulario, puede ser cualquiera activo. El
control no aparece usando ActiveMDIChild, solo aparecen los PEM's por
defecto del form.



Pero la coleccion Controls la puedes usar de todos modos.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida