rename field after insertion
Cubist at aol.com
Cubist at aol.com
Tue Jul 13 04:28:55 EDT 2004
sez bob at armbase.com:
> I have a Textfield (TxA1) on a card in one stack (a template stack)
> and I have a button on this card that inserts it into a card in
> another stack "working stack". If I click on the button again it
> inserts a Textfield again. OK it is supposed to do this.
>
> However, "both" the textfields are called TxA1. I want to name the
> first field TxA1, but I want the second textfield to be called TxA2
> and if there was a third click then the third field to be TxA3.
>
> So the button click on stack template would have to read textfields in
> the working stack and if they exist, determine the largest number
> after TxA in the name and insert a textfield with TxA? +1
>
> Any ideas on how this can be done?
It's worth noting that all fields have a number, and whenever you create a
field, including by copying/pasting or otherwise duplicating an existing
field, the newly-created field will be the highest-numbered one. THis means you
always know exactly which field is the newly-created one, and you can manipulate
that puppy any which way you like. Here is one way you might do what you need:
on NextFieldPlease
copy field "TxA1" to this card
put 0 into Kounter
repeat # this only *looks* like an infinite loop, honestly!
add 1 to Kounter
if there is not a field ("TxA" & Kounter) then exit repeat # see?
end repeat
set the name of field (the number of fields on this card) to ("TxA" &
Kounter)
#also, whatever other alterations you might want to inflict on this field
end repeat
This code will count up thru the all the "TxA1", "TxA2, "TxA{n}" fields,
and give the newly-created field the lowest-numbered "TxA{n}" name that *isn't*
currently in use. If this isn't what you want, here's another possibility for
the loop:
put 0 into HFN # HighestFieldNumber
repeat with K1 = 1 to (the number of fields on this card) - 1
put the short name of field K1 into Fred
if char 1 to 3 of Fred <> "TxA" then next repeat # this field's name is
wrong
delete char 1 to 3 of Fred
if Fred is not an integer then next repeat # another wrong name
put max (Fred, HFN) into HFN
end repeat
set the name of field (the number of fields on this card) to ("TxA" & HFN +
1)
This one will automatically assign a "TxA{n}" name which is exactly 1
higher than the highest previously-existing "TxA{n}" name.
Hope this helps...
More information about the use-livecode
mailing list