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.

Averiguar los controles que hay en un formulario

Foro público de Xailer en español
Responder
pacoelche
Mensajes: 141
Registrado: Mar Jul 11, 2006 10:32 am

Averiguar los controles que hay en un formulario

Mensaje 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
--
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Averiguar los controles que hay en un formulario

Mensaje 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
--
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Responder