A CheckListBox has got a property Columns which by default has the value 0, meaning you get a vertical scroll bar if there are more entries than fit into the control.
You can set it a positive value to get multiple columns and a horizontal scrollbar instead of a vertical one.
But what happens, if you set it to a negative value? You get multiple columns and the number of columns depends on the width of the control. So if you set e.g. its alignment to alClient and resize the form, the number of columns will be adapted to the width.
I have not yet figured out what column width is used to determine the number of columns. It does not depend on the text shown in the list. In the VCL sources it is calculated and set to ClientWidth div Columns, but that’s only for positive Columns values.