The example4 function shows how you can use formatting-item-list to format a table of a sequence of items when the exact arrangement of the items and the table is not important. Note that you use formatting-cell inside the body of formatting-item-list to output each item. You do not use formatting-column or formatting-row , because CLIM figures out the number of columns and rows automatically (or obeys a constraint given in a keyword argument).
(defun example4 (&optional (items *alphabet*)
&key (stream *standard-output*) n-columns n-rows
y-spacing x-spacing
max-width max-height)
(clim:formatting-item-list
(stream :y-spacing y-spacing
:x-spacing x-spacing
:n-columns n-columns :n-rows n-rows
:max-width max-width :max-height max-height)
(do ()
((null items))
(clim:formatting-cell (stream)
(format stream "~A" (pop items))))))
Evaluating
(example4 :stream *my-window*)
shows this table:
A B C D
E F G H
I J K L
M N O P
Q R S T
U V W X
Y Z
You can easily add a constraint specifying the number of columns.
Evaluating
(example4 :stream *my-stream* :n-columns 8)
gives this:
A B C D E F G H
I J K L M N O P
Q R S T U V W X
Y Z
Common Lisp Interface Manager 2.0 User's Guide - 7 Aug 2017