Alguna forma de recorrer controles

618 views
Skip to first unread message

Edward Cifuentes

unread,
Oct 27, 2013, 5:48:05 PM10/27/13
to publice...@googlegroups.com
Alguna forma de recorrer controles sin tener que contar los controles
del formulario

digamos que tengo container1, container2, container3
y dependiento de la condicionar lo que esta lleno en cada container


thisform.container1.txtvalor.value=8999

por la atencion le quedo agradecido y por sus sugerencias



Fernando D. Bozzo

unread,
Oct 27, 2013, 6:04:29 PM10/27/13
to publice...@googlegroups.com
FOR EACH loControl IN Container.CONTROLS
   *-- Aquó lo que quieras hacer con cada control (loControl)
ENDFOR

Edward Cifuentes

unread,
Oct 27, 2013, 6:16:56 PM10/27/13
to publice...@googlegroups.com
La idea es que pueda acceder a ellos con el nombre container1, como sucede en visual basic que cuando cuando copias y pegas  un control le agrega un indice, me gustaría saber si hay alguna forma de concatenar la palabra  thisform.container&indice.value  en vfp  ,ya que  en visual basic creo que era  form1.picture(1).image  o form1.picture(i).image 

Fernando D. Bozzo

unread,
Oct 27, 2013, 6:20:25 PM10/27/13
to publice...@googlegroups.com
Hola Edward, no me queda claro cuál es el uso que le querés dar a esos nombres. ¿Qué querés hacer exactamente, y porqué no te sirven las referencias a los controles?

Edward Cifuentes

unread,
Oct 27, 2013, 6:22:52 PM10/27/13
to publice...@googlegroups.com
Por que a medida que recorro un vector que tengo quiero que vaya llenando la info en cada container pero en algunos casos los container quedaran vacíos. 

Fernando D. Bozzo

unread,
Oct 27, 2013, 6:31:28 PM10/27/13
to publice...@googlegroups.com
Entonces es casi lo mismo que te puse antes, pero agregando una variable:

LPARAMETERS toContenedor
CLEAR
FOR EACH loControl IN toContenedor.CONTROLS
   ? "THISFORM." + toContenedor.NAME + "." + loControl.NAME
ENDFOR

Poné esto en una función "MostrarControles" y llamala con MostrarControles(Container1) pasándole la referencia del contenedor que te interese.

Edward Cifuentes

unread,
Oct 27, 2013, 6:43:51 PM10/27/13
to publice...@googlegroups.com
OK  GRACIAS 

Miguel Canchas

unread,
Oct 28, 2013, 12:38:20 PM10/28/13
to publice...@googlegroups.com

FOR i = 1 TO 5

     

      oContainer = "Thisform.container" + ALLTRIM(STR(i))+".value "

      &oContainer = "EJEMPLOS..."

     

ENDFOR

 

MK

Fidel Charny

unread,
Oct 29, 2013, 7:05:26 AM10/29/13
to publice...@googlegroups.com, mcan...@ximesa.com
 Thisform.Container1.Value="EJEMPLOS..."      ??

Miguel Canchas

unread,
Oct 29, 2013, 9:08:15 AM10/29/13
to publice...@googlegroups.com

FOR i = 1 TO 5

     

      oContainer = "Thisform.container" + ALLTRIM(STR(i))+".value "

      &oContainer = 8999

     

ENDFOR

Lewis López

unread,
Oct 29, 2013, 9:10:58 AM10/29/13
to publice...@googlegroups.com
FOR EACH ... ENDFOR, en ala ayuda de fox, con esto puedes recorrer los controles.


Saludos.


Jesucristo es el verdadero Dios y la vida eterna. 1 Juan 5:20
Lewis Oswaldo López Gómez 
Cel:      311 665 0342
Skipe:  asaie2010

Puerto Libertador - Córdoba-Colombia




Subject: RE: [vfp] Re: Alguna forma de recorrer controles
Date: Tue, 29 Oct 2013 08:08:15 -0500
From: mcan...@ximesa.com
To: publice...@googlegroups.com

Fidel Charny

unread,
Oct 29, 2013, 10:07:33 AM10/29/13
to publice...@googlegroups.com, mcan...@ximesa.com
Miguel:
1) No entiendo la idea de Edgar, no sé a qué apunta.
2) El problema no es qué valor, sino la propiedad "Value" para el container.
For i = 1 to 5
         lcContainer="Thisform.Container" + Alltrim(str(i))
         if pemstatus(thisform,lcContainer,5)
               oContainer=&lcContainer
               oContainer.Txtvalor="Ejemplo "+transform(8999)
         endif
endfor

Pero Edgar dijo que no quería contar los container, por lo que este For i=1 to 5 no se aplica.
Por lo que podemos recorrer el form
FOR EACH oControl in thisform.Controls
       if oControl.BaseClass=="Container"
              for each oCont in ocontrol.Controls
                    if oCont.BaseClass=="Textbox"
                            ? oCon.Value     && o lo que fuera
                    endif
              endfor
       endif
endfor

Fidel

Miguel Canchas

unread,
Oct 29, 2013, 10:11:47 AM10/29/13
to publice...@googlegroups.com

Exacto,  se aplica mas a tu segundo ejemplo…

 

MK

Reply all
Reply to author
Forward
0 new messages