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
--
In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Averiguar los controles que hay en un formulario
Averiguar los controles que hay en un formulario
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
--
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
--