Form Input

Siag Office - A Free Office Package for Unix


Scheme In A Grid

Pathetic Writer

Egon Animator

Supporting Environment


Form Input

Extension Languages

Drag and Drop

Getting Siag


FTP Archive

Mail Archive

The GNU Public License

Change Log

More stuff

The Form interface is a convenient way to create dialogs. It is done by adding different widgets to a form, using a collection of Scheme functions. Each input widget has a name and a value, and the results are returned as an associative list.

Example: form.scm

Example: data.scm

In Siag, it is also possible to declare an area of the sheet to be a "database" and use the form interface to edit the contents. To do this, set the block on the first line of the fields in the area. These columns can now be edited using the (data-record-edit) function.

This is not a real database, only a nice way to edit the contents of a spreadsheet.

Without Programming

Open the file with File - Open

Mark the top row and protect it with Window - Protect Cells

Edit the record with Data - Edit Record

The Scheme Interface

Start a new form
(form-label label)
Add a label to the form
(form-text name)
Add a text entry field to the form
(form-withprompt prompt value width)
Create a label followed by a text field of a specified width
(form-record name name ...)
Create a form with one label and one text field per line
(form-menu name)
Add a pull-down menu
(form-menuentry text)
Add one entry to the menu
(form-okbutton label)
Add a button which pops down the form, collects the values and returns them
(form-cancelbutton label)
Add a button which pops down the form, discards the values and returns the empty list
(form-property name value)
Changes an X property of the most recently added widget
(form-properties name value name value ...)
Changes several properties in a single call
Add the next widget below the last one, rather than to the right
Pop up the form, wait for the user to do something, return the results
Make a list of the strings from the first row of the block
(data-record-collect row)
Collect the values from row row, returning the results as an associative list of the form
((fieldname . value) (fieldname . value) ...)
(data-record-store record row)
Store a record back at row row
(data-record-form record labelwidth textwidth)
Display a form with one line per field
(data-record-edit row)
Edit one row in the "database". This is available on the menu as Data - Edit Record.

Ulric Eriksson 2000-12-07