Page 1 of 1

gantt verticalsize

Posted: Wed May 05, 2010 1:23 pm
by 9527827
Hi
I am using the gantt chart and would like the verticalheight to be just short of full available height. In other words if the available height on the page was 100 and I had 10 gantts in the height I would like to set it to 9. What I cant find out is what the available viewing area is after the axis labels and titles are taken into account. I have tried CalcYSizeValue(0.5) as well but this seems to change each time. I want to adjust the height after the chart is complete. Using Visual Foxpro 9
Allen

Re: gantt verticalsize

Posted: Thu May 06, 2010 9:04 am
by narcis
Hi Allen,

I'm not familiar with Visual Fox Pro so I have made an example in Visual Basic 6. Basically, what you need to do is calculating ChartRect area after the chart has been plotted:

Code: Select all

Private Sub Form_Load()
    TChart1.Aspect.View3D = False
    TChart1.AddSeries scGantt
    TChart1.Series(0).FillSampleValues 10
    TChart1.Environment.InternalRepaint
End Sub

Private Sub TChart1_OnAfterDraw()
    With TChart1
        ChartRectHeight = .Axis.Left.IEndPos - .Axis.Left.IStartPos
        .Series(0).asGantt.Pointer.VerticalSize = (ChartRectHeight / .Series(0).Count) / 2
    End With
End Sub

Re: gantt verticalsize

Posted: Thu May 06, 2010 7:43 pm
by 9527827
That seems not to work for me. I checked the result and the IEndPos and IStartPos were rather small. Because I know I had 12 gantts heigh I used 12 as the divide but the result was small gantt bars.
Im using a ganntt chart to display items in time. It could be more than one bar per line. I also use two gantt series because I need labels I cant do with the single gantt. I say this because maybe there is a reason there that its not working right.
I cant send an example either as its part of a large program
I noticed that OnAfterDraw also works after each bar, or seems to anyway.
Allen

Re: gantt verticalsize

Posted: Fri May 07, 2010 2:08 pm
by narcis
Hi Allen,

Have you tried doing a simple application just doing what I posted in my previous reply? Does this work fine at your end?

Please notice TChart1.Environment.InternalRepaint call. This is to force the chart to be painted internally so that axes have valid values when getting to the OnAfterDraw event. Have you tried this in your application?

Thanks in advance.

Re: gantt verticalsize

Posted: Sun May 09, 2010 12:50 pm
by 9527827
I have made a simple two page pageframe with V7 and V8 of the activex version. Identical code in the init to make a gantt with 10 bars and call the internalrepaint
I put a timer on the form and an on key to enable it making it self disabled. The timer had the code above actioned on both charts with a message of the rect height reported by the code.
V8 reported a height of 301 and proceeded to make the verticalheight of the bars correct. V7 reported a rect height of 26 and the height was small.
It seems V7 has something different. My problem is I have V7 out in the field and would rather not have to update those.
Is there a setting I have missed maybe the way teechart reports the sizes?
Thanks
Allen

Re: gantt verticalsize

Posted: Mon May 10, 2010 11:07 am
by narcis
Hi Allen,
Is there a setting I have missed maybe the way teechart reports the sizes?
I don't think it should be different. Does the simple example I posted work fine in v7? If it works fine but your project doesn't could you please attach a simple example project we can run "as-is" to reproduce the problem here?

Thanks in advance.