Hi,
I'm having a problem with printing charts including legends, using TeeChart ActiveX version 6.0.0.4.
I have positioned the legend top-right. Left to the legend there is some header information. The chart is drawn below it. When I try printing the chart, the header information and the chart are printed, but not the legend. By the way, I'm positioning the header by using the chartwidth in combination with the legendwidth.
Am I doing something wrong? As far as I can see, the legend has to be part of the printjob, so I don't understand why it's not printed.
Thanks in advance,
Derk Lennips
Printing chart with legend
Hi Derk,
The problem is that all custom positioned object (rectangles, text, series marks) use screen pixels as coordinates. While this is fine for the screenit does not work for a printer. The reason is that when you print, TeeChart will internally change the chart size so that it fits in specified printer. Canvas region. The result is that the Chart size will change but the custom positioned items "positions" on the printer canvas will remain the same (in screen pixel coordinates). This will result in custom items being drawn in the wrong place.
To solve this :
1. Make sure these objects are all placed relative to non-Canvas TChart objects (Axes, Headers, Series Points etc.) rather than in absolute pixel values.
2. To see this work please create an .exe file from your VB project and print from there.
A simple example printing custom Annotation tools could be the following :
The problem is that all custom positioned object (rectangles, text, series marks) use screen pixels as coordinates. While this is fine for the screenit does not work for a printer. The reason is that when you print, TeeChart will internally change the chart size so that it fits in specified printer. Canvas region. The result is that the Chart size will change but the custom positioned items "positions" on the printer canvas will remain the same (in screen pixel coordinates). This will result in custom items being drawn in the wrong place.
To solve this :
1. Make sure these objects are all placed relative to non-Canvas TChart objects (Axes, Headers, Series Points etc.) rather than in absolute pixel values.
2. To see this work please create an .exe file from your VB project and print from there.
A simple example printing custom Annotation tools could be the following :
Code: Select all
Private Sub Command1_Click()
TChart1.Printer.ShowPreview
End Sub
Private Sub Form_Load()
With TChart1
.AddSeries scLine
.Series(0).FillSampleValues 10
.Tools.Add tcAnnotate
With .Tools.Items(0).asAnnotation
.Text = "HELLO"
End With
End With
End Sub
Private Sub TChart1_OnBeforeDrawSeries()
With TChart1
With .Tools.Items(0).asAnnotation
.Shape.CustomPosition = True
.Shape.Left = TChart1.Axis.Left.Position - 30
.Shape.Top = TChart1.Axis.Top.Position - 30
End With
End With
End Sub
Pep Jorge
http://support.steema.com
http://support.steema.com
Ok, thanks.
Didn't get it work yet, but i've decided to not use the TeeChart's print function anyway. It happens to be that lineseries with linestyle "dash-dot" are not printed at all.
By the way, I believe that printing the legend at a custom position should not be my problem. I'd say that the legend is an object of TeeChart. Properties regarding legendposition are set by me, and then it's up to TeeChart to calculate the correct position for the printercanvas. That's it in my opinion anyway.
I'm now going to export charts to a bitmap, which I then print with my own functionallity. I'm afraid that it's the only way to print correctly from TeeChart.
Derk Lennips
Didn't get it work yet, but i've decided to not use the TeeChart's print function anyway. It happens to be that lineseries with linestyle "dash-dot" are not printed at all.
By the way, I believe that printing the legend at a custom position should not be my problem. I'd say that the legend is an object of TeeChart. Properties regarding legendposition are set by me, and then it's up to TeeChart to calculate the correct position for the printercanvas. That's it in my opinion anyway.
I'm now going to export charts to a bitmap, which I then print with my own functionallity. I'm afraid that it's the only way to print correctly from TeeChart.
Derk Lennips