Forms and Reports are Trees

To save text, in this section we'll refer to forms, but unless explictely mentioned, this applies to reports as well.

A form is organised as a tree of objects. The top-most level object is the form itself, and contains information which is global to the form (for instance, the form caption). A form is also a special case of a block.

A block is the most important sort of object. It is an object in which other objects are displayed, and it is the point at which data is retrieved from the server database, displayed and possibly updated. A block can contain controls such as fields (simple text entry), images, and so forth.

A block can also contain subblocks; this provies the form-subform structure (and similarly report-subreport). Note that this can in principle be nested to any depth, and a block can contain more than one subblock. Blocks also handle some special controls, such as rowmarks .

A block in a form can also contain explicit containers. These can be used for layout and presentation (for instance, a block might have a grey background, but include a container with a yellow background). Note that so far as retrieving data from the server database is concerned, a control that appears inside a container is logincally within the block that encloses the container.

A block in a report can have a header and a footer, as noted above. These are special cases of containers.