Brian Dunning's FileMaker Custom Functions

ListToggle ( InList ; InValue )

Adds or removes given Value from given List

  Average rating: 4.9 (26 votes) Log in to vote

Richard DeShong   Richard DeShong - Show more from this author
Logic Tools
http://logictools.com

Share on Facebook Share on Twitter

  Sample input:
ListToggle ( "A¶B¶C¶B", "B" )
  Sample output:
"A¶C"

  Function definition: (Copy & paste into FileMaker's Edit Custom Function window)

Add or Remove a given value from the list.
A new value is added to the end of the list.
Substitute() is used to remove, so all repetitions of the value are removed.
Note that this does not "clean up" the list (it does not remove blank lines).
I typically use this for UI selection and conditional formatting.

Adapted from ideas by David Head and Bruce Robertson and their AddRemoveListItem(s) functions. The main change was to put the Let() statement inside the Case() statement. I think this makes the function more efficient when it is likely that the list is empty.

~~~ Design Notes ~~~

This is part of a series of LIST functions.
ListAdd(), ListAddUnique(), ListExist(), ListGet(), ListToggle().
Each uses the same name format: List
Each uses the same parameter format: InList; InValue.

They also work in concert with two SET functions:
SetVar() and SetField()
These are all designed to work with variables and to
keep the variables from being un-set (removed from memory),
by using the string "Empty" to indicate IsEmpty().
Example:
If a field, MyField, is empty and I use SetVar(),
MyVariable = SetVar( MyField )
Then MyVariable is now = "Empty"
~~~

 

Comments

Don Wieland   Don Wieland, DW Data Concepts
Feb 10, 2024
Hi Richard - I ran across your function in hope to use it. It did not quite do exactly what I needed, so I ended up compiling my own. If interested, I'd appreciate your feedback on it.

toggle_value_in_value_list(vList, theValue)

Thanks for submitting your function to inspire me!

Don
 
Richard DeShong   Richard DeShong, Logic Tools
Feb 12, 2024
Don, your function seems to do the exact same thing as this function. But it has an unneeded Let(), and uses a slower While-Replace, instead of the faster Substitute that this function uses.
 

Log in to post comments.

 

Note: these functions are not guaranteed or supported by BrianDunning.com. Please contact the individual developer with any questions or problems.

Support this website.

This library has been a free commmunity resource for FileMaker users and developers for 20 years. It receives no funding and has no advertisements. If it has helped you out, I'd really appreciate it if you could contribute whatever you think it's worth: