Changes from Mesa 2 build 341 to build 347. What hasn't changed but will ---------------------------- The Help file - these changes currently do not appear in the help file. This may change before the final 2.21 release. What's new ---------- 1) File locking - there is a checkbox on the "Files" page of the preferences panel to enable and disable locking of the file when the file is loaded or saved. 2) MATCH/@MATCH function - should work like the Excel/Lotus equivilents. 3) EDITCELL() MScript function - this function will invoke an "edit" session on the current cell and will wait for the edit session to close. It will return 0 if the user did enter valid data. It will return 1 if the user hit Escape or canceled it some other method. This is equivilent to the ~ in a Lotus/Quatro Macro. 4) Push/Pop Selection commands - can be added to toolbars/menus/shortcuts. Basically, you can push the current selection (which includes the selected cell/range, the current upper left cell, and the locked titles) onto a stack and then pop that off the stack later. This is useful for navigation. You can push the selection on the stack, scroll to a different place in the sheet to view data, then pop the selection off and your right back where you were. (I use this in my editor, Visual SlickEdit, quite often and though it might be useful for spreadsheets.) 5) Excel 97 Export now writes the strings in unicode format instead of using codepages. This should help reduce data loss when loading into other applications. 6) Bunch of new AddIn functions. See the Mesa 2 AddIn kit for details. 7) SUBSTITUTE/@SUBSTITUTE function - should work like the Excel equivilent. 8) Date parsing enhanced so it will automatically detect 4 digit years in the first or last position no matter what your system date format is set too. 9) Dropping a "blank" marker style on the series of a candlestick or Hi/Lo/Close graph will turn off the horizontal markers at the hi and lo positions. 10) Excel 5.0/95 export filter added. 11) IPMT/IPAYMT/PPMT/PPAYMT functions. 12) SETELEMENT and MAPPEND matrix manipulation functions. 13) Quattro Pro WB2 import filter. Performance Improvements ------------------------ 1) Selection manager - the enable/disable code on each page of the selection manager has been improved to greatly reduce the "pulsing" of the pages when the selection changes, typing a script, etc... Basically, it should look a bit more solid now. 2) Recalc range - Historically, when you hit recalc range, if the dependancy tree was "dirty", it did a complete recalc of the whole workbook to make the tree clean. If the tree was clean, it only did the range in the correct order. Now, if the recalc order is set to Row or Column, it realizes the dependancy tree is irrelevant and will loop through the rows/columns of the range doing the calc. 3) Cached graphs - when graph caching is turned on (the default) and a recalc/feed/animation/etc... causes the graphs to need to be updated, only the graphs currently visible will be redrawn. Others will be redrawn only when they become visible. (Basically, there isn't much point in redrawing graphs the user isn't looking at anyway.) 4) Script recorder: the script recorder turned out to be a real performace hog on slower computers once the buffer hit the 32K limit and needed to scroll every time something needed to be added to the recorder. Several speedups were implemented: a) If the script recorder is "closed" (not-visible), the MLE is not updated with the new text. When it is re-opened it will be updated. b) Instead of scrolling 1 line of text off the top at a time (thus requireing the scroll to happen for EVERY record operation) it "jump scrolls" at least 1K of characters off the top. This allows the scrolling to occure less frequently. c) Changed the scroll algorithm to make it faster and use less memory. d) Added "hidden" keys to the INI file to specify the maximum history buffer size as well as the minimum jump scroll size. If performance is still a problem, we can reduce the buffer size and increase the jump scroll size. 5) Real time feeds: new method of providing feeds to the workbook introduced to reduce the number of calls into MESAFEED.DLL which would result in global mutexes being cycled. (costly operation) Bug Fixes --------- 1) MScript: SAVE(name) fixed so the workbook titles on the MDI windows would be properly updated to reflect the new name. 2) MScript: COPYRANGE with CURRENTSEL as source or dest range would cause a sys3175 crash when script page is selected. 3) MScript: files with scripts set to execute on close will crash Mesa if Mesa is closed with these files open. (Example: globals.m2 with "cleanup" code) 4) Display: cells that switch from a value to "blank" during recalc will not properly refresh the display. 5) MScript: PULL will not allow typing of numbers from the numeric keypad. 6) MScript: closing the REXXConsole during PULL processing (via X button) will hang the script permanantly. (note: fixed by disallowing close during pull) 7) MScript: SORTing via menu options is not recorded in the script recorder. 8) MScript: Using "" as key for SORT does not work. Unfortunately, that is how the selection manager scripts the sort. (note: fixed by allowing "" for default key, not by changing how it is recorded) 9) XL97 Export: Dimension record not exported. When Mesa reloads the file, all layers set to "default" size. 10) XL? import filters, WK? import filters: will add blank layers up to default number of layers. Example: if you have Mesa set to default to 10 layers, but import a book with only 3 layers, Mesa will add 7 layers. 11) XL5/97 import: PALETTE record imported wrong (red and blue parts of record reversed) 12) XL? import: cell references with invalid layers (Example: #REF!A1) were importing with a -1 layer number thus causing a crash on access. 13) Dialogs: if current workbook is on a lan volume (example: \\mymachine\edrive\myfile.m2) then the file open dialog will not appear. 14) MScript: CURRENTPATH() was returning the path AND the filename instead of just the path. 15) Dialogs: selecting multiple files to open from the file load dialog will use the first error found for all subsequent files. Example: select 6 files. If the 2nd file is not an identifiable/importable format, files 3-6 will also be listed as unidentifiable even if they really are. 16) Graphs: Graphs on layers other than A may not update on recalc if the range does not explicitely set the layer. 17) User interaction: Add Layer when script is selected causes tabs to improperly reflect the currently selected layer. 18) User interaction: Insert layer not disabled when script is selected. 19) XLS 97 Import: does not properly import strings when file is not a unicode XLS 97 file. (Mesa created Excel 97 files are not Unicode so Mesa may not be able to properly read the Excel 97 files it creates, but Excel can read them fine.) 20) User interaction: possible key transposition/race condition on slow machines or really bogged down machines. 21) MScript: GETSIGNALDATA always returning 256 characters instead of the proper string length. 22) Functions: DSUM and other database and lookup function had problems with mixed absolute/relative ranges, example: A$1:B2. 23) Functions: SIGNAL always writing 512 characters instead of the string length. May crash on strings longer than 512. 24) Dialogs: if the current directory is the root directory, the file open dialog may not appear. 25) MScipt: many functions would not allow missing parameters. Mesa will crash if they are missing. Example: SETFORMAT("HMS24",,"A1") 26) Functions: MOD truncation problem fixed. 27) User interaction: Next Window and Previous Window command were unpredictable with minimized windows. 28) Files: Mesa wasn't reading all "types" of the .TYPE ea thus not all Mesa Template Files were coming in as templates. 29) Display: number value cells that span columns didn't always span. They would sometimes get clipped to the cell. 30) Dialogs: Memory leak with Save as dialog when external file filters are registered. 31) License dialogs: when entering an expired license, Mesa didn't always display the "expired license" dialog. Mesa would still be in demo mode, but no dialog was displayed letting the user know that. 32) Functions: COORD with only two params was not returning the address on the correct layer. (Workaround was to always specify the layer) 33) Functions: DSUM and other database and lookup function did strange things if criteria range was "unusual" instead of returning an error. 34) File filters: both the Lotus and Quatro import filters would cause a crash if Mesa 2 is in "demo" mode (no valid license) and the file being imported had more layers than demo mode allows. 35) Time: the NOW function (and similars) now return values accurate to hundredths of seconds instead of just seconds. 36) Real time feeds: potential crash in MESAFEED.DLL if the program generating the feed terminates before Mesa gets the feed value off of the feed table. 37) UI: potential crash if more than 32 views into the same workbook are created. 38) All "year first" date format (like YYYY/MM/DD) parsing was completely broken. 39) Printing: monochrome bitmaps on 16 bit displays sometimes looked gray. 40) WK4 export: layer names may have been exported using characters that are allowed in Mesa but not in Lotus. Most invalid characters are now mapped to a space or something close. 41) WK? export: SAME function is now dereferenced to the "base" formula so cells using SAME can now be exported as formula cells instead of exported by value. 42) Calc indicator: clicking on the Abacus was not causing a recalc as documented. 43) File dialog: Quattro Pro/QB1 was not listed in the type list for the file open dialog. 44) Selection manager: The script list box would still show script names after the last workbook was closed. 45) Printing: the fit to page options were doing extremely strange things when page breaks were encountered.