Suppose you have a database which you want to roll out to a number of clients. The database, the forms and the reports are functionally the same for each client, but you would like to provide each client with a different visual effect - different colours and fonts. Or suppose that you do not yet know exactly what set of colours your client would like, and you'd prefer not to have to tweak a large number of forms to get the right colours (especially when the client changes their mind several times). Never fear! skinning (which appears in Rekall 2.4.2) comes to the rescue.
Skinning is akin to style sheets in HTML. You create one or more named skins (skins are documents in the same way as forms and reports); a skin contains one or more named elements each of which can specify foreground and background colours and a font (other related things to follow). A form (or report) can then specify a skin by name, and objects in the form can specify an element within the skin. If the object does not explictely specify a foreground colour, then the foreground colour in the skin element will be used; similarly with the other values.
The image below shows the skin property. This is found amongst the form or report document properties. The suffix value is described later and may or may not appear. The skin control is a combobox that shows available skins.
You can create new skins, and edit existing skins, directly from this dialog, using the buttons; edit will edit the currently selected skins. These bring up a skin dialog as shown below. Element names are edited by clicking in the cells in the first column. Element values are edited or cleared by right-clicking or double-clicking in their cells, which displays a popup menu; this also has options to remove or insert a row. The final column shows a sample of the text for the settings in the element.
The skin element setting is set via the skin element property on individual objects (including the top-level form or report document elements). This is shown below. It displays the skin being used (or a message if no skin is set) and allows selection of a skin element; the skin can also be edited directly from here/
Whenever a skin is changed, all open forms are notified, and any that use that skin will update.
The suffix setting mentioned above provides the mechanism whereby you can give different clients different colours without having to edit the skin for each (which in any case would not work if they are all accessing a common database). The skin suffix is set in the advanced properties for the database connection. If a skin suffix is set then skin names have _suffix appended (eg., if the skin name is lookandfeel and the skin suffix is bigclient then the skin named lookandfeel_bigclient is used). This way, you can create a set of skins each with a suffix corresponding to the client, then set up Rekall at the client site to use the appropriate skin.