Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Referencias, Colecciones, Contenedores Y La Madre Que Los Parió
Autor Mensaje
Responder citando   Descargar mensaje 
Mensaje Referencias, Colecciones, Contenedores Y La Madre Que Los Parió 
 
(Vale, Jesús, me merezco un capón por el título, pero no se me ocurre qué poner.)

Cuando se empiezan a manejar cosas complicadas -a saber: formularios que contienen contenedores que contienen formularios que, a su vez contienen otros formularios y cosas así- te encuentras con que gambas, como que "se pierde" a la hora de saber qué es qué. Valga un ejemplo:

Tenemos un formulario que tiene un tabstrip. El tabstrip tiene una pestaña que contiene un formulario. Si queremos cerrar éste último formulario la cadena de referencias sería:

miformulario.mitabstrip[n].children[0].close()

Nosotros "sabemos" que mitabstrip[n].children[0] es un formulario, y que tiene el evento close(), pero la instrucción de arriba nos provoca un error en tiempo de ejecución:

"Unknown event close in class container"

¿Qué hacer? Pues muy ufanos pensamos: "creamos una referencia" y hacemos lo siguiente:
Dim f as form
f=miformulario.mitabstrip[n].children[0]
f.close()
 

y ¡Oh maravilla, funciona!... o no.
Dependiendo de qué clase referenciemos y de qué método invoquemos puede que nos encontremos con un mensaje que, al llegar a la línea
f=miformulario.mitabstrip[n].children[0]

Se genera en tiempo de ejecución un mensaje que dice algo así como que se esperaba un Form y lo que ha encontrado es una función... o un container o vaya usted a saber qué.
Pero nosotros "sabemos" que es un Form...¿Qué hacemos entonces? Pues le dejamos que el intérprete se las apañe cambiando la línea

por

Entonces funcionará siempre.
La explicación real no la sé. Podría aventurar alguna: que el árbol de referencias en tiempo de compilación no alcanza a tal o cual profundidad, que las instancias que se crean en tiempo de ejecución no son referenciadas igual que las que se generan en tiempo de diseño... etc. etc.
Pero el tema es: No olvidéis los viejos y queridos object. Según gambasdoc son un tipo de referencia más lentos de uso en ejecución, pero parecen ser la única salida para según qué situaciones.

Perdón por el ladrillo.
 



 
última edición por shordi el Miercoles, 26 Febrero 2014, 18:30; editado 1 vez 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes ¿Cómo Depurar Las Referencias Circulares? shordi General 6 Jueves, 29 Octobre 2009, 21:24 Ver último mensaje
maikl
No hay nuevos mensajes Referencias Circulares ahtonio General 2 Miercoles, 30 Diciembre 2009, 13:12 Ver último mensaje
ahtonio
No hay nuevos mensajes Array De Colecciones Shell General 5 Sabado, 30 Septiembre 2017, 11:49 Ver último mensaje
shordi
No hay nuevos mensajes POO. Referencias. Reducir Código En Formu... Shell General 3 Lunes, 04 Diciembre 2017, 21:06 Ver último mensaje
jsbsan
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron