PDA

Ver la Versión Completa : cambiar tipo de grafico en Chart en ejecucion


Masu
28-12-2003, 20:01:31
Hola a todos,


tengo un problemita y es que no se como puedo cambiar el tipo de grafico de un tchart en ejecucion, es decir, si lo configuro para que sea como una tarta, como puedo hacer para que en ejecucion pulsando un button pase a ser de barras por ejemplo.

Necesito saber en que propiedad se guarda ese dato.

Gracias y saludos :D

DarkByte
28-12-2003, 21:41:18
He estado echando una ojeada. Me he queado antrancado en Chart1.Series.Style ... pues me parece que por ahí debe de estar eso. De todos modos no me eche mucha cuenta, mi nivel en Delphi no es muy bueno que digamos...

Siento no haberte podido ayudar :(

elorza
09-01-2008, 12:20:20
Hola, tengo el mismo problema. Lo que a mi me pasa es que no se de qué tipo definir una variable que sea válido para todos los tipos. Haber si se me entiende:

procedure ....
var una:TBarSeries;
begin
una:=TBarSeries.Create(Chart1);
Chart1.addseries(una);
...
end;

Pero hay alguna manera que esa variabel una sea de algún otro tipo y le pueda asignar el valor mediante un parámetro de entrada?

procedure ... (tipo:xxxxx)
var una: xxxx;
begin
una:=xxxx.Create(Chart1);
Chart1.addseries(una);
...
end;
¡Suponiendo que "tipo" es la variable que se le pasa en ejecución con valor por ejemplo de TLineSeries,TBarSeries,TAreaSeries,...
Yo necesito saber esta variable llamada "tipo" de que tipo tiene que ser (general para todos los tipos)!

jachguate
09-01-2008, 16:46:33
Podes tratar polimórficamente a las series partiendo de su clase base: TChartSeries

Acabo de hacer esto, que funcionó perfectamente:


function TForm1.CreaSerie(Clase: TChartSeriesClass): TChartSeries;
begin
Result := Clase.Create(Chart1);
Chart1.AddSeries(Result);
Result.Add(random(50));
Result.Add(random(50));
Result.Add(random(50));
Result.Add(random(50));
Result.Add(random(50));
Result.Add(random(50));
Result.Add(random(50));
Result.Add(random(50));
Result.Add(random(50));
Result.Add(random(50));
Result.Add(random(50));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
CreaSerie(TBarSeries);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
CreaSerie(TLineSeries);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
CreaSerie(THorizBarSeries);
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
CreaSerie(THorizLineSeries);
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
CreaSerie(TAreaSeries);
end;


Hasta luego.

;)

elorza
10-01-2008, 10:32:40
Muchas muchas muchas gracias!!!!!!!!!!!!!!!!!!!!

elorza
10-01-2008, 11:40:24
Ahora tengo otra duda,

Primero visualizo la gráfica en tipo "TBarSeries" y a continuacion, lo convierto en "TAreaSeries". 2 duda:

1) ¿cómo le puedo indicar que el color de cada área sea diferente?

2) Al visualizar de tipo "TAreaSeries" se pierden los axis y los walls (lógico) pero luego al volver a visualizar de tipo "TBarSeries" esos axis y walls siguen desaparecido. Yo quiero que vuelvan a aparecer. Los axis ya lo he conseguido: Chart1.AxisVisible:=true; pero no encuentro el código para los walls.

¿Me podrías ayudar?

Gracias de antemano!

jachguate
10-01-2008, 18:53:10
Muchas muchas muchas gracias!!!!!!!!!!!!!!!!!!!!
OOP + Delphi, amigo... esas emociones son constantes... :p
¿cómo le puedo indicar que el color de cada área sea diferente?
...
¿Me podrías ayudar?

Mirá las propiedades de los Items de la serie ;)

Hasta luego.

;)