Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Configuración tChart (https://www.clubdelphi.com/foros/showthread.php?t=83166)

newtron 17-05-2013 20:18:12

Configuración tChart
 
Hola a tod@s.

Estoy haciendo un gráfico tonto con tChart y dos series comparativas. Tengo el problema de que los valores de las series a veces se solapan. ¿Hay forma de evitar esto?, ¿se puede pasar el valor de una de las series abajo por ejemplo?, ¿alguna idea?.

Ejemplo:



Gracias y un saludo

ecfisa 18-05-2013 01:39:19

Hola mi poliándrico amigo :)

A ver si te sirve de esta manera... (de todos modos sé que podrás mejorarlo ;))

Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
var
  i : Integer;
  P : TPoint;
begin
  // Quitar líneas
  Series1.Marks.Arrow.Visible := False;
  Series2.Marks.Arrow.Visible := False;

  //Colores de marcas
  Series1.Marks.BackColor  := Chart1.Series[0].SeriesColor;
  Series1.Marks.Font.Color := clWhite;
  Series2.Marks.BackColor  := Chart1.Series[1].SeriesColor;
  Series2.Marks.Font.Color := clWhite;

  // Cargar algunos valores
  for i:= 1 to 10 do
  begin
    Series1.Add(i*100,IntToStr(i*100),clRed);
    Series2.Add(i*100,IntToStr(i*100),clGreen);
  end;

  // Situar marcas
  Chart1.Draw(Canvas,Series1.BarBounds);
  for i:= 0 to Series1.Count-1 do
  begin
    Series1.Marks.Positions.Position[i].Custom := True;
    P.X := Series2.Marks.Positions.Position[i].LeftTop.X;
    P.Y := Series2.Marks.Positions.Position[i].LeftTop.Y;
    P.X := P.X - Round(P.X * 0.12);
    P.Y := P.Y - Round(P.Y * 0.12);
    Series1.Marks.Positions.Position[i].LeftTop := P;
  end;
  Series1.Repaint;
end;
Con este efecto:



Saludos :)

newtron 18-05-2013 10:12:33

Amigo ecfisa.

No sabía que se podían modificar las posiciones de las etiquetas esas, con esta idea ya lo retoco yo a mi gusto.

Mil gracias como siempre. Llégate a tu bar habitual y te tomas un mate a mi cuenta, dile al camarero que ya iré yo a pagarlo :D.

newtron 18-05-2013 12:27:01

Catchis amigo ecfisa, te voy a molestar de nuevo con este tema.

He implementado tu código al mío para tocar la posición de la etiquetas de la serie1 y resulta que me las pone todas en la parte superior izquierda de la ventana. Lo que me resulta extraño es que si consulto el valor de la posición de los valores

Código Delphi [-]
    P.X := Series2.Marks.Positions.Position[i].LeftTop.X;
    P.Y := Series2.Marks.Positions.Position[i].LeftTop.Y;

salen valores negativos y eso me despista un poco.

ahora mismo me sale así:


nlsgarcia 19-05-2013 00:16:22

newtron,

Cita:

Empezado por newtron
...implementado tu código...resulta que me las pone todas en la parte superior izquierda de la ventana...la posición...salen valores negativos...

Te comento:

1- El código del Msg #2 funciona correctamente en Delphi 7 y Delphi 2006 ambos con TeeChart Standard 4.04

2- El código del Msg #2 presenta valores negativos en las posiciones de las marcas en Delphi 2010 con TeeChart Standard 8.05 lo cual requiere:

Sustituir:
Código Delphi [-]
 Chart1.Draw(Canvas,Series1.BarBounds);
Por:
Código Delphi [-]
 Chart1.Draw;
Con este único cambio el código del Msg #2 funciona correctamente en Delphi 2010 como se evidencia en la siguiente imagen:



Pregunto : ¿Cual es tu versión de Delphi y TeeChart?, quizás te funcione con el cambio sugerido en el punto 2.

Espero sea útil :)

Nelson.

newtron 19-05-2013 09:52:24

Nelson,

Has dado en el clavo. Yo uso delphi 2007, he hecho el cambio que me comentas y funciona correctamente.

Gracias por tu aportación. (dejaremos que el amigo ecfisa se tome su mate tranquilamente :D).

Saludos

ecfisa 19-05-2013 10:02:30

Hola.

Por suerte vino Nelson a echar un poco de luz al asunto... por que al tener sólo Delphi 7 no hubiera podido dar una respuesta al problema.

Si intento compilar con:
Código Delphi [-]
  Chart1.Draw;
Obtengo un bonito "Not enough actual parameters". (muy bueno saberlo para cuando pueda saltar a otra versión... :rolleyes:)

Saludos :)

nlsgarcia 19-05-2013 21:02:03

ecfisa,

Cita:

Empezado por ecfisa
...muy bueno saberlo para cuando pueda saltar a otra versión...

Delphi 7 es una de las mejores y más usadas versiones de Delphi en toda su historia y me pregunto lo siguiente: ¿Sería viable crear un foro donde se agrupen las diferencias encontradas al pasar de una versión a otra y que sirva como punto central de información cuando se presenten casos como el mencionado en el Msg #5?.

En general se sabe que al pasar de una versión a otra pueden encontrarse diferencias que obligan a hacer cambios, pero si estos ya estuvieran tipificados y agrupados seria más fluida la transición entre versiones, en particular de Delphi 7 dado que es una referencia en la Comunidad Delphi.

Personalmente me gustaría que Embarcadero incluyera una directiva o opción de compatibilidad con Delphi 7 (Por ser una referencia) lo cual permitiría migrar los proyectos de forma rápida a nuevas versiones y con el tiempo incluir las mejoras de las mismas.

Espero sea útil :)

Nelson.


La franja horaria es GMT +2. Ahora son las 13:17:57.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi