Steema TeeChart Pro VCL/FMX Source Code v2023.38
TeeChart Pro charting component library offers hundreds of Graph styles in 2D and 3D for data visualization, 56 mathematical, statistical and financial Functions for you...
TeeChart Pro charting component library offers hundreds of Graph styles in 2D and 3D for data visualization, 56 mathematical, statistical and financial Functions for you to choose from together with an unlimited number of axes and 30 Palette components.
Full source code
100% TeeChart Pro VCL / FMX source code is available as an option. The TeeChart source code supports Embarcadero Windows IDEs (RAD Studio, Delphi and C++ Builder) and now includes native code FireMonkey support enabling you to use common sourcecode to compile your applications for Windows, Mac OS, iOS / iPhone and Android.
Fast speed and small memory size consumption
The Chart graphical code speaks directly to Windows GDI API. Data is stored in dynamic arrays that are very closely mapped to memory which makes access and modifying the arrays almost as fast as the computer processor. The code is streamlined as much as possible to increase internal speed, especially when re-drawing. Other rendering outputs are OpenGL (3D), SVG, DirectX, etc but they aren't as fast as plain old GDI for realtime charting.
Divided into several modules (units) to reduce executable size
A chart using the basic styles ( line, bar, area, pie, point ), has an executable size of only 190Kb. Packages (groups of units), are logically grouped depending on the category of each feature. Developers can create custom packages or .Net assemblies to group modules as per their own needs.
Easy to use at design and run-time
TeeChart includes powerful and complete editor dialogs, for almost every component and sub-component. These editors are available at design-time and also at run-time. The TeeCommander component (a toolbar with charting specific buttons) provides one-click access to TeeChart editors, print preview dialogs and common features.
Complete Object Oriented API
The architecture of TeeChart is fully Object Oriented. Almost everything is an object or belongs to an object class. Properties, methods and events follow a general, consistent style. Technically speaking, TeeChart Pro consists of 161 modules (units) and 90 form screens, totalling 798 object classes. Each class has properties that in many cases are other sub-classes, either from TeeChart API or from Embarcadero's VCL set of classes.
Huge documentation and examples
The help file and documentation include a reference guide, a user guide, demos with detailed "how to" explanations, end-user help and a comprehensive example project (with complete sources) that contains 376 forms. The TeeChart help file follows the look and rules of Embarcadero's help system and is completely integrated at design-time from the development IDE's. Pressing F1 gives context help for almost all screens and source code elements.
Translations into several languages
Available in 37 languages, translated dialogs and constants can be used both at design-time (if you recompile the packages or assemblies), and at run-time by just recompiling your application. Once your application is compiled, end-users can switch the language for TeeChart dialogs and constants at runtime, without needing any external file or dll, just a single call like - TeeSetSpanish();
Internal canvas classes (GDI and GDI+) have been modified extensively. The default graphic canvas for new charts added at design-time is now GDI+ (TGDIPlusCanvas class) instead of GDI (TTeeCanvas3D class).
Switching from one canvas to another can be done at design-time and run-time through the TChart editor dialog (3D -> Render tab), or manually by code:
uses TeeGDIPlus; Chart1.Canvas := TGDIPlusCanvas.Create
uses TeCanvas; Chart1.Canvas := TTeeCanvas3D.Create
An alternative is to use the TeeGDIPlus component:
TeeGDIPlus1.TeePanel := Chart1;
TeeGDIPlus1.Active := True;
Using the TeeGDIPlus component allows persisting settings, like antialiasing and default text quality.
GDI+ offers several features that cannot be done with GDI (or are done better):
Color alpha (transparency)
Any color (pen, font, gradient, brush, etc) is now treated as a proper 32bit color with RGB and Alpha components.
The only limitation is pseudo-colors can't be used (clBtnFace, clWindow, etc).
Setting a color alpha transparency can be done at design-time using the chart editor dialogs.
Using IDE Object Inspector is also possible, but in VCL there is a limitation that TColor is a signed integer, and so values greater than MaxInt (2^31-1) cannot be manually typed (the Object Inspector raises an exception).
Setting colors by code:
Chart1.Legend.Pen.Color := RGBA( 64,64,64, 128) ; // 128 = semi-transparent
GDI+ has line antialias, which produces much better looking charts, without jagged diagonal and curved lines and polygon boundaries.
There's a speed penalty when using antialias that is not a problem unless you're plotting many many points and/or performing animations.
If not using a TeeGDIPlus component, Antialiasing can be changed at runtime by code like:
TGDIPlusCanvas(Chart1.Canvas).AntiAlias := False
The base TTeePen class has a new Fill property (of type TTeeBrush) that is only functional when using the GDI+ canvas. Wide borders and lines (of width 2 or more) can now be filled with textures and gradients.
Series1.Pen.Fill.Gradient.Visible := True
The GDI+ canvas allows gradients with more than 3 colors.
The base TTeeGradient class has a new Colors collection property. Each color item in the collection has Offset and Transparency properties:
Chart1.Gradient.Colors.Add( 0.3, clGreen, 50) // 0.3 means 30%, 50% is transparency
GDI+ uses brush images to fill polygons, rectangles and rounded rectangles with better speed and output results than GDI.
Rotating, translating and scaling elements (like chart titles, legend, series, etc) are enabled using GDI+ transform methods.
When filling polygons with gradients or textures, or when drawing rounded-corner rectangles, clipping should be done manually in GDI (which is not 100% perfect), while in GDI+ this is done automatically and better.
In GDI canvas, "smooth" shadows are painted using an intermediary bitmap with a "blur" filter applied. This is a very slow operation, although the output is quite good.
In GDI+, there's another approach to draw smooth shadows that is way much faster with a little loss in quality. Shadows are done using gradients and transparency.
GDI+ speed penalty
There's one thing that is much faster to paint in GDI than GDI+: non-solid pen lines.
Due to this, a big decision has been taken: axis grid lines are now solid instead of dotted:
Chart1.Axes.Left.Grid.Style := psSolid;
Grid lines can easily be changed again to be non-solid, using the axis editor dialog or Object Inspector.
With all the new changes, the GDI+ canvas is now faster than GDI in many occasions, as soon you use any effect like transparency, gradient fills, or shadows.
GDI is still faster than GDI+ when you dont need antialiasing and any fancy effect, for example when plotting FastLine or Surface series with many many points, but the difference between them is now much smaller, and you can always set back to GDI canvas.
As FireMonkey is already using GDI+ or Direct2D in Windows (and Quartz/OpenGL and the new GPU canvas for Mac OSX and iOS), the above list of GDI+ advantages for VCL are also valid for FireMonkey.
New editor dialog for j@vascript exporting format.
VCL and Firemonkey:
TTeeGradient Colors collection property
Gradients can be now configured to use multiple colors in FireMonkey and also in VCL with GDI+ canvas (the limit was three colors maximum with VCL GDI).
Each color item has Color, Offset and Transparency properties.
The Colors property is also used when exporting charts to j@vascript HTML5 and other formats.
MarksTip tool now exported to SVG.
In regular or Irregular ColorGrid series, the axes scales aren’t calculated
German localization s broken. I dont know how to fix this myself. CHeck the attached screenshots
Marks.OnTop not persistent
onshowHint does not work
Clean warnings with Delphi 10.1 Berlin 64bit
Export to Metafile doesn't work on FMX
Shape corners not being serialized
EInvalidPointer "Invalid pointer operation" exception when trying to remove a custom label from an axis
Export SubTitle and SubFooter to jаvascript
Export to jаvascript changes axis datetime format
XValues change when exporting to jаvascript
Assigning TAxisItems Automatic property
Images with transparency not drawn correctly in Pointers when not Orthogonal chart
Some empty components in Shape series editor
ErrorPointSeries drawing wrong errors in logarithmic axes
Tools and Tools.Gallery editors broken in Alexandria
Dragging a component over a chart doesn't show the icon of the operation set at DragOver event
Changing Marks angle individually does nothing
Assign chart doesn't copy individual axis items format
TChart's SeriesUp changes TChartAxis' IsDateTime result
Export MarksTipTool to SVG
Legend checkboxes not scaling correctly when Display is set to 150% or more