Form Navigation

You can move from control to control and record to record in various ways; using the toolbar, using the keyboard, using any buttons that you have added to the form, and using the mouse.

Apart from the obvious point-and-click to move to another control, you can also use the tab key; tab on its own moves to the next control while shift-tab moves to the previous control ( Tab and shift-tab do not work in memo controls, since you might want to actually enter a tab as data. ) . Enter also functions the same as the tab key. The tab order is initially the same as the order in which controls are created, except that buttons and labels are not included in the tab ordering ( You can however create a button with text like &Click Me!, in which case the C will be underlined, and the key combination Alt-C will be equivalent to clicking the button. ) . The tab order can be changed by right clicking in a block (when in design mode) and selecting the Set tab order item. This displays a dialog such as is show below (this actually being for the Clients form):

The left-hand list box shows controls which are not in the tab ordering (ie., which cannot be reached by tabbing); the right-hand list box shows those that are, with the tab ordering being the order down the list. Controls can be moved between lists; if a control is selected in the right-hand list then it can be moved up or down. In addition, controls can be automatically ordered by column (Rekall tries to order so that tabbing goes down successive columns) or by row (Rekall tries to order so that tabbing goes across rows). Automatic ordering depends on the exact layout of controls, and the tolerance setting defines how well aligned two controls have to be to be considered to be in the same column (or row).

Note that the tab ordering applies to controls corresponding to the same row of data in the server database. So, if you have a form which displays multiple rows of data, tabbing will work though all controls for one server database row before moving to another.

If you tab forward from the last control in the tab order, then Rekall moves on to the first control in the next row of data from the server database, while back-tabbing (shift-tab) from the first control will move to the last control for the previous row of data from the server database.

Movement between server database rows is accomplished using the up and down cursor keys. If the form is displaying multiple rows of data then it will scroll as appropriate. Also, assuming that the block auto-sync property is set ( Auto-sync is the default. Currently, there are a number of problems associated with clearing the auto-sync property; for instance, data may be lost if an updated row scrolls out of view. It is recommended that you leave this property set. ) updated rows are automatically saved whenever focus moves to a control in a different row. In addition, the Ctrl-Return (or Ctrl-Enter) key combination saves the current row.

The toolbar has controls which can be used to navigate between rows. These are actually the same as appear for a table in data view, but are shown again below.

Go to first record
Go to previous record
Go to previous record
Go to last record
Insert record
Delete record
Save record
Start query
Execute query
Cancel query
Reload form data

With the exception of the save record tool, all the tools operate on the block which contains the control which currently has focus, or the outermost block if no control has focus.

The add record tool opens up an empty row after the last row. This is simply a row into which data can be entered; its position does not imply anything about where the record will be saved in the server database (and, if you have a order by expression in the query which retrieves data, then if you requery the server database the record will be subject to that ordering).

The save record tool operates on the entire form. In essence, it does a save at the outermost block level; the block will in turn does a save on any nested blocks, and so forth.

The start query tool is used to start a query. Clicking this tool will clear all the controls in the current row. You can enter data into some of the controls, and then click the execute query tool. Rekall will then search for all server database records which match the entered data. Controls can be left blank, in which case they play no part in the query; otherwise, the data in the server database record must match exactly, with the exception of text entry controls. In this case, the % character can be used as a wildcard ( This will probably be changed to * (or an option provided to select which) in a future release of Rekall. ) (so M% would match Mike and Michelle but not Adam Miles). The query can be cancelled with the cancel query tool.

In addition, you can enter query terms like < 10, using the operators < (less than), > (greater than), <= (less than or equal to), >= (greater than or equal to) and != (not equal).

Note that when entering data for a query, control verification and not-null checks are not applied. This does mean that you can enter somthing like >silly in a numerical value.

The full set of keyboard navigation keys is:

Tab, Enter Go to next field, or next row if at last field
Shift-Tab Go to previous field, or previous row if at first field
Cursor-Up Go to previous record
Cursor-down Go to next record
Ctrl-Cursor-Up Go to first record
Ctrl-Cursor-Down Go to last record
Ctrl-Enter/Ctrl-Return Save record
Escape Cancel changes to row