﻿# ListX and CellListX

**ListX = <code>, <descr>, <code>, <descr>,...**

**CellListX = <idx>, <code>, <descr>, <code>, <descr>,...**

ListX and CellListX are just like [List](list_aco.md) and [CellList](celllist.md), respectively, except that the list of items consists of <code>,<descr> pairs, where the <code> is what you store in your application (and in the data and answer arrays) while the <descr> is what displays in XTREE. The concept and implementation is essentially the same as the INFLD **||L** "list substitution" field type.

See the sample programs XTRA5 and XTRA5C in [EXLIB:\[908,21\]](https://bitbucket.org/microsabio/exlib/src/master/908021/) for examples of using these clauses. Also see "Dropdown lists" [Mouse and Keyboard](mouse_and_keyboard.md).

Also: the following note—see [List](list_aco.md) for others—is deemed sufficiently important to repeat here:

**Warning:** if the first character is neither alphabetic nor numeric, and it matches the last character in the list, then XTREE assumes that it is the delimiter character. Otherwise, the delimiter is assumed to be a comma. This can lead to unexpected problems in lists of items that have both leading and trailing spaces—or any other non-numeric, non-alphabetic character. To avoid that possibility, make the delimiter explicit.