Como puedo marcar en el axis derecho el valor actual

TeeChart for ActiveX, COM and ASP
Post Reply
JOMEGO
Newbie
Newbie
Posts: 14
Joined: Fri Oct 26, 2007 12:00 am

Como puedo marcar en el axis derecho el valor actual

Post by JOMEGO » Mon Jun 16, 2008 10:22 am

Quisiera poder marcar en el axis derecho el valor actual en tiempo real que me esta entrando para grafiar... y quisiera poder tener un ticker o un cuadrado con el valor en el que se encuentra en el momento.. siguiento el axis... para poder informar del valor actual que se encuentra en tiempo real... pero no encuentro ninguna funcion para poder señalizarlo.

Os agradeceria que me pudierais decir como.

Gracias de antemano... y perdonar por ser tan pesado... pero no encuentro las funciones... y voy super retrasado en el projecto... y al final me cortaran la cabeza.

Se me olvidaba lo estoy programando en Visual Basic.

Un saludo

Jordi Mesa

Narcís
Site Admin
Site Admin
Posts: 14730
Joined: Mon Jun 09, 2003 4:00 am
Location: Banyoles, Catalonia
Contact:

Post by Narcís » Mon Jun 16, 2008 10:39 am

Hola Jordi,

La forma más fácil creo que és utilizar el evento OnGetSeriesPointerStyle:

Code: Select all

Private Sub Form_Load()
    TChart1.Aspect.View3D = False
    
    TChart1.AddSeries scLine
    
    TChart1.Series(0).asLine.Pointer.Visible = True
    TChart1.Series(0).VerticalAxis = aBothVertAxis
End Sub

Private Sub TChart1_OnGetSeriesPointerStyle(ByVal SeriesIndex As Long, ByVal ValueIndex As Long, AStyle As TeeChart.EPointerStyle)
    If ValueIndex = TChart1.Series(0).Count - 1 Then
        AStyle = psRectangle
    Else
        AStyle = psNothing
    End If
End Sub

Private Sub Timer1_Timer()
    TChart1.Series(0).Add Rnd, "", clTeeColor
End Sub
Otra alternative seria dibujar directamente sobre el canvas del gráfico:

Code: Select all

Private Sub Form_Load()
    TChart1.Aspect.View3D = False
    
    TChart1.AddSeries scLine
End Sub

Private Sub TChart1_OnAfterDraw()
    If TChart1.Series(0).Count > 0 Then
        W = 6
        Left = TChart1.Axis.Bottom.IEndPos - (W / 2)
        Top = TChart1.Series(0).CalcYPos(TChart1.Series(0).Count - 1) - (W / 2)
            
        TChart1.Canvas.Brush.Color = TChart1.Series(0).Color
        TChart1.Canvas.Rectangle Left, Top, Left + W, Top + W
    End If
End Sub

Private Sub Timer1_Timer()
    TChart1.Series(0).Add Rnd, "", clTeeColor
End Sub
Gracias de antemano... y perdonar por ser tan pesado... pero no encuentro las funciones... y voy super retrasado en el projecto... y al final me cortaran la cabeza.
Tranquilo! Suerte en tu proyecto, esperemos que esto no ocurra :wink: .
Best Regards,
Narcís Calvet / Development & Support
Steema Software
Avinguda Montilivi 33, 17003 Girona, Catalonia
Tel: 34 972 218 797
http://www.steema.com
Image Image Image Image Image Image
Instructions - How to post in this forum

JOMEGO
Newbie
Newbie
Posts: 14
Joined: Fri Oct 26, 2007 12:00 am

Me explique mal

Post by JOMEGO » Tue Jun 17, 2008 9:09 am

Me explique mal.... lo que yo quiero hacer es poder poner el valor actual del axis derecho dentro de un cuadrado, sobre el axis.

Esto es para indicar el valor de la bolsa en ese momento sobre el axis... Es el tipico cuadro amarillo que pone el valor actual... y que se mueve por el axis dependiendo del valor.

Gracias de antemano... y perdonar por no explicarme bien la primera vez

Jordi

Yeray
Site Admin
Site Admin
Posts: 9614
Joined: Tue Dec 05, 2006 12:00 am
Location: Girona, Catalonia
Contact:

Post by Yeray » Tue Jun 17, 2008 10:01 am

Hola Jordi,


Creo que lo que quieres hacer es algo asi:

Code: Select all

Private Sub Form_Load()
    Timer1.Enabled = True
    
    TChart1.Aspect.View3D = False
   
    TChart1.AddSeries scLine
    TChart1.Tools.Add tcAnnotate
   
    TChart1.Series(0).asLine.Pointer.Visible = True
    TChart1.Series(0).VerticalAxis = aBothVertAxis
    TChart1.Axis.Right.PositionUnits = puPixels
End Sub

Private Sub TChart1_OnGetSeriesPointerStyle(ByVal SeriesIndex As Long, ByVal ValueIndex As Long, AStyle As TeeChart.EPointerStyle)
    With TChart1.Tools.Items(0).asAnnotation
        If ValueIndex = TChart1.Series(0).Count - 1 Then
            .Text = Str$(TChart1.Series(0).YValues.Value(ValueIndex))
            .Top = TChart1.Series(0).CalcYPos(ValueIndex)
            .Left = TChart1.Axis.Right.Position
        End If
    End With
End Sub

Private Sub Timer1_Timer()
    TChart1.Series(0).Add Rnd, "", clTeeColor
End Sub
Ah, te recomiendo que mires las propiedades de la AnnotationTool para que veas las posibilidades que tiene (color, letra, flecha, cuadro,...)
Best Regards,
ImageYeray Alonso
Development & Support
Steema Software
Av. Montilivi 33, 17003 Girona, Catalonia (SP)
Image Image Image Image Image Image Please read our Bug Fixing Policy

Post Reply