Hi,
using TeeChart ActiveX v7 (7.0.1.4), I am experiencing some unexpected behavior regarding what is exported from the TeeChart to .tee files (binary as well as text format).
We have defined our own custom palette for series colors, and we are applying the colors programmatically by calling both the CSeries::SetColor() and CPen1::SetColor() methods.
Given a chart containing two series, the first series is given an RGB value of 0 (i.e. totally black), while the second series is given an RGB value of 0xFF0000 (i.e. pure red).
When saving the chart to a .tee file, the file does not contain any color information for the first series (the black one). The second series, however, contains colorinformation in the line:
LinePen.Color = clRed
Now, going into the TeeChart configuration dialog, in the Series/Format pane, selecting the second series (the red one), I modify both the Border and Color attributes, giving them the same green color. When exporting the chart, the first series remains without color information, while the second series now has two color information entries:
SeriesColor = 8454016
LinePen.Color = 8454016
First question:
Is it right to assume that setting the "Border" attribute in the TeeChart configuration dialog is equivalent to the CPen1::SetColor() function call, and setting the "Color" attribute is equivalent to the CSeries::SetColor() function call?
Second question:
Is the fact, that the first series (the black) is not saved with color information, a design decision or a bug? In case of the former, is there any way we can force series to always export color information?
Properties saved in .tee files (ActiveX v7.0.1.4)
Properties saved in .tee files (ActiveX v7.0.1.4)
Best regards
Steffen Skov
Senior Consultant
SPT Group
Steffen Skov
Senior Consultant
SPT Group
-
- Site Admin
- Posts: 14730
- Joined: Mon Jun 09, 2003 4:00 am
- Location: Banyoles, Catalonia
- Contact:
Hi Steffen,
A trick for saving border with black color could be setting it to RGB(1,0,0) instead of RGB(0,0,0) (clBlack).
Yes, that's right.First question:
Is it right to assume that setting the "Border" attribute in the TeeChart configuration dialog is equivalent to the CPen1::SetColor() function call, and setting the "Color" attribute is equivalent to the CSeries::SetColor() function call?
For the first series only SeriesColor is saved. LinePen color is not saved because black is the defaul color. However, if you modify first series colors you'll see them saved in the .tee file.Second question:
Is the fact, that the first series (the black) is not saved with color information, a design decision or a bug? In case of the former, is there any way we can force series to always export color information?
A trick for saving border with black color could be setting it to RGB(1,0,0) instead of RGB(0,0,0) (clBlack).
Best Regards,
Narcís Calvet / Development & Support Steema Software Avinguda Montilivi 33, 17003 Girona, Catalonia Tel: 34 972 218 797 http://www.steema.com |
Instructions - How to post in this forum |
Hi Narcís,
thank you for your swift reply.
I tested your trick concerning saving the border/pen color, and I do get the LinePen.Color entry in the .tee file for both series now.
Here comes another of my assumptions, which I would like to get confirmed: The reason why I do not get any SeriesColor entries in my .tee file (until I go into the configuration dialog and change the colors), is that by calling ApplyCustomPalette() with the same color entries, which we use in our calls to Series::SetColor(), the TeeChart considers these colors the default ones, and hence, do not save them.
I think I have found a bug in relation to this, though:
When we later load the .tee file (which now has no SeriesColor entries), the TeeChart will want to pick the default color for the series. However, it seems that instead of using the color palette provided by us through ApplyCustomPalette(), it uses its original default palette.
I will try to figure out a way of working around this problem, unless of course you can confirm this is a bug, and that it is (going to be) fixed in a newer version.
thank you for your swift reply.
I tested your trick concerning saving the border/pen color, and I do get the LinePen.Color entry in the .tee file for both series now.
After having looked closer into my code, it seems I have not been completely honest with you, regarding how we set the colors on our series. We are actually applying our custom palette to the chart by calling CTChart::ApplyCustomPalette(). Thus our Series::SetColor() calls are redundant.For the first series only SeriesColor is saved. LinePen color is not saved because black is the defaul color. However, if you modify first series colors you'll see them saved in the .tee file.
Here comes another of my assumptions, which I would like to get confirmed: The reason why I do not get any SeriesColor entries in my .tee file (until I go into the configuration dialog and change the colors), is that by calling ApplyCustomPalette() with the same color entries, which we use in our calls to Series::SetColor(), the TeeChart considers these colors the default ones, and hence, do not save them.
I think I have found a bug in relation to this, though:
When we later load the .tee file (which now has no SeriesColor entries), the TeeChart will want to pick the default color for the series. However, it seems that instead of using the color palette provided by us through ApplyCustomPalette(), it uses its original default palette.
I will try to figure out a way of working around this problem, unless of course you can confirm this is a bug, and that it is (going to be) fixed in a newer version.
Best regards
Steffen Skov
Senior Consultant
SPT Group
Steffen Skov
Senior Consultant
SPT Group
Hi Steffen,
true, applying custom color palette is not saved into the .tee file. I've added issue on our defect/wish list to be considered for the next releases.
In meantime a workaround would be to save it manually (the colors or the array) when the export is done and reload them when loadFromFile is called.
true, applying custom color palette is not saved into the .tee file. I've added issue on our defect/wish list to be considered for the next releases.
In meantime a workaround would be to save it manually (the colors or the array) when the export is done and reload them when loadFromFile is called.
Pep Jorge
http://support.steema.com
http://support.steema.com
Hi Pep,
thank you for your reply.
The workaround you suggest is exactly what I have implemented. However, while implementing it, it crossed my mind that another workaround might be to temporarily apply the default TeeChart palette before exporting. This way the colors not matching this would be saved nicely to the .tee file, and loaded equally successfully. This alternative would not require any additional data saving, thus possibly requiring less effort to implement.
I have not tested this, as I was almost finished implementing the first workaround. If the TeeChart replaces the actual series colors when applying a palette, this alternative workaround would not work anyway.
Just something for others to try out if anyone else runs into the same situation as me.
thank you for your reply.
The workaround you suggest is exactly what I have implemented. However, while implementing it, it crossed my mind that another workaround might be to temporarily apply the default TeeChart palette before exporting. This way the colors not matching this would be saved nicely to the .tee file, and loaded equally successfully. This alternative would not require any additional data saving, thus possibly requiring less effort to implement.
I have not tested this, as I was almost finished implementing the first workaround. If the TeeChart replaces the actual series colors when applying a palette, this alternative workaround would not work anyway.
Just something for others to try out if anyone else runs into the same situation as me.
Best regards
Steffen Skov
Senior Consultant
SPT Group
Steffen Skov
Senior Consultant
SPT Group