List controls
ODABA supports several types of list controls. All list controls are based on a tree model, which supports several regions with sub-regions in a list. Each region in a list may contain a number of columns.
List types supported are:
- List - simple list with one column
- Table - list with several columns
- Tree - structured list with several columns
Except within a tree, all regions of a list will be displayed when opening the list. For each region, a region header might be defined. Regions and columns defining a list are called list schema. Items displayed in the list are called list items. Each list item contains a data item for each column defined for the region.
List elements and list items might be decorated or associated with several layout properties, which determine the appearance of data items.
For a list control, columns and regions might be defined. A simple list just defines the data source (collection) and usually displays the instance keys according to the selected order in the list.
More complex list schemata might be defined by adding columns and regions to the list definition.
Regions, again, may contain sub regions
List layouts includes several layout elements, which might be defined and changed separately:
- text font
- text color
- background color
- icon
- label (region label or column headlines)
- tool tips
- detailed help information.
Usually, the layout defined for the control applies to all items in the list. When, however, regions and columns have been defined for the list, more sophisticated layout definitions might be provided. Finally, layout for each data item (cell) in a list might be changed from within the application.
Practically, layout information might be set for each
- data item (run time)
- column (list schema)
- region header (list schema)
- control (list schema)
Layout elements usually are inherited from upper levels. The list layout is not inherited as a whole, but in terms of elements, i.e. one may define a font for the list control and change the background color for a column still referring to the font defined for the control.
In order to define a layout for the region label or column header, layout elements might be defined for the region control. Defining region layout information requires a region control besides the region field. This information only applies on region label or column header.
In order to define a different layout for data items displayed for a region, layout elements can be assigned to each column control in the region (in this case, a column control needs to be defined besides the column field). The column layout also applies to the column heading, when column labels have been defined. In contrast to data items, the column heading also inherits layout information from the region, i.e. the region headline is displayed with the defined region layout completed by the column layout.
Data items usually display data according to the layout defined for the column. The region layout does not affect the data item layout. The data item layout might be, however, modified by the application (e.g. in an event handler when filling the list), which may define specific layout elements for each data item. Layout elements not explicitly defined for a data item are still taken from the column definition or from the control layout.
Defining a region header can be achieved by defining a title in the region field text data tab or in the associated region field control. In any case, Show label has to be switched on. The region label is displayed for the first column, only. Other columns do not get a text label.
When a region label has been defined, the region label is shown in the list without being expanded. In order to display the sub items in the region, the region has to be expanded by the user.
In order to define column labels, columns have to be defined for the region. For each column a column label (header) might be defined by setting a title text in the text definitions tab and switching on the Show label option. In contrast to region lables, column labels are displayed, only, when the region contains data. When using column labels, the region is always expanded and cannot be collapsed.
In order to define a list with labeled items, i.e. a list, where each item gets a label in the first column, a column header has to be defined for each region and the region must define a single item.
Labeled items are typically used for displaying properties in transposed tables. This is an alternative way of designing property tables, which also could be achieved by defining a transposed table for a single instance.

