Welcome To The Home Of The Visual FoxPro Experts  
home. signup. forum. archives. search. google. articles. downloads. faq. members. weblogs. file info. rss.
 From: Bernard Bout
  Where is Bernard Bout?
 Brisbane
 Australia
 Bernard Bout
 To: Mike Yearwood
  Where is Mike Yearwood?
 Toronto
 Canada
 Mike Yearwood
 Tags
Subject: RE: Loop through and rename labels
Thread ID: 416077 Message ID: 416231 # Views: 36 # Ratings: 2
Version: Visual FoxPro 9 SP2 Category: Forms
Date: Wednesday, December 24, 2014 4:19:23 AM         
   


> >
> > Thank you, Ali. Okay, so the Transform() function converts the number to a character data type. Cool. I've used the macro expansion before, but didn't remember the two dots.
> >
> > Actually, the below IS working. Okay, the reason for the one dot is to end the macro expansion, and if a property follows, there will need to be two dots, one to end the macro and the other to separate it as a property. I tried this on Saturday night and it worked, but I forgot to update the notes which I just wiped out Ali, so it works just fine and thank you so much for the example!
> >
> > * This does work.
> > ThisForm.lblTruck&y.Driver1Shift1.Caption
> > 

> > Cecil Champenois, Jr.
>
> Hi Cecil
>
> This is one of those times where & should send up red flags. It's slow as all get out. The better way is:
>
>
For x = 1 to 10
>    store 'This is label'+alltrim(str(m.x)) to ("thisform.lblTruckNumber" + alltrim(str(m.x)) + ".caption")
> endfor 
> 

>
>
>
> Mike Yearwood
> Microsoft MVP Visual FoxPro 2008, 2009
> We have enough youth. We need a fountain of smart!
> There may be many ways to skin a cat, but there are very few right ways to do it.

I agree. I would rather, and in fact always do, use the object itself.
The &.. is very confusing and not very good to look at as well.

For x = 1 to nLabels
    oLab = EVAL("Thisform.label"+PADL(x,"0",2))
    * now you can do anything with the object in oLab
    With oLab as Label
        .Caption = "Whatever"
        .AnyProperty = AnyValue
        .AnyMethod()   && call a method on the label etc.
    ENDWITH
ENDFOR


I used PADL() because I wanted the labels to be 01, 02, ....10, 11...


Bernard

** If you see someone without a smile, give em one of yours **
My Blog

ENTIRE THREAD

Loop through and rename labels Posted by Cecil Champenois @ 12/21/2014 12:23:21 AM
RE: Loop through and rename labels Posted by Ali Koumaiha @ 12/21/2014 4:02:23 AM
RE: Loop through and rename labels Posted by Cecil Champenois @ 12/21/2014 4:31:08 AM
RE: Loop through and rename labels Posted by Stefan Wuebbe @ 12/21/2014 7:09:36 AM
RE: Loop through and rename labels Posted by Ali Koumaiha @ 12/21/2014 12:34:19 PM
RE: Loop through and rename labels Posted by Cecil Champenois @ 12/21/2014 4:18:53 PM
RE: Loop through and rename labels Posted by Mike Yearwood @ 12/22/2014 3:35:51 PM
RE: Loop through and rename labels Posted by Cecil Champenois @ 12/22/2014 4:58:32 PM
RE: Loop through and rename labels Posted by Victor Espina @ 12/23/2014 1:05:58 AM
RE: Loop through and rename labels Posted by Bernard Bout @ 12/24/2014 4:19:23 AM