Page 1 of 1

Como puedo marcar en el axis derecho el valor actual

Posted: Mon Jun 16, 2008 10:22 am
by 15047158
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

Posted: Mon Jun 16, 2008 10:39 am
by narcis
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: .

Me explique mal

Posted: Tue Jun 17, 2008 9:09 am
by 15047158
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

Posted: Tue Jun 17, 2008 10:01 am
by yeray
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,...)