NO HAY MANERA

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

NO HAY MANERA

Post by JOMEGO » Tue Mar 04, 2008 10:31 pm

NARCIS NO CONSIGO LO DE DIBUJAR LA LINEA CON EL TEXTO ENCIMA Y QUE ESTE TEXTO SIGA LA LINEA POR EL AXI.

EL TIPO DE GRAFICO ES CANDESTICK

A VER SI ES POSIBLE QUE ME MANDES UN EJEMPLO

ACCION A REALIZAR:

DIBUJAR UNA LINEA Y PONER ENCIMA UN TEXTO "Soporte"

Pq yo no lo consigo..

Un saludo
JORDI

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

Post by Yeray » Wed Mar 05, 2008 10:25 am

Hola Jordi,

Primero un par de consideraciones que te agradeceriamos que tuvieras en cuenta, por la comodidad de todos.
-Por favor, publica las respuestas referentes al mismo problema como "reply" dentro del mismo hilo del foro. Abrir diferentes hilos para una misma pregunta no nos ayuda a ver el progreso del tema.
-Intenta escribir utilizando menos las mayúsculas. Como ya debes saber, se consideran gritos. Y no creemos, ni nos gustaria, haberte hecho enfadar...

Bueno, al tema. Si he entendido bien, en tu gráfico, deseas que, haciendo click sobre él, te aparezca una linea que vaya a un texto donde ponga "Soporte Y" (siendo Y el valor correspondiente al eje). Y deseas que al hacer Scroll con el botón derecho del mouse, todo se mueva.
Bien, dices que has dibujado la linea y que ahora tienes problemas con el texto. Pues yo te sugeriria que utilizaras la Annotation Tool que creo que seria la herramienta más acorde a lo que (creo) intentas hacer.

Aqui te pongo el ejemplo de cómo lo haria yo. Calculo la posicion de las annotations haciendo la diferencia entre las X anteriores y las que tiene el mouse en cada momento y de la misma forma con las Y. Es decir, que en OnMouseDown me guardo la posicion "vieja" y en OnMouseMove guardo la posicion "nueva" y la diferencia entre ambas será lo que habrá que mover cada annotation. Ten en cuenta que ésta forma de calcular no funcionaria bien al hacer zoom o unzoom, y por eso lo desactivo. Porque utilizar el desplazamiento del mouse como referencia, no seria la forma de atacar el problema si quisieras utilizar el zoom. Para ello, deberias guardar la posicion de cada annotation respecto a los ejes en una variable para cada eje y annotation, con lo que el gasto extra de memória seria proporcional al numero de annotations que permitas.

Code: Select all

Dim XDown, YDown, XActual, YActual As Double
Private Sub Form_Load()
  With TChart1
    .Aspect.View3D = False
    .Zoom.Enable = False
    .AddSeries scCandle
    .Series(0).FillSampleValues 10
    .Legend.Visible = 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)
  XDown = X
  YDown = Y
End Sub

Private Sub TChart1_OnMouseMove(ByVal Shift As TeeChart.EShiftState, ByVal X As Long, ByVal Y As Long)
  XActual = X
  YActual = Y
End Sub

Private Sub TChart1_OnMouseUp(ByVal Button As TeeChart.EMouseButton, ByVal Shift As TeeChart.EShiftState, ByVal X As Long, ByVal Y As Long)
  If XDown = X And YDown = Y Then
    If Button = mbLeft Then
    With TChart1.Tools
      .Add tcAnnotate
      With .Items(.Count - 1).asAnnotation
        .Callout.Arrow.Visible = True
        .Callout.Arrow.Color = vbBlack
        .Callout.XPosition = X
        .Callout.YPosition = Y
        .Left = X - 200
        .Top = Y - ((.Bounds.Bottom - .Bounds.Top) / 2)
        .Text = "Soporte " + Str$(FormatNumber(TChart1.Axis.Left.CalcPosPoint(Y), 2))
      End With
    End With
  End If
  End If
End Sub

Private Sub TChart1_OnScroll()
Dim i As Integer
  With TChart1.Tools
    For i = 0 To .Count - 1
      With .Items(i).asAnnotation
        .Left = .Left + (XActual - XDown)
        .Top = .Top + (YActual - YDown)
        .Callout.XPosition = .Callout.XPosition + (XActual - XDown)
        .Callout.YPosition = .Callout.YPosition + (YActual - YDown)
      End With
    Next i
    
    XDown = XActual
    YDown = YActual
  End With
End Sub
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