History: ******** 3.20 8 Feb 2004: Add an "ALL Series" option for "Highs and Lows"; will be extended to other questions. 3.19 6 Feb 2004: Move Curvefit (Juergen Loewner, Jeff Weiss, David J Taylor) and FFourier (Don Cross) into main TPlot\Source directory for simplicity 3.18 6 Feb 2004: Make TXlsWrite an EXTERNAL co-component. 3.17 5 Feb 2004: Make TCalcExpress an EXTERNAL co-component, rather than an internal sub-component NEW PARADIGM: make the 3rd party components user-selectable co-components ! 3.16 4 Feb 2004: Replace Parser10 with CalcExpress 3.15 3 Feb 2004: Remove PageButtons and replace with Scrollbars (doooh !) 3.14 23 Jan 2004: Fix horrible IDE bug: origin: clashes between string resource numbers in TPlot and msGUI ! 3.13 20 Dec 2003: Major change: make TPlot DOTNET compatible: use dynamic arrays, remove pointers, etc 3.12 28 Nov 2003: Added ability to export to Excel files. 3.11 27 Oct 2003: Reworked TSeries.XAxis, TSeries.YAxis, TAxisList.Add, AddAxisClick, SetAxisDimensions. 3.10 22 Oct 2003: Fixed bug in 3-D columns that prevented drawing of last data point in each Series. 3.09 20 Oct 2003: Added TSeries.Interpolate function; extended "Legend ... Vertical: to Invisible, and added to PropertyEditor. 3.08 2 Oct 2003: Add _File, _Edit, _View, _Calc properties to TPlotActionList to control visibility of items. 3.07 30 Sep 2003: Augment image saving to allow for custom sizes. 3.06 30 Sep 2003: Replace TBorder by TBorder2, and remove manual border management. Add GUI control in Plot Properties. TBorder2 is simpler, with fewer properties, and is much better at squeezing the plot onto the page. 3.05 25 Sep 2003: Fix resizing of TPlotToolbar ! At last ! 3.04 25 Sep 2003: Fix lots of buglets in TPlotActionList, TPlotToolbar, TPlotPopupMenu to enable switching between different Plots. 3.03 17 May 2003: Fix various minor issues: sequence of outline/popup, non-streaming of TPlotActionList Actions, etc. 3.02 07 May 2003: Create TPlotPopupMenu ! Replace internal TPlot.FPlotPopupMenu, and link to TPlotActionList. 3.01 06 May 2003: Create TPlotActionList ! At last ! TPlotActionList has all the 80-odd actions of TPlot. Link TPlotMenu and TPlotToolBar to TPlotActionList. 3.00 15 Apr 2003: Version 3.00 leaks out into the wild. Not an official release. 2.84 28 Jan 2003: Fix nasty "&" bug in PlotToolBar.ToolButtonExists. 2.83 28 Jan 2003: Fix vertical position of Axis labels under Kylix - needs a bit more work. 2.82 28 Jan 2003: Tidy up HTML generation for series with multiplicity. 2.82 15 Jan 2003: Fix horrid TAxisList.GetItem bug that causes crash in Delphi 6 and 7. 2.81 6 Jan 2003: Debug Kylix versions; NB: Kylix 3 now fires a Resize event in the constructor ! 2.80 9 Dec 2002: Add "UpdateActions" to enable Action processing. 2.79 8 Dec 2002: Add "ProcessKeyDown" to enable processing of keyboard input. 2.78 7 Dec 2002: Remove FFT and FUNCTIONS defines: now make them part of the distribution. 2.77 4 Dec 2002: Dig out various bugs in streaming and loading files. 2.76 3 Dec 2002: Change license to MPL 1.1 2.75 26 Nov 2002: Finish work on Fourier Transforms. 2.74 24 Nov 2002: Add a "PropertyField" property (akin to a datafield) in which to store the properties of a plot. Work over the file and property loading and storing methods to work with this addition. 2.73 21 Nov 2002: Work over file opening, overlaying, stream loading, pasting. A lot ! 2.72 29 Oct 2002: Change file format to cope with TSeries.SeriesType and Multiplicity; New format is slightly simpler to interpret. 2.71 7 Sep 2002: Add TSeries.SeriesType, TSeries.Multiplicity; Modify TSeries.Draw, add TSeries.DrawXY, etc, Modify (overload) TSeries.AddPoint, etc; this mandates Delphi 4 and above. Remove ptError, ptBubble, ptMultiple from TPlotType, Remove TSeriesList.DrawError, DrawBubble, DrawMultiple. ******************************************************************************** * Massive experimental change now begins. * This change is forced by a bug in the ugly hack used to stream sub-properties. * The change is twofold: * - Make Series, Axes, Notes, Texts, AxisLabels, Titles all TCollectionItems. * - Make Axes, Notes, Texts, Labels, Titles, Selections all descend via TAngleRect * The benefits of this are: * - the first are now all completely accessible from the Object Inspector; * - so they can be added and removed in the Object Inspector, and their properties changed; * - there is now only one type of Axis, not two, and its Draw method is now comprehensible by mere mortals; * - the property streaming hack, and its bugs, are now gone; * - the code has become "cleaner" - which is always a good sign. * The side effects of this are: * - Property Series: TSeries is no longer, but Property SeriesList becomes Property Series; * - TPlot no longer has a default property; * - TAngleAxis vanishes; * - TQuad vanishes; * - Alignment and Orientation vanish; * - TRectangle and TAngleRect now have more methods and properties; * New components are: * - TPlotCollection * - TAxisList * - TNoteList * - TTextList ******************************************************************************** 2.70 4 Sep 2002: Improve TText units and multi-line handling 2.69 2 Sep 2002: Implement drawing of Series as Line on ptColumn plots. 2.68 31 Aug 2002: Added Color2, ColorPlot, and ColorType properties, and modified the Paint and Draw methods, to prettify the plot. 2.67 15 Aug 2002: Added "Apply All" to Axis Editor. 2.66 12 Aug 2002: Got the 2D<->3D transitions and Z Axis movement/angle working, but still not 100% right. 2.65 9 Aug 2002: Made text captions in dialog boxes subject to Editable property. 2.64 9 Aug 2002: Added exception handling (as a compiler option in Plot.inc) to transforms TAxis.FofX, etc. Causes about a 10% performance hit, but 2.63 9 Aug 2002: Added TAxis.AutoTick, TAxis.AutoZero, and reworked TAxis.ReScale again! Particularly with log scales. Now handles -ve number well. 2.62 8 Aug 2002: Added a "FileSavePrompt" property. 2.61 7 Aug 2002: Nailed the repeated draw bug introduced by the "Invalidate" change. 2.60 7 Aug 2002: Finally nailed the nasty "Component not found" bug in TPlotToolBar that prevented full use in the IDE. 2.59 6 Aug 2002: work over which graphs can have grids and/or walls. A LOT ! 2.58 5 Aug 2002: rework innards of "Titles.pas", making (Left, Top), (Height, Width) and (HeightEx, WidthEx) the real properties. Reason: trying to nail screen redraws; but actually makes code simpler, better, faster. 2.57 4 Aug 2002: start process of pre-pending private, non-property member variables with "m". 2.56 3 Aug 2002: replace "Refresh" with "Invalidate" to reduce redraw. 2.55 2 Aug 2002: add a "PaintLock" mechanism to reduce redraw. 2.54 1 Aug 2002: Add WallType and WallColor2 properties to TGrids, and augment TPropEdit to provide GUI access. 2.53 14 Jun 2002: Totally rearrange and rename all Misc and TPlot packages in order to bring order to this chaotic mess. BUMP TO VERSION 3. 2.52 12 Jun 2002: Remove language translations: this causes more problems than it is worth (at this stage). 2.51 12 Jun 2002: Added the StartTime property to TSeries, modified the data loading and getting to work with this. Note: These property changes now mean that old .props files provoke exceptions ! 2.50 11 Jun 2002: Collected the various Grid... and Wall... properties into one Walls property. 2.49 10 Jun 2002: Collected the various Mulitple... and ZLink properties into one Link property. 2.48 9 Jun 2002: Collected the various Contour... and Lambda... properties into one Contour property to reduce "Property clutter". 2.47 6 Jun 2002: SetFileName now sets the Title; SetName can now prevent changing the name of an instance, if Frozen is set; 2.46 29 May 2002: Add "OnFileNew" event, and other sundry minor changes for the WebLog application. 2.45 7 Jan 2002: Add Gamma, LambdaMin and LambdaMax properties, with new spectrum generator Misc.Rainbow, to give user control over the appearance of the Contour plots. 2.44 23 Aug 2001: Implement "GUI" defines that compile a TPlot that does not require a window manager, so it runs in console apps like Apache .so's. 2.43 22 Aug 2001: Add SaveToHTMLFile, SaveToHTMLStream, SaveToHTMLStringList methods. Revise "Save As" dialog, and FileName methods. Revise "SaveAsClick" method to add HTML format saving. 2.42 21 Aug 2001: Revise image saving techniques to cope with running from the command line - no windows. Works in Winnt and X - but not just bash. 2.41 18 Aug 2001: Create TPlotClient and TPlotServer. Much work neeeded. Later abandon. 2.40 16 Aug 2001: Made Notes multiline, added borders, and made it possible to toggle borders through the menus. 2.39 15 Aug 2001: Added DefineProperties in order to stream properties of all Series and Axes. What a hack ! 2.38 14 Aug 2001: Fixed bug that puts one less entry than needed into the file format's XDataSeriesLine in TSeriesList.GetSubHeaderStream 2.37 9 Aug 2001: Move all the TEdit stuff into TText, so every TText-derived object can edit itself. Fix subtle bug: Delphi saves files according to their names in the project (dpk) file - rather than their actual name. This was stuffing up case sensitivity in Kylix ! 2.36 9 Aug 2001: Rename AddInternalSeries and AddExternalSeries to AddInternalData and AddExternalData 2.35 3 Aug 2001: Realise that D5 has a TCaption type ! Merde ! Change my TCaption to TText ! 2.34 4 Aug 2001: Replace FResult with TSeries.FLSFit, so each series can be fitted individually. 2.33 3 Aug 2001: Fix final third party bug in main distribution 2.32 26 Jul 2001: Change most "with xxx do" blocks to "xxx." Fixed "Canvas.Start" bug in GetDrawing under Linux, but printing still doesn't work. Remove the 3rd party components from the Packages. This causes warnings, but this is better than the "Missing file" errors. They can be added back in by the user. 2.31 25 Jul 2001: Added GetPlotTypeAsString, fixed TPlotToolBar order bug in BCB. 2.30 23 Jul 2001: Modified AxisEditor and SeriesEditor to handle these new properties. 2.29 22 Jul 2001: Added Limits (Upper, Lower and Visible) to Axes and ShadeLimits and DrawShades to Series (these are complementary). 2.28 18 Jul 2001: Add financial menu items, and skeleton functions. 2.27 18 Jul 2001: Put $I Plot.inc and $IFDEFs into Plot200_R50.dpk to fix "File not found" issues with 3rd party components. Seems to work. Will extend to the D4 and Kylix versions. 2.26 17 Jul 2001: Completely rewrite Draw3DContour: implement High detail plots. Add ContourWireFrame property. 2.25 17 Jul 2001: Implement DrawLineContour. Add ContourStart and ContourInterval properties. Modify Properties dialog to include these two new properties. 2.24 16 Jul 2001: Completely rewrite DrawContour to make it simpler, quicker, less fragile, more compatible with the other 3D methods, especially future OpenGl extensions. 2.23 12 Jul 2001: Added Properties Property and PropertyEditor. 2.22 6 Jul 2001: Translations finished. Resize all labels and forms, debug. Originals are in TPlot.xls, thence the "lang" subdirectory. NB: these are machine translations, and so are probably very humorous and misleading ! 2.21 3 Jul 2001: Perform translations ! 2.20 2 Jul 2001: Move all ResourceStrings into files for translation, and load according to the Language defines in Misc.pas. 2.19 1 Jul 2001: place _ALL_ string resources into ResourceString statements. 2.18 30 Jun 2001: rewrite TPlot.CreateMenus to use new ResourceString instead of the old Strlst32.res resource file. 2.17 26 Jun 2001: Place Plot menu and Caption resources into resourcestring -> no longer need StrLst32.res, or resource editor. 2.16 16 Jun 2001: Make Selection: TAngleRect. This allows: Selection, Clicking and dragging of the Z Axis. Work over drawing Walls and Grids. Work over SetAxisDimensions. 2.15 14 Jun 2001: Work over the TAxis.Draw method to eliminate bugs in click-and-drag selection (FLabels). 2.14 12 Jun 2001: Add GridColor and WallColor properties, and user interfaces thereto. 2.13 9 Jun 2001: Create TAngleRect - this will replace TRectangle as the ancestor for many sub-components: eg: TAxis. Reason: this will make ZAxes and titles clickable. 2.12 6 Jun 2001: DrawWalls for better 3D rendition. Fixed minor TickDirection bug in TAxisEditorForm. Fixed minor bug in rendition of labels on X Axis (Up not done properly). 2.11 5 Jun 2001: Much behind-the-scenes work on Linux: printing, jumping to web pages, mailing, and helping. Pity none of it works yet. 2.10 2 Jun 2001: Created 3DColumn plot type, implemented its TSeriesList.Draw method, modified TPlotPropertyEditorForm to manage it. Added ZLength property to TPlotPropertyEditorForm. 2.09 30 May 2001: Created Right Click and Drag popup menu - our first "gesture". Revised handling of its menuitems OnClick events and MouseUp methods. Added TDBPlot to BCB project - but something is wrong ! 2.08 29 May 2001: renamed Zoom.pas to PlotZoom.pas to avoid namespace clash with RALib !!! Fixed scaling bugs with 3D and Bubble plots. Added Linearize and Zero functions. 2.07 16 May 2001: renamed ToolEdit.pas to Plottooledit.pas to avoid namespace clash with RXLib Reworked autoscaling of axes. Fixed some TDBPlot issues (FReadOnly replaced by FDataLink.ReadOnly), but still not happy with it. 2.06 16 May 2001: Made many changes to graphics handling. There are now Bitmap, Drawing, GIF and Png properties. Saving or copying these now becomes a one-liner. Great for all those web developers out there. Massive amount of work on the help file to bring it up to date. Create ActiveX control. 2.05 16 May 2001: Changed from Jack Goman's pngunit to Eric Engler's Pngimage to enable a Png property under Windows. 2.04 16 May 2001: Made Draw public 2.03 16 May 2001: Add Drawing property 2.02 11 May 2001: Add Png property 2.01 11 May 2001: Get SaveAsPNG working under Kylix with Jon Shemitz's help. 2.00 10 May 2001: Bump up version number and release. 1.81 9 May 2001: Added TDBPlot projects to Kylix project group 1.80 8 May 2001: Added XYFastAt property 1.79 7 May 2001: Modified TSeries.Draw to use a different algorithm if NoPts > 10000. 1.78 6 May 2001: Rewrote loading of binary files to handle XText data. 1.77 5 May 2001: Fixed bugs in reading of XText data from text files. 1.76 4 May 2001: Fixed bugs in display of XText data in Axis. 1.75 3 May 2001: Modified TCustomPlot.SetPlotMenu and TCustomPlot.SetPlotToolBar to correctly apply the Popupoptions to TPlotMenu and TPlotToolBar; also fixed bugs in the ApplyOptions methods of those two components. 1.74 2 May 2001: Added "ApplyOptions" to TPlotMenu. 1.73 2 May 2001: Added the CanConfigure property to TPlotToolBar 1.72 2 May 2001: Removed TPlotToolBar property editor - Visibility of buttons now set by TPlot.PopupOptions. 1.71 1 May 2001: Fixed numerous features/bugs in TPlotToolBar under Kylix, eg: "Buttons" vs "Controls", different indexing. 1.70 30 Apr 2001: Re-worked file and stream loading and saving, moving most of it into TSeriesList. 1.69 29 Apr 2001: added PageButtons in Zoomed mode. 1.68 26 Apr 2001: Re-build BCB3 projects, and fix buglets associated with BCB compatibility: TPlotToolBar in particular. 1.67 26 Apr 2001: Change EditPoint to be D1 compatible. 1.66 25 Apr 2001: Re-work Parser, ParseData and ConvertTextData to handle matrix of Z values (Eugene Parsons). 1.65 25 Apr 2001: Total re-write of TSeries.DrawPie. Ain't it pretty now ? 1.64 25 Apr 2001: Modify ContourDetail to add cdVHigh, then bump all up by one, then make cdLow rectangles, cdMedium triangles, cdHigh points, cdVHigh filled. 1.63 22 Apr 2001: Added ZLength property, other fixes. 1.62 19 Apr 2001: Finally got TPlotToolBar working properly ! 1.61 19 Apr 2001: Enabled multiline Title.Captions. 1.60 19 Apr 2001: Fixed Columnses visibility buglet. 1.59 19 Apr 2001: Moved Legend drawing code into TLegend, and added check marks. 1.58 19 Apr 2001: Implemented the lfSI format for output (M, K, etc) 1.57 19 Apr 2001: Fixed fiendish little bug that causes repeated redraw of plots on file opening. 1.56 18 Apr 2001: Added XTEXT support to text file IO; Problem: Binary file IO ? 1.55 18 Apr 2001: Added MultiJoin property to better manage High-Low-open-Close plots. 1.54 18 Apr 2001: Augmented the Import Parser to cope with XYZ triple text files. 1.53 16 Apr 2001: Fixed bugs in DataEditor. 1.52 16 Apr 2001: Fixed "ZoomOutClick" bugs. 1.51 16 Apr 2001: Implemented "NewSeriesClick". 1.50 11 Apr 2001: Added ptBubble PlotType, and all associated methods and variables. 1.49 9 Apr 2001: Fixed/upgraded Parser, ConvertTextData and ParseData to import 3D data. 1.48 4 Apr 2001: Implemented Functions using TParser10- eat your heart out David B ! 1.47 3 Apr 2001: Routed all dialog geometries into Misc.SetDialogGeometry() 1.46 2 Apr 2001: ... then fixed Linux color bug in the text output on Pie graphs 1.45 1 Apr 2001: Finally nailed correct positioning of the text output on Pie graphs 1.44 29 Mar 2001: Much work fixing Linux bugs: LoadStr for string resources (menus), loading bitmaps (many thanks to Stephan Hoffmeister), TCanvas.Pie, etc. 1.43 28 Mar 2001: Major overhaul of dialogs: add "Apply" button and code to most. 1.42 27 Mar 2001: Get property editors to compile. "About" works once, but then Kylix freezes whenever TPlot is installed. 1.41 27 Mar 2001: Fix Polygon issue, somehow. And other Kylix buglets. 1.40 23 Mar 2001: Kylix finally arrives. Fix many issues, but not all. See "Traps" below. 1.39 15 Mar 2001: Changed licensing from MPL to QPL. In practise, this only affects commercial developers. 1.38 15 Mar 2001: Added TPlotComponentEditor to Plot_reg.pas to give design-time menus. 1.37 15 Mar 2001: Revise TSeries.DrawPie to add labels. 1.36 14 Mar 2001: Revise TSeries.XStringData extensively. 1.35 12 Mar 2001: Surface many TSeriesList methods in TPlot for TDBPlot to override. 1.34 7 Mar 2001: Revise the OnStyleChange/OnDataChange events in TSeries and TSeriesList 1.33 2 Mar 2001: Begin work on TDBPlot. 1.32 2 Mar 2001: We have a renaming frenzy, to make the purpose of the major series manipulation functions more obvious. Add -> AddSeries AddExternal -> AddExternalData AddInternal -> AddInternalData AddSlice -> AddData My apologies to all existing users. This will break existing code, but fixing it should be trivial. 1.31 1 Mar 2001: Rename TSymbol elements to have two leading characters: fixes RTTI bug. 1.30 1 Mar 2001: Replace color selection combo boxes with TColorEdit. 1.29 1 Mar 2001: Replace most combobox items with RTTI generated strings. 1.28 28 Feb 2001: Add Grids due to popular demand (Yuck !). 1.27 28 Feb 2001: Add the TAxis.StepStart property. Add a scale to ptContour plots. 1.26 27 Feb 2001: Fix bugs in TSeries.GetNearestPieSlice, and refine TSeries.Outline. 1.25 26 Feb 2001: Column, Stacked Column and 100% Column plots added to GetTheClickedObject (and TSeriesList.GetNearestPoint). Contemplate releasing next version as 2.0: reason: TPlot now has 10 different plot types, instead of 1 ! 1.24 22 Feb 2001: Refine DrawContour. Implement true WMF and printing. Now looks beautiful ! Add usage hints to PropertiesEdit dialog box. 1.23 21 Feb 2001: Pie plots added to GetTheClickedObject 1.22 20 Feb 2001: Add OnStyleChange event. Route all "Refresh"s through DoStyleChange. Complete first go at DrawContour. Add ContourDetail property. 1.21 1 Feb 2001: Add ZAngle, ZLink properties. Rename pSeries.pas unit to Data.pas, SerList.pas to Datalist.pas 1.20 14 Jan 2001: Modify TSeriesList to add ZData (for 3D) Create TAngleAxis class, and implement a ZAxis for 3D. Add the ptError, ptPie, ptPolar and pt3DWire PlotTypes. Create the NoMath unit, move some stuff into it from Misc. 1.19 9 Dec 2000: Modify movement of Note Pointer: place before selection of series, and postpend to movement of the Note text. 1.18 8 Dec 2000: Refine SetPlotType so that each plot type initially displays its features better. 1.17 6 Dec 2000: Add ptStack and ptNormStack PlotTypes types, and implement their drawing routines. 1.16 1 Dec 2000: Add ColumnGap property. 1.15 16 Nov 2000: Implement TNote functionality: NewNote, DeleteNote, etc. 1.14 13 Nov 2000: Add Misc.TextOutVertical, and employ in various locations; benefit: will work under Linux (look into native X calls later). 1.13 7 Nov 2000: Add sLeftDash and sRightDash to TSymbol, and to TSeries.DrawSymbol. 1.12 1 Nov 2000: Create TNote sub-component. 1.11 16 Oct 2000: Add "Compress Series" and "Compress All Series", and associated CompressSeriesClick and CompressAllSeriesClick. Tidied up: Contract originally compressed; now it really does contract. Remove ability to clone X Axis. Add LabelText to Axes, mainly for Column usage. Fix Instruction property bug in IDE. 1.10 9 Oct 2000: Add and integrate Column capability with TPlotType type and PlotType properties and TSeriesList.DrawColumns. Consolidate some TCustomPlot.xxxClick methods. **************************** *** Borland BC++ support *** **************************** 1.02 25 Sept 2000: add and integrate High-Low-Close capability with TSeriesList.DrawMultiple and TSeriesList.DrawHistoryMultiple; Hide menu visibility routine from D1 to avoid 64K problems. 1.01 21 Sept 2000: fix FontWidth bug in TAxis.Draw add TPlotType type, add PlotType and Multiplicity properties add LabelText property to TAxis (for columns) 18 Sept 2000: delete PlotList.pas (replaced by SerList.pas); remove GifPng from Plot dpks; re-create saved files. 1.00 13 Sept 2000: Release version 1.00