Problemas Con La Colección Me.Controls


Objetivo: Problemas Con La Colección Me.Controls
Tengo la siguiente jerarquía de objetos:
formulario A
workspaces
formulario B

Suponiendo que el nombre del formulario b fuese formub, si coloco este código en un evento de formulario A:

dim f as object

f=ME.Controls["formub"]



f siempre es NULL

Sin embargo si el código es:

dim f as object
for each f in ME.Controls
if f.Name="formub" then
break
endif
next



f es una referencia a formub

El tema me tiene perplejo. ¿Es una peculiaridad de la clase workspaces? ¿ME.Controls no es realmente una colección? ¿Alguien sabe algo de esto? ¿A qué huelen las nubes?

Gracias.

Perfil MP  
Objetivo: Re: Problemas Con La Colección Me.Controls
Jejeje, acabo de responder a un novato que se mire "cómo hacer preguntas inteligentes" para obtener respuestas y yo no soy capaz de que nadie me conteste... Nunca acaba uno de aprender...

Perfil MP  
Objetivo: Re: Problemas Con La Colección Me.Controls
No te desanimes así!!! Puede (como es mi caso) que no podamos ayudarte porque sencillamente no conocemos la respuesta... Y en dicha circunstancia es mejor guardar silencio... silencio que rompo para hacer esta aclaración...

Ciertamente raro lo que preguntas...

Nunca he tenido esa situación... pero la collection que mencionas, va agregando automáticamente los objetos dentro de ella a medida que los creas (pregunto porque en código no se ve que los agregues a la misma)...

Perfil MP  
Objetivo: Re: Problemas Con La Colección Me.Controls
No, el código es un ejemplo, no el código real (que es demasiado largo para ponerlo aquí). Sin embargo lo he depurado cientos de veces y no hay manera, me.controls contiene el elemento que busco, pero no le vale la referencia...

Perfil MP  
Objetivo: Re: Problemas Con La Colección Me.Controls
Hola a todos

Digo lo mismo que santijav, nunca he usado el control workspaces, por eso no me he aventurado a contestar.
Sin embargo, aunque no está muy claro el planteamiento inicial, entiendo que en un formulario padre tienes un contenedor workspace, el cual a su vez es el padre de los formularios que contiene.

A mi modo de ver, ME, en este caso es parent del workspace y a su vez "abuelo" de los formularios del workspace. Por lo que desde Me.controls no puedes acceder directamente a los formularios del workspaces, que supongo estarán en otra colección más profunda, su propia colección.

|_ Formulario A
!__ Workspace
|_ formB
|_ formC
|_ formN


De este modo se me ocurre, esta podría ser la forma de acceder:

dim f as object

f=ME.Controls["Workspace1"]["formB"]



No me he dignado siquiera a probarlo, es un poco tirarme a la piscina sin flotador, jeje...

[EDITO]

He visto que en realidad la forma de acceder a la lista de ventanas dentro del workspace es mediante su propiedad .children, que devuelve un array de Objetos. Así que posiblemente la notación f=ME.Controls["Workspace1"][indice] pueda funciionar.

http://gambasdoc.org/help/comp/gb.form.mdi/workspace/children

Saludos

última edición por jguardon el Viernes, 22 Julio 2011, 18:40; editado 1 vez
Perfil MP  
Objetivo: Re: Problemas Con La Colección Me.Controls
Efectivamente, Jesús, Se puede alcanzar a formub a través de los children del workspace... pero si haces un testeo a la colección me.controls:

dim c as control
for each c in me.controls
print C.Name
next

Aparecen sin problemas Formb y formc pletóricos de vida y salud.

Por eso, la segunda opción que planteo en el post:

dim f as object
for each f in ME.Controls
if f.Name="formub" then
break
endif
next

Funciona perfectamente, lo cual no entiendo...

última edición por shordi el Viernes, 22 Julio 2011, 19:51; editado 1 vez
Perfil MP  
Objetivo: Re: Problemas Con La Colección Me.Controls
Es una cuestión que merece la pena preguntar a "Benito" directamente, a través de la lista.

Saludos

Perfil MP  
Objetivo: Re: Problemas Con La Colección Me.Controls
Citar:

El tema me tiene perplejo. ¿Es una peculiaridad de la clase workspaces?

Me parece que no, sino que es un problema en la implementación del acceso a la colección Controls de Form: durante la enumeración se itera sobre el conjunto de todos los controles incluidos los "hijos", pero al recuperar sus elementos mediante claves no.

Citar:

¿Alguien sabe algo de esto?

Benoit seguro que sí.

Citar:

¿A qué huelen las nubes?

Bueno, ésta creo que te la puedo responder ya que varias veces pude estar en la montaña mientras pasaban las nubes y... huele a nube

En realidad, recuerdo que en esos momentos sentía un leve frío húmedo y un tenue aroma que no sé cómo describir, pero que no es propio de la nube sino que es como cuando llueve en el campo y "se siente el olor a lluvia" o mejor dicho a la tierra mojada.

Saludos.

PD. El acceso a los controles contenidos en el Workspace se puede hacer mediante Controls así:

DIM f AS Object

f = Me.Controls["Workspace1"] ' se realiza el casting a Object
f = f.Children[0] 'Obtiene el formulario incrustado en el Workspace

'También se podría hacer:
f = f.Children[0].Children[Indice] ' para acceder al control que corresponde a Indice contenido en el formulario incrustado en el Workspace

'no se puede acceder directamente porque Controls devuelve el tipo "Control" que no tiene definida la propiedad Children

ME.Controls["Workspace1"].Children[0] ' daría error



última edición por fabianfv el Sabado, 23 Julio 2011, 03:20; editado 1 vez
Objetivo: Re: Problemas Con La Colección Me.Controls
je, je,je, lo que son las referencias culturales eso de que "a qué huelen las nubes" es una pregunta idiota que hacían aquí en españa en un anuncio de compresas Evax... y que dio lugar a toda una subcultura de bromitas machistas....

Perfil MP  

Página 1 de 1


  
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

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.4383s (PHP: -77% SQL: 177%)
Consultas SQL: 48 - Debug off - GZIP Activado