Página 1 de 1

Averiguar los controles que hay en un formulario

Publicado: Mar Jun 02, 2009 10:55 am
por pacoelche
Viendo un ejemplo que hay en las News de hace varios años, estoy intentando averiguar los controles que tiene un formulario.
El código es el que hay más abajo, pero nLen siempre me devuelve 0, aunque el formulario tenga varios controles.
oForm:=TForm():new()
nLen := Len( oForm:aControls )
WITH OBJECT oForm
FOR i := 1 TO nLen
MSGINFO(:aControls:lEnabled)
NEXT
END WITH
¿Qué me falta a este código?
Muchas gracias
Francisco Martí­nez
--

Averiguar los controles que hay en un formulario

Publicado: Mar Jun 02, 2009 11:07 am
por jfgimenez
Paco,
Viendo un ejemplo que hay en las News de hace varios años, estoy intentando averiguar los controles que tiene un formulario.
El código es el que hay más abajo, pero nLen siempre me devuelve 0, aunque el formulario tenga varios controles.
oForm:=TForm():new()
nLen := Len( oForm:aControls )
WITH OBJECT oForm
FOR i := 1 TO nLen
MSGINFO(:aControls:lEnabled)
NEXT
END WITH
¿Qué me falta a este código?
Seguramente el problema es la lí­nea:
oForm := TForm():new()
Con eso, lo que estás instanciando es un objeto de la clase TForm, la orginal de Xailer, que no contiene ningún control. Deberí­as instanciar el formulario que realmente necesites. P.ej.:
oForm := TForm1():New( Application )
En el caso de que estés usando ese código dentro de algún evento del formulario en cuestión, sólo tienes que referenciar el array de controles con ::aControls.
Por cierto, la propiedad aControls de los formularios sólo contiene los controles que son directamente hijos del propio formulario, pero no los que sean hijos de otros controles contenedores. En realidad, cada control contenedor tiene su propio aControls, y por lo tanto hay que utilizar una función recursiva para obtener todos los controles de un formulario.
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
--