FoxPro/Visual FoxPro - consultar nombre de controles en tiempo de ejecucion

   
Vista:

consultar nombre de controles en tiempo de ejecucion

Publicado por jessica (20 intervenciones) el 25/08/2014 17:12:40
hola

es posible hacer un proceso que al ejecutarlo pueda consultar los nombres de los controles de otro formulario en tiempo de ejecución?

mi problema es que necesito saber el nombre de un control tipo textbox en un formulario en tiempo de ejecucion.

gracias de antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

consultar nombre de controles en tiempo de ejecucion

Publicado por Fidel José (558 intervenciones) el 25/08/2014 23:47:24
Es raro lo que preguntas, pero si, se puede.
Supongamos que tenemos dos formularios, un principal frmA y otro secundario frmB

Al llamar al frmB desde el frmA;
1
2
3
4
5
6
7
8
DO FORM frmB with thisform
 
* Init del frmB
LPARAMETERS toForm
Addproperty(thisform,"Oform",toForm)
* Ahora, con Thisform.oform, desde cualquier lado de frmB, puedes consultar el valor de un control o una propiedad del frmA
lcValor = Thisform.oform.TExt1.Value
Thisform.oform.Text2.Value= lcValor + otroValor

Si quieres saber cómo se llaman los textbox del frmA
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
IF VARTYPE(Thisform.oform)#"O"            && se cerró el formulario frmA
         RETURN
ENDIF
LOCAL oControl, lcNameControl, lcValorBuscado
lcValorBuscado=null
FOR EACH oControl in thisform.oform.Controls
         if oControl.BaseClass="Textbox"        && escribir en Proper()
                   lcNameControl=oControl.Name
                   if Lower(lcnameControl)=="txtcontrolbuscado"
                              lcValorBuscado=oControl.Value
                  endif
         endif
ENDFOR
if isnull(lcValorBuscado)
        Messagebox("No se encontró un Textbox  TxtControlBuscado")
else
       Messagebox("el valor es "+lcValorBuscado)
endif

Si ambos formularios se convocan con independencia (desde el menú, por ejemplo) lo más seguro es implementar, por lo menos el frmA con un Name.
1
2
Addproperty(_Screen,"goFrma",null)
DO FORM frmA NAME _screen.goFrmA

Ahora vale todo lo anterior, pero
1
2
3
4
5
IF VARTYPE(_screen.goFormA)="O"
        FOR EACH oControl IN _Screen.goFrmaA.Controls
              * ETC
        ENDFOR
ENDIF
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

consultar nombre de controles en tiempo de ejecucion

Publicado por jessica (20 intervenciones) el 26/08/2014 14:42:54
gracias fidel jose,

no resuelve mi problema, pero me diste la orientación y con esto llegare a lo que necesito.

complementa lo que venia investigando...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar