De referencias

05/08/2004 - 17:56 por AJPB | Informe spam
A ver esto es un poco complejo de explicar:

Tengo un control desarrolado por mi (MiControl) que
imprime el nombre de un tipo de componente (MiComponente)
seteado en una de sus propiedades.

Lo estoy haciendo de la siguiente manera, en el codigo de
MiControl agregue una referencia a MiComponente, y una
propiedad de tipo MiComponente

Property Componente as MiComponente
Set(Value as MiComponente)
nValue = Value
End set
End Property

Luego digo

para imprimir el nombre:

msgBox(nValue.Name)

Luego creo un Proyecto donde tengo agrego una referencia a
MiControl y otra a MiComponente, asi que MiComponente esta
referenciado en el proyecto y ademas dentro de cada
control MiControl

Lo que quiero es eliminar la referencia a MiComponente
dentro de MiControl, y de alguna forma imprimir el nombre,
sin tener que hacer un recorrido entre todos los
componentes del contenedor

For each Componente in xxxx.Container
if Component.GetType.ToString = "MiComponente" then
msgbbox(Componente.Name)
end if
Next

Eso no me sirve, tengo 200 controles MiControl en el form
por lo que eso se ejecutaria 200*200 veces, busco algo
directo, como el primer metodo pero sin usar la referencia.

Gracias in advance y disculpen lo extenso

AJPB

Preguntas similare

Leer las respuestas

#1 Eduardo A. Morcillo [MS MVP VB]
05/08/2004 - 19:28 | Informe spam
La verdad es que no entiendo lo que quieres lograr. Si tienes x cantidad de
controles y quieres imprimir el nombre de esos controles no hay otra forma
mas que recorrer todos esos controles e imprimir el nombre de cada uno.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
Respuesta Responder a este mensaje
#2 AJPB
05/08/2004 - 20:56 | Informe spam
Si, trate de explicarme lo mejor que pude, y en verdad no
trato de imprimir nombres fue solo un ejemplo, lo que
tengo son tres controles y un componente que es quien
maneja a los otros tres, es decir se encarga de invocar
ciertos metodos de esos controles. Para eso, los tres
controles se atachan al manejador, se meten en un arreglo
(ArrayDeControles) dentro de este, y luego el manejador
recorre su arreglo y comienza a ejecutar los metodos de
los controles.

Codigo del manejador:

Me.ArrayDeControles(index).Metodo

Very nice

Mi problema esta cuando estoy "atachando" los controles al
manejador. Mis controles tienen una propiedad con el
nombre del manejador al que se deben atachar, entonces
hacen un recorrido por todo el form buscando controles de
tipo "manejador" y luego comparan el nombre de este con el
que tienen en la propiedad, si es igual se meten en el
arreglo ArrayDeControles.

For Each Control in Form.Controls

If Control.GetType.ToString = "Manejador" then

Control.Atachar(me)

End if

Next

Funciona perfecto, el detalle es que tengo hasta 200
controles de estos en mi form, y significa que 200 de
ellos deben hacer 200 iteraciones, por exigencias tecnicas
eso no me sirve, tarda como 5 segundos!

La solucion fue cambiar la propiedad de mis controles
donde se coloca el nombre del manejador por una propiedad
tipo Manejador, y ahora es como la propiedad ImageList de
un Toolbar, puedo seleccionar el manejador que usara cada
control de una lista de manejadores, con eso me ahorro
iterar y los 5 segundos pasan a ser milisegundos.

Property EsteManejador as Manejador

me.EsteManejador.Atachar(me)

Ahora mi problema es que cada vez que modifico y recompilo
el manejador, debo recompilar tambien los controles pues
me da un error al no ser igual las versiones del manejador
en el form, y el manejador en los controles.

Manejador referenciado en el Form (Version Nueva 1.2)

Manejador referenciado en los Controles ( Version Vieja
1.1 )


La verdad es que no entiendo lo que quieres lograr. Si


tienes x cantidad de
controles y quieres imprimir el nombre de esos controles


no hay otra forma
mas que recorrer todos esos controles e imprimir el


nombre de cada uno.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo


.

Respuesta Responder a este mensaje
#3 Eduardo A. Morcillo [MS MVP VB]
06/08/2004 - 01:37 | Informe spam
Ahora mi problema es que cada vez que modifico y recompilo
el manejador, debo recompilar tambien los controles pues
me da un error al no ser igual las versiones del manejador
en el form, y el manejador en los controles.



Para evitar eso coloca todos los proyectos en una misma solucion y
referencia los proyectos en lugar de las DLLs. De esta forma no tendras que
preocuparte por las versiones ya que el IDE recompilara segun sea necesario.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida