DEFINITION MODULE Tables; FROM GenLists IMPORT GenList; FROM DateFunctions IMPORT Date; FROM NumTypes IMPORT Real8; TYPE Table; (* opaque type *) (* this structure is used to pass data from/to a cell *) CellValue = RECORD CASE : CHAR OF 'S' : Str : ARRAY[0..79] OF CHAR; |'R' : R : Real8; |'I' : I : INTEGER; |'D' : D : Date; |'G' : B : BOOLEAN; (* field selected *) END; (* end of case *) END; (* end of cell value *) PROCEDURE PutCell(VAR T: Table; X,Y : CARDINAL; Cell : CellValue); (* fill a value in table *) PROCEDURE GetCell(VAR T: Table; X,Y : CARDINAL; VAR Cell : CellValue); (* get contents of cell*) (* these procedures are used to define the table *) PROCEDURE DefineTextCol(VAR T: Table; X, Width : CARDINAL; Title : ARRAY OF CHAR; DisplayOnly : BOOLEAN); PROCEDURE DefineGroupCol(VAR T:Table; X,Width : CARDINAL; Title : ARRAY OF CHAR; Choice : ARRAY OF CHAR; MenuKey : CARDINAL; NbrOfChoice, ThisChoice : CARDINAL; SelectDefault: BOOLEAN ); PROCEDURE DefineIntegerCol(VAR T: Table; X,Width : CARDINAL; Title : ARRAY OF CHAR; Min, Max : LONGINT); PROCEDURE DefineRealCol(VAR T: Table; X,Width : CARDINAL; Title : ARRAY OF CHAR; Min, Max : REAL); PROCEDURE DefineTable(VAR T: Table; Caption : ARRAY OF CHAR); PROCEDURE BuildTable(VAR T: Table; NbrRows : CARDINAL); PROCEDURE ShowTable(T : Table;X1,Y1,X2,Y2: CARDINAL); PROCEDURE NumberOfRows( T : Table) : CARDINAL; PROCEDURE NumberOfCols(T : Table) : CARDINAL; PROCEDURE ControlTable(VAR T: Table;X1,Y1,X2,Y2 : CARDINAL); PROCEDURE DeleteTable(VAR T: Table); END Tables.