table.pp 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279
  1. (******************************************************************************
  2. *
  3. * Copyright (c) 1994-2000 Palm, Inc. or its subsidiaries.
  4. * All rights reserved.
  5. *
  6. * File: Table.h
  7. *
  8. * Release: Palm OS SDK 4.0 (63220)
  9. *
  10. * Description:
  11. * This file defines table structures and routines.
  12. *
  13. * History:
  14. * September 1, 1994 Created by Art Lamb
  15. *
  16. *****************************************************************************)
  17. unit table;
  18. interface
  19. uses palmos, coretraps, rect, font, field, control;
  20. //-------------------------------------------------------------------
  21. // Table structures
  22. //-------------------------------------------------------------------
  23. const
  24. tableDefaultColumnSpacing = 1;
  25. tableNoteIndicatorWidth = 7;
  26. tableNoteIndicatorHeight = 11;
  27. tableMaxTextItemSize = 255; // does not incude terminating null
  28. tblUnusableRow = $ffff;
  29. // Display style of a table item
  30. //
  31. type
  32. tableItemStyles = Enum;
  33. const
  34. checkboxTableItem = 0;
  35. customTableItem = Succ(checkboxTableItem);
  36. dateTableItem = Succ(customTableItem);
  37. labelTableItem = Succ(dateTableItem);
  38. numericTableItem = Succ(labelTableItem);
  39. popupTriggerTableItem = Succ(numericTableItem);
  40. textTableItem = Succ(popupTriggerTableItem);
  41. textWithNoteTableItem = Succ(textTableItem);
  42. timeTableItem = Succ(textWithNoteTableItem);
  43. narrowTextTableItem = Succ(timeTableItem);
  44. tallCustomTableItem = Succ(narrowTextTableItem);
  45. type
  46. TableItemStyleType = tableItemStyles;
  47. TableItemType = record
  48. {$ifdef ALLOW_ACCESS_TO_INTERNALS_OF_TABLES} // These fields will not be available in the next OS release!
  49. itemType: TableItemStyleType;
  50. fontID: FontID; // font for drawing text
  51. intValue: Int16;
  52. ptr: PChar;
  53. {$endif}
  54. end;
  55. TableItemTag = TableItemType;
  56. TableItemPtr = ^TableItemType;
  57. // Draw item callback routine prototype, used only by customTableItem.
  58. TableDrawItemFuncType = procedure(tableP: Pointer; row, column: Int16; var bounds: RectangleType);
  59. TableDrawItemFuncPtr = TableDrawItemFuncType;
  60. // Load data callback routine prototype
  61. TableLoadDataFuncType = function(tableP: Pointer; row, column: Int16; editable: Boolean;
  62. var dataH: MemHandle; var dataOffset, dataSize: Int16; fld: FieldPtr): Err;
  63. TableLoadDataFuncPtr = TableLoadDataFuncType;
  64. // Save data callback routine prototype
  65. TableSaveDataFuncType = function(tableP: Pointer; row, column: Int16): Boolean;
  66. TableSaveDataFuncPtr = TableSaveDataFuncType;
  67. TableColumnAttrType = record
  68. {$ifdef ALLOW_ACCESS_TO_INTERNALS_OF_TABLES} // These fields will not be available in the next OS release!
  69. width: Coord; // width in pixels
  70. Bits: UInt16;
  71. {
  72. UInt16 reserved1 : 5;
  73. UInt16 masked : 1; // if both row + column masked, draw only grey box
  74. UInt16 editIndicator : 1;
  75. UInt16 usable : 1;
  76. UInt16 reserved2 : 8;
  77. }
  78. spacing: Coord; // space after column
  79. drawCallback: TableDrawItemFuncPtr;
  80. loadDataCallback: TableLoadDataFuncPtr;
  81. saveDataCallback: TableSaveDataFuncPtr;
  82. {$endif}
  83. end;
  84. TableColumnAttrTag = TableColumnAttrType;
  85. TableRowAttrType = record
  86. {$ifdef ALLOW_ACCESS_TO_INTERNALS_OF_TABLES} // These fields will not be available in the next OS release!
  87. id: UInt16;
  88. height: Coord; // row height in pixels
  89. data: UInt32;
  90. Bits: UInt16;
  91. {
  92. UInt16 reserved1 : 7;
  93. UInt16 usable : 1;
  94. UInt16 reserved2 : 4;
  95. UInt16 masked : 1; // if both row + column masked, draw only grey box
  96. UInt16 invalid : 1; // true if redraw needed
  97. UInt16 staticHeight : 1; // Set if height does not expands as text is entered
  98. UInt16 selectable : 1;
  99. }
  100. reserved3: UInt16;
  101. {$endif}
  102. end;
  103. TableRowAttrTag = TableRowAttrType;
  104. TableAttrType = record
  105. {$ifdef ALLOW_ACCESS_TO_INTERNALS_OF_TABLES} // These fields will not be available in the next OS release!
  106. Bits: UInt16;
  107. {
  108. UInt16 visible:1; // Set if drawn, used internally
  109. UInt16 editable:1; // Set if editable
  110. UInt16 editing:1; // Set if in edit mode
  111. UInt16 selected:1; // Set if the current item is selected
  112. UInt16 hasScrollBar:1; // Set if the table has a scroll bar
  113. UInt16 usable:1; // Set if in table is visible in the current form
  114. UInt16 reserved:10;
  115. }
  116. {$endif}
  117. end;
  118. TableAttrTag = TableAttrType;
  119. TableType = record
  120. {$ifdef ALLOW_ACCESS_TO_INTERNALS_OF_TABLES} // These fields will not be available in the next OS release!
  121. id: UInt16;
  122. bounds: RectangleType;
  123. attr: TableAttrType;
  124. numColumns: Int16;
  125. numRows: Int16;
  126. currentRow: Int16;
  127. currentColumn: Int16;
  128. topRow: Int16;
  129. columnAttrs: ^TableColumnAttrType;
  130. rowAttrs: ^TableRowAttrType;
  131. items: TableItemPtr;
  132. currentField: FieldType;
  133. {$endif}
  134. end;
  135. TablePtr = ^TableType;
  136. //-------------------------------------------------------------------
  137. // Table routines
  138. //-------------------------------------------------------------------
  139. procedure TblDrawTable(tableP: TablePtr); syscall sysTrapTblDrawTable;
  140. procedure TblRedrawTable(tableP: TablePtr); syscall sysTrapTblRedrawTable;
  141. procedure TblEraseTable(tableP: TablePtr); syscall sysTrapTblEraseTable;
  142. function TblHandleEvent(tableP: TablePtr; event: EventPtr): Boolean; syscall sysTrapTblHandleEvent;
  143. procedure TblGetItemBounds(const tableP: TablePtr; row, column: Int16; var rP: RectangleType); syscall sysTrapTblGetItemBounds;
  144. procedure TblSelectItem(tableP: TablePtr; row, column: Int16); syscall sysTrapTblSelectItem;
  145. function TblGetItemInt(const tableP: TablePtr; row, column: Int16): Int16; syscall sysTrapTblGetItemInt;
  146. procedure TblSetItemInt(tableP: TablePtr; row, column, value: Int16); syscall sysTrapTblSetItemInt;
  147. procedure TblSetItemPtr(tableP: TablePtr; row, column: Int16; value: Pointer); syscall sysTrapTblSetItemPtr;
  148. procedure TblSetItemStyle(tableP: TablePtr; row, column: Int16; type_: TableItemStyleType); syscall sysTrapTblSetItemStyle;
  149. procedure TblUnhighlightSelection(tableP: TablePtr); syscall sysTrapTblUnhighlightSelection;
  150. function TblRowUsable(const tableP: TablePtr; row: Int16): Boolean; syscall sysTrapTblRowUsable;
  151. procedure TblSetRowUsable(tableP: TablePtr; row: Int16; usable: Boolean); syscall sysTrapTblSetRowUsable;
  152. function TblGetLastUsableRow(const tableP: TablePtr): Int16; syscall sysTrapTblGetLastUsableRow;
  153. procedure TblSetColumnUsable(tableP: TablePtr; column: Int16; usable: Boolean); syscall sysTrapTblSetColumnUsable;
  154. procedure TblSetRowSelectable(tableP: TablePtr; row: Int16; selectable: Boolean); syscall sysTrapTblSetRowSelectable;
  155. function TblRowSelectable(const tableP: TablePtr; row: Int16): Boolean; syscall sysTrapTblRowSelectable;
  156. function TblGetNumberOfRows(const tableP: TablePtr): Int16; syscall sysTrapTblGetNumberOfRows;
  157. procedure TblSetCustomDrawProcedure(tableP: TablePtr; column: Int16; drawCallback: TableDrawItemFuncPtr); syscall sysTrapTblSetCustomDrawProcedure;
  158. procedure TblSetLoadDataProcedure(tableP: TablePtr; column: Int16; loadDataCallback: TableLoadDataFuncPtr); syscall sysTrapTblSetLoadDataProcedure;
  159. procedure TblSetSaveDataProcedure(tableP: TablePtr; column: Int16; saveDataCallback: TableSaveDataFuncPtr); syscall sysTrapTblSetSaveDataProcedure;
  160. procedure TblGetBounds(const tableP: TablePtr; var rP: RectangleType); syscall sysTrapTblGetBounds;
  161. procedure TblSetBounds(tableP: TablePtr; {const} var rP: RectangleType); syscall sysTrapTblSetBounds;
  162. function TblGetRowHeight(const tableP: TablePtr; row: Int16): Coord; syscall sysTrapTblGetRowHeight;
  163. procedure TblSetRowHeight(tableP: TablePtr; row: Int16; height: Coord); syscall sysTrapTblSetRowHeight;
  164. function TblGetColumnWidth(const tableP: TablePtr; column: Int16): Coord; syscall sysTrapTblGetColumnWidth;
  165. procedure TblSetColumnWidth(tableP: TablePtr; column: Int16; width: Coord); syscall sysTrapTblSetColumnWidth;
  166. function TblGetColumnSpacing(const tableP: TablePtr; column: Int16): Coord; syscall sysTrapTblGetColumnSpacing;
  167. procedure TblSetColumnSpacing(tableP: TablePtr; column: Int16; spacing: Coord); syscall sysTrapTblSetColumnSpacing;
  168. function TblFindRowID(const tableP: TablePtr; id: UInt16; var rowP: Int16): Boolean; syscall sysTrapTblFindRowID;
  169. function TblFindRowData(const tableP: TablePtr; data: UInt32; var rowP: Int16): Boolean; syscall sysTrapTblFindRowData;
  170. function TblGetRowID(const tableP: TablePtr; row: Int16): UInt16; syscall sysTrapTblGetRowID;
  171. procedure TblSetRowID(tableP: TablePtr; row, id: Int16); syscall sysTrapTblSetRowID;
  172. function TblGetRowData(const tableP: TablePtr; row: Int16): UInt32; syscall sysTrapTblGetRowData;
  173. procedure TblSetRowData(tableP: TablePtr; row: Int16; data: UInt32); syscall sysTrapTblSetRowData;
  174. function TblRowInvalid(const tableP: TablePtr; row: Int16): Boolean; syscall sysTrapTblRowInvalid;
  175. procedure TblMarkRowInvalid(tableP: TablePtr; row: Int16); syscall sysTrapTblMarkRowInvalid;
  176. procedure TblMarkTableInvalid(tableP: TablePtr); syscall sysTrapTblMarkTableInvalid;
  177. function TblGetSelection(const tableP: TablePtr; var rowP, columnP: Int16): Boolean; syscall sysTrapTblGetSelection;
  178. procedure TblInsertRow(tableP: TablePtr; row: Int16); syscall sysTrapTblInsertRow;
  179. procedure TblRemoveRow(tableP: TablePtr; row: Int16); syscall sysTrapTblRemoveRow;
  180. procedure TblReleaseFocus(tableP: TablePtr); syscall sysTrapTblReleaseFocus;
  181. function TblEditing(const tableP: TablePtr): Boolean; syscall sysTrapTblEditing;
  182. function TblGetCurrentField(const tableP: TablePtr): FieldPtr; syscall sysTrapTblGetCurrentField;
  183. procedure TblGrabFocus(tableP: TablePtr; row, column: Int16); syscall sysTrapTblGrabFocus;
  184. procedure TblSetColumnEditIndicator(tableP: TablePtr; column: Int16; editIndicator: Boolean); syscall sysTrapTblSetColumnEditIndicator;
  185. procedure TblSetRowStaticHeight(tableP: TablePtr; row: Int16; staticHeight: Boolean); syscall sysTrapTblSetRowStaticHeight;
  186. procedure TblHasScrollBar(tableP: TablePtr; hasScrollBar: Boolean); syscall sysTrapTblHasScrollBar;
  187. function TblGetItemFont(const tableP: TablePtr; row, column: Int16): FontID; syscall sysTrapTblGetItemFont;
  188. procedure TblSetItemFont(tableP: TablePtr; row, column: Int16; fontID: FontID); syscall sysTrapTblSetItemFont;
  189. function TblGetItemPtr(const tableP: TablePtr; row, column: Int16): Pointer; syscall sysTrapTblGetItemPtr;
  190. function TblRowMasked(const tableP: TablePtr; row: Int16): Boolean; syscall sysTrapTblRowMasked;
  191. procedure TblSetRowMasked(tableP: TablePtr; row: Int16; masked: Boolean); syscall sysTrapTblSetRowMasked;
  192. procedure TblSetColumnMasked(tableP: TablePtr; column: Int16; masked: Boolean); syscall sysTrapTblSetColumnMasked;
  193. function TblGetNumberOfColumns(const tableP: TablePtr): Int16; syscall sysTrapTblGetNumberOfColumns;
  194. function TblGetTopRow(const tableP: TablePtr): Int16; syscall sysTrapTblGetTopRow;
  195. procedure TblSetSelection(tableP: TablePtr; row, column: Int16); syscall sysTrapTblSetSelection;
  196. implementation
  197. end.