ford@sei.cmu.edu (Gary Ford) (10/12/90)
Some of the functionality desired can be done with HyperTalk. If you are willing to live with a monospaced font in the field, it is possible to have this capability: click to open a "cell" in a particular row and column; tab to move to next cell (left to right, then down, with wrap to first row, first column); all cells remain aligned even when editing a longer or shorter value into the currently open cell; optional automatic creation of a new line instead of wrap when tabbing from last cell. I have a demo stack I can e-mail if you are interested (BinHex 4.0 format; about 30K). The basic idea is to keep the field locked, and then open a small field over a cell when the cell is clicked. Data is copied from the cell into the small field, where it can be edited, and is copied back to the cell when finished. There are a couple of messy details. One will be cleaner with HyperCard 2.0, which can distinguish closeField from exitField. The other would require a new system message "scrollEvent" that would be sent to a scrolling field when the user performs a scroll event. My stack now has to use an idle handler to repeatedly compare the current field scroll value to the previous value, generating a scrollEvent message when they differ. Performance is marginal on my 3 year old Mac II; it should be acceptable on any of the faster Macs. If you can live with a fixed size field instead of a scrolling field, it is much simpler and faster. Gary Ford ford@sei.cmu.edu Software Engineering Institute Carnegie Mellon University