Hola, tenemos Teechart v6 pro y nos sutge un problema:
creamos en ejecucion un numero de series con ejes hor y vert customizados, para ver superpuestas todas las series en un solo grafico,y a la vez creamos una annotation tool para visualizar un texto por cada serie dentro del espacio que ocupa cada una, un estilo al grafico de ejemplo de Inverline.
El problema es que no somos capaces de situar la annotation en cada punto para que nos quede por ejemplo x puntos por encima de cada eje horizontal de cada serie. como podriamos hacer?, si hago una prueba haciendolo en diseño me dunciona con istartpos pero en ejecucion no. el codigo es el siguiente :
var
xxx, eje,i:integer;
pPercent, sPos, ePos, nFactor: double;
anotacion : TannotationTool;
xx: double;
begin
nfactor := 100/ListaItemsGrafico.Count;
sPos:=100-nFactor;
EPos:=100;
pPercent := 0;
eje:=0;
// PARAMETRIZAR GRAFICO
Chart1.SeriesList.Clear;
for i:=0 to ListaItemsGrafico.Count-1 do begin
Chart1.AddSeries(TLineSeries.Create( Self ));
if Odd(i) then
Chart1.Series.Color := clGreen
else
Chart1.Series.Color := clBlue;
Chart1.Series.Title := ListaItemsGrafico.Strings;
Chart1.Series.XValues.DateTime := true;
Chart1.Series.XValues.Name := 'Fecha/Hora';
Chart1.Series.YValues.Name :=ListaDescItemsGrafico.Strings;
Chart1.Series.Identifier :=ListaUnidades.Strings;
// EJE VERTICAL CUSTOMIZADO
Chart1.CustomAxes.Add;
Chart1.CustomAxes[eje].LabelsFont.Color:= Chart1.Series[i].Color;
Chart1.CustomAxes[eje].Axis.Color:= Chart1.Series[i].Color;
Chart1.CustomAxes[eje].PositionPercent := 0;
Chart1.CustomAxes[eje].StartPosition := sPos;
Chart1.CustomAxes[eje].EndPosition := ePos;
ePos := ePos-nFactor;
sPos := sPos-nFactor;
Chart1.Series[i].CustomVertAxis := Chart1.CustomAxes[eje];
// EJE HORIZONTAL CUSTOMIZADO
inc(eje);
Chart1.CustomAxes.Add;
Chart1.CustomAxes[eje].LabelsFont.Color:= Chart1.Series[i].Color;
Chart1.CustomAxes[eje].Axis.Color:= Chart1.Series[i].Color;
Chart1.CustomAxes[eje].Horizontal:= true;
Chart1.CustomAxes[eje].PositionPercent := pPercent;
pPercent := pPercent + nFactor;
Chart1.CustomAxes[eje].StartPosition := 0;
Chart1.CustomAxes[eje].EndPosition := 100;
Chart1.Series[i].CustomHorizAxis := Chart1.CustomAxes[eje];
Chart1.Series[i].CustomHorizAxis.IsDateTime;
Chart1.Series[i].XValues.DateTime := True;
Chart1.Series[i].CustomHorizAxis.DateTimeFormat := 'hh:mm';
Chart1.Series[i].CustomHorizAxis.LabelsOnAxis:= false;
Chart1.Series[i].CustomHorizAxis.Labels:= false;
Chart1.Series[i].CustomHorizAxis.Increment := DateTimeStep[dtOneHour];
//------------------------------------------------------------------------------
// ANOTACION COMO PUEDO REFERENCIARLA A CADA EJE HORIZONTAL CUSTOMIZADO?
anotacion := TAnnotationTool.Create(self);
Chart1.Tools.Add(anotacion);
anotacion.Text:= TRIM(ListaItemsGrafico.Strings[i]) + ' ' +
TRIM(ListaDescItemsGrafico.Strings[i]) + ' ' +
TRIM(ListaUnidades.Strings[i]);
anotacion.Shape.CustomPosition := true;
anotacion.Shape.Left := 50;
anotacion.Shape.Top :=Chart1.Series[i].CustomHorizAxis.IStartPos;
if Odd(i) then
anotacion.Shape.Font.Color := clGreen
else
anotacion.Shape.Font.Color := clNavy;
anotacion.Shape.Font.Style := [fsBold];
anotacion.Shape.Transparent:=true;
//-------------------------------------------------------------
inc(eje);
Valores(i);
end;
end;
Saludos
Rafael Bernardo
Proceso de Datos
Celulosas de Asturias S.A.
Navia
Asturias
Annotation Tool
-
- Site Admin
- Posts: 14730
- Joined: Mon Jun 09, 2003 4:00 am
- Location: Banyoles, Catalonia
- Contact:
Hola Rafael,
El problema puede deberse a que cuando quieres posicionar las TAnnotationTool, el chart aun no se ha dibujado y en consecuencia la posición de los ejes no se ha inicializado.
Para solucionarlo tendrias que situar este código en el evento AfterDraw de TChart. Quiza, para forzar que se ejecute este código sea necesario utilizar Chart1.Draw;.
Si aun asi no consigues solucionar el problema, agradeceriamos que nos mandases un proyecto que nosotros podamos ejecutar para reproducir el error aquí. Puedes mandar tus ficheros a nuestros newsgroups públicos. Concretamente en [url]news://www.steema.net/steema.public.attachments[/url].
Si és possible, agradeceriamos que escribieras futuros mensajes en inglés para que el resto de clientes/usuarios puedan beneficiarse de las respuestas publicadas.
El problema puede deberse a que cuando quieres posicionar las TAnnotationTool, el chart aun no se ha dibujado y en consecuencia la posición de los ejes no se ha inicializado.
Para solucionarlo tendrias que situar este código en el evento AfterDraw de TChart. Quiza, para forzar que se ejecute este código sea necesario utilizar Chart1.Draw;.
Si aun asi no consigues solucionar el problema, agradeceriamos que nos mandases un proyecto que nosotros podamos ejecutar para reproducir el error aquí. Puedes mandar tus ficheros a nuestros newsgroups públicos. Concretamente en [url]news://www.steema.net/steema.public.attachments[/url].
Si és possible, agradeceriamos que escribieras futuros mensajes en inglés para que el resto de clientes/usuarios puedan beneficiarse de las respuestas publicadas.
Best Regards,
Narcís Calvet / Development & Support Steema Software Avinguda Montilivi 33, 17003 Girona, Catalonia Tel: 34 972 218 797 http://www.steema.com |
Instructions - How to post in this forum |