Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Is it possible to use a variable value in .ControlName?
Message
 
À
26/11/2002 07:10:02
Hilmar Zonneveld
Independent Consultant
Cochabamba, Bolivie
Information générale
Forum:
Visual FoxPro
Catégorie:
Programmation Orientée Object
Divers
Thread ID:
00726887
Message ID:
00726942
Vues:
17
Without macro substitution...
for FieldNum = 1 to 48
  STORE FieldNum TO ("ThisForm.Text" + trans(FieldNum)+".Value")
next
MartinJ

>>Hi all.
>>I have a form with 47 fields
>>I have a loop that performs some calculations 47 times and need to display the results in every one of the fields sequentially.
>>Is there some way to substitute the "THISFORM.ObjectName" with a variable that increases +1 in each pass?
>>My text fields are named Text1 through Text47.
>>So I tried something like this (abreviated here):
>>
>>xCount=1
>>DO WHILE xCount<48
>>xText="Text"+(alltrim(str(xcount)))
>>THISFORM.xText.value=xCount
>>xCount=xCount+1
>>ENDDO
>>
>>I got (obviously) an error message when reaching the THISFORM line about not finding the xText element.
>>
>>Is there a possible way around this or will I have to repeat the code for each one of the fields?
>>TIA for your time
>>
>>Ulises
>
>You can use macro substitution.
>
>
>for FieldNum = 1 to 48
>  FieldName = "Text" + trans(FieldNum)
>  ThisForm.&FieldName..Value = FieldNum
>next
>
>* or:
>
>for FieldNum = 1 to 48
>  FieldName = "Text" + trans(FieldNum)
>  Command = "ThisForm." + FieldName + ".Value = " + FieldNum
>  &Command
>next
>
>
>Note also how the FOR saves you some coding in the loop. trans() requires VFP 6 or later (equivalent to alltrim(str()), if the argument is numeric)).
>
>HTH, Hilmar.
"Navision is evil that needs to be erazed... to the ground"

Jabber: gorila@dione.zcu.cz
Jabber? Jabbim
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform