FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
#1
|
|||
|
|||
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
|
#2
|
||||
|
||||
Algo así?
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 |
#3
|
|||
|
|||
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 Pero aqui me da el error |
#4
|
||||
|
||||
¿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. Última edición por Lepe fecha: 03-11-2004 a las 12:10:28. |
|
|
|