JavaScript y Layout


([N4] mdelgado) #1

Buenas a todos,

Tengo el siguiente código adjunto que lanzo en un evento de un formulario. El objetivo del mismo es recorrer los objetos de un formulario para cambiarles la propiedad Enabled.El código muere siempre en la línea 10 en el momento en que oControl es un Layout. No sé que puedo hacer porque si el objeto no es Layout funciona perfectamente.

 

¿Se os ocurre qué peude ser?

Saludos,

Miguel D.


([N4] mdelgado) #2

código



([N1] Pepeto) #3

Aqui tienes la lista de tipos de control

http://velneo.es/info_v7_712_es/velneo_vdevelop_v7/scripts/clases/vmainwindow

modifica el script para controlar que el control este en la lista, o evitar que compruebe los layouts

un saludo

José Luis

 


([N1] wikan) #4

@mdelgado, usa la sentencia try catch para controlar el error.

A mi me paso lo mismo


([N4] mdelgado) #5

@Manuel, muchas gracias.

El problema es que oControl como digo es un objeto, pero realmente no tiene nada dentro. No es posible controlarlo preguntando si “ES UN OBJETO”. La forma de hacerlo sin Try/Cash es la que os paso. Llevo 2 días con esto y la solución no podía ser más fácil.



([N1] wikan) #6

Pues si, más limpio se te queda, me alegro


([N4] mdelgado) #7

@Manuel, Sábes cómo saber desde el código que he pasado qué tipo de Widget se trata?. He mirado y no tienen la propiedad type.

Vayan las gracias por adelantado!!!

 


([N1] wikan) #8

@mdelgado

en este post te respondi, es la clase VMainWindows

http://velneo.es/foros/topic/javascript-tipo-de-objeto/


([N4] mdelgado) #9

Gracias @Manuel,

 

He hablado con Velneo y no está implementado a el Tipo en la clase Widget a día de hoy. por tanto, no hay forma de saber dentro de un bucle de objetos el tipo de cada unod e ellos.

Espero que os sirva para no perder el día como me ha pasado a mi.

 

Saludos,

Miguel D.

 


([N1] wikan) #10

@mdelgado,

según la documentación, si le pasas el objeto a la función
widgetType
de la clase VMainWindow devuelve un número que equivale al tipo de control-widget

En la misma página de la clase VMainWindow hay una serie de enum donde se describe los controles que es posible que contenga un formulario.

Es decir, aquí hay alguien que se equivoca, o la documentación o ese soporte no es correcto.

Ahora no puedo probarlo, pero si añades a tu código esto

alert( theMainWindow.widgetType( oControl ) );

Fijate en los número que te vaya devolviendo y los comparas con la tabla de enum de la clase y con la lista de controles del formulario que estes analizando. Debería coincidir en los tipos


([N1] wikan) #11

@mdelgado

lo he probado y devuelve bien los números de los tipos.

Haciendo uso del if ( oControl) evitas pasar por los layouts, pero labels, edits, botones, separadores, los ha pillado perfecto.


([N4] innovadb) #12

Una pregunta por curiosidad.

¿Para deshabilitar todos los controles no es mejor deshabilitar directamente el formulario?

O incluso poner una caja de grupo que coja todos los controles y desactivarla cuando se quiera.

Insisto en que es solo curiosidad y tal vez tengáis otros motivos para hacer el bucle.

Un saludo


([N4] mdelgado) #13

@Manuel, tienes toda la razón.

Me han dado después otra llamada ofreciéndome la misma solución que tu planteas. Al parecer tenían un problema de documentación y por eso me dieron la solución inicial errónea.

 

@Innova, la solución duque plantea tiene el problema que sí desquilatas un formulario o una caja directamente y dentro de esta hay una rejilla Ono se puede utilizar el scroll.

 

muchas gracias a a todos por contestar y por vuestra ayuda. Subiré la función cuando lo tenga acabado para uso de la comunidad.