Page 1 of 1

[ANSWERED] scroll in chart scline, with multiple axes

Posted: Tue Mar 26, 2013 8:04 pm
by 16665441
look at the first attachment,
I have 7 scline in a chart with multiple axes on the Y axis
Scline one is attached to the first custom axis (0.04 to 0.4)
the other 6 are attached to the second custom axis (0 to 200)
when I scroll up the second chart (0-200), the scline reach the first chart (see the second attachment)
the scline should not exceed the limits of their axis, they must disappear.

Note: this chart has 2 axis customs. On axis Y.
Has No custom chart this axis is absice.

How to scline that remain within the limits of their axes.

Re: scroll in chart scline, with multiple axes

Posted: Wed Mar 27, 2013 12:33 pm
by yeray
Hello,

It looks as what is shown in the "Opaque Zones" example in the features demo.
Find in at "All Features\Welcome !\Axes\Opaque zones".

Re: scroll in chart scline, with multiple axes

Posted: Wed Mar 27, 2013 2:39 pm
by 16665441
HELLO
I am a new user
I do not know where is the demo
"Opaque areas" example in the demo features.
Find in at "All Features \ Welcome! \ Axes \ Opaque areas".
What is "All Features \ Welcome! \ Axes \ Opaque areas"

Re: scroll in chart scline, with multiple axes

Posted: Wed Mar 27, 2013 3:24 pm
by 10050769
Hello jika

You must open the project TeeChart Activex Pro V2012 you will find as shortcut in the Program Group of start menu or in a similar path as next C:\Program Files\Steema Software\TeeChart Pro v2012 ActiveX Control\Examples\Visual Basic\TeeChartAXV2012Demo and run the TeeChartAxV2012.exe. After you execute the demo please go to tab All Features \ Welcome! \ Axes \ Opaque areas. See next image to understand good my indications:
OpaqueZonesExample.jpg
OpaqueZonesExample.jpg (205.36 KiB) Viewed 11495 times
I hope will helps.

Thanks,

Re: scroll in chart scline, with multiple axes

Posted: Thu Mar 28, 2013 2:34 pm
by 16665441
Thank you very much.
but is it possible to scroll in one or other of the chart. I do not want to scroll all the chart at the same time
i have a chart with one main axis
and one custom axis
thank you

Re: scroll in chart scline, with multiple axes

Posted: Tue Apr 02, 2013 10:44 am
by yeray
Hello,

To scroll/zoom each zone individually you should disable the default scroll/zoom feature and implement your version of it.
For example, this seems to work in the opaque zones example mentioned above:

Code: Select all

Dim MouseDownX, MouseDownY, custAxisIndex As Integer
Dim inLeft As Boolean

Private Sub Form_Load()
  With TChart1    
    .Zoom.Enable = False
    .Scroll.Enable = pmNone
    MouseDownX = -1
    MouseDownY = -1
    custAxisIndex = -1
    inLeft = False
  End With
End Sub

Private Sub TChart1_OnMouseDown(ByVal Button As TeeChart.EMouseButton, ByVal Shift As TeeChart.EShiftState, ByVal X As Long, ByVal Y As Long)
  If Button = mbRight And _
     X > TChart1.Axis.Bottom.IStartPos And X < TChart1.Axis.Bottom.IEndPos And _
     Y > TChart1.GetChartRect.Top And Y < TChart1.GetChartRect.Bottom Then
    Dim i As Integer
    For i = 0 To TChart1.Axis.CustomCount - 1
      If Y > TChart1.Axis.Custom(i).IStartPos And Y < TChart1.Axis.Custom(i).IEndPos Then
        custAxisIndex = i
        Exit For
      End If
    Next i
    
    If custAxisIndex = -1 And _
       Y > TChart1.Axis.Left.IStartPos And Y < TChart1.Axis.Left.IEndPos Then
      inLeft = True
    End If
    
    MouseDownX = X
    MouseDownY = Y
  End If
End Sub

Private Sub TChart1_OnMouseMove(ByVal Shift As TeeChart.EShiftState, ByVal X As Long, ByVal Y As Long)
  If MouseDownX <> -1 And MouseDownY <> -1 Then
    If custAxisIndex > -1 Then
      With TChart1.Axis.Custom(custAxisIndex)
        tmpIncr = .CalcPosPoint(MouseDownY - Y) - .CalcPosPoint(0)
        .SetMinMax .Minimum + tmpIncr, .Maximum + tmpIncr
        MouseDownY = Y
      End With
    Else
      If inLeft Then
        With TChart1.Axis.Left
          tmpIncr = .CalcPosPoint(MouseDownY - Y) - .CalcPosPoint(0)
          .SetMinMax .Minimum + tmpIncr, .Maximum + tmpIncr
          MouseDownY = Y
        End With
      End If
    End If
    
    With TChart1.Axis.Bottom
      tmpIncr = .CalcPosPoint(MouseDownX - X) - .CalcPosPoint(0)
      .SetMinMax .Minimum + tmpIncr, .Maximum + tmpIncr
      MouseDownX = X
    End With
  End If
End Sub

Private Sub TChart1_OnMouseUp(ByVal Button As TeeChart.EMouseButton, ByVal Shift As TeeChart.EShiftState, ByVal X As Long, ByVal Y As Long)
  MouseDownX = -1
  MouseDownY = -1
  custAxisIndex = -1
  inLeft = False
End Sub