These objects are containers for other objects. The KBHeader and KBFooter objects are used as headers and footers respectivly in reports, and do not appear in forms. A KBContainer is used as a container in a KBFormblock and does not appear in reports. A KBTabberPage is a page within a tabbed control (actually, the tabbed control is itself a container, but the only object that it can contain are pages).
The essential purpose of a container is to provide a means of grouping together some controls. The controls really belong to the KBBlock in which the container is embedded, but their position is controlled relative to the container and not the KBBlock itself.
One use of a container is for report headers and footers. The header is a container which is set to have the same width as the block in which it is embedded; the footer similarly has the same width, but is locked to the bottom of the block.
Another instance of a KBContainer is the upper part of the table design form. The lower half of this form is a subblock, which is set to have fixed height but to stick to the bottom of the form. The upper half is a KBContainer, and is set to change in height as the form is resized. As it does so it adjusts the number of rows of data (in this case, information on table columns) that are displayed. Note that, when a block with a zero rowcount calculates how many rows to display, it calculates the values for itself and for any embedded containers, and uses the minumum number.
Notice that the containers are special cases of KBObject, rather than KBItem, since the containers themselves display no data.