Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   Ayuda (https://www.clubdelphi.com/foros/showthread.php?t=15639)

Yam 29-10-2004 17:48:38

Ayuda
 
Hola, tengo una forma con graficos teechart, y quiero en tiempo de ejecucion crear otro control y asignarle al nuevo todo los valores que tenga ya en alguno de los graficos que estan ya creados. Algo asi como duplicar cualquier grafico que este hecho en un control nuevo:confused:

Lepe 30-10-2004 04:23:15

Algo así?
Código Delphi [-]
var elnuevo:Teechart;
begin
 elnuevo := Teechar.create(application);
 with el nuevo do
 begin
    // asignar propiedades de uno a otro
 
  end;
end;

En principio tienes que recorrer las propiedades e irlas asignando una a una, quizás algunas de ellas tengan el método Assign, por lo que te será más leve el trabajo.

No dices si quieres hacerlo visible, o solo lo usas como respaldo, pero bueno, para hacerlo visible solo tendrás que situarlo en las coordenadas de pantalla y asignarle la propiedad Parent al control recien creado.

Ojo, al final de este procedimiento la variable 'Elnuevo' se perderá, pero el objeto quedará creado hasta que su Owner (Application en este caso) se destruya. Si quieres poder referenciarlo fuera del procedimiento, puedes poner a Elnuevo como propiedad privada de la ventana.

Saludos

Yam 01-11-2004 17:35:22

Gracias, realmente el problema es el siguiente, tengo varios graficos en una misma pantalla y quiero que todos ellos los pueda modificar (el color de las series, las formas de las barras, etc), con los mismos controles. Se me ocurrio duplicar el grafico seleccionado, que el usuario cambie las propiedades del grafico en el duplicadO, y luego devolverlas al grafico seleccionado. Pude duplicar el grafico y que sobre este se hicieran las modificaciones, pero al momento de devolverlo al grafico seleccionado, me da error, pues los componentes de las series ya estan creadas. Lo que hice fue lo siguiente

valor :Tchart
valor: Create.Tchart(nil)
procedure ChartTClick(Sender: TObject);
begin-->PARA SELECIONAR EL GRAFICO EN LA PANTALLA
CopiarSeries(Valor,ChartT,self);
end;

Procedure CopiarSeries(DestChart,SourceChart:TChart;
AOwner:TComponent);
Var tempSeries:TChartSeries;
tempS:TChartSeriesClass;
t,y:Longint;
begin--> PARA DUPLICAR EL GRAFICO
for t:=0 to SourceChart.SeriesCount-1 do
begin
tempS:=TChartSeriesClass(SourceChart.Series[t].ClassType);
tempSeries:=tmpS.Create(AOwner);
tempSeries.Assign(SourceChart.Series[t]);
tempSeries.Name:=(SourceChart.Series[t].Name);
DestChart.AddSeries(tmpSeries);
end;
---PARA CAMBIAR EL COLOR DE LA SERIE
procedure Shape1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
With valor.Series[ComboBox1.ItemIndex] do
SeriesColor:=EditColor(Self,SeriesColor);
CopySeries(ChartT,Valor,self); -->AQUI ME DA EL ERROR DE QUE YA EXISTE LA SERIE :confused:
Pero aqui me da el error

Lepe 03-11-2004 12:03:20

¿por qué no usas el Destino directamente sin usar el intermedio?

Sería más facil.

Además te sugiero que por favor, encierres el codigo entre [ delphi ] y [ /delphi ] (sin los espacios) para que se vea el código bien. Tal cual está es muy dificil seguirlo.

Por cierto, tmpS qué es?? porque dices tmps.Create, pero no está definido en esa función.


La franja horaria es GMT +2. Ahora son las 07:36:19.

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