nesesito generar graficas mediante los datos almacenados en una tabla, y la verdad no tengo ni idea de como hacerlo. La base de datos se encuentra realizada en Mysql server y estoy programando con Delphi 7.

| |||
Graficas Con Delphi Hola a todos, ojala puedan ayudarme: nesesito generar graficas mediante los datos almacenados en una tabla, y la verdad no tengo ni idea de como hacerlo. La base de datos se encuentra realizada en Mysql server y estoy programando con Delphi 7. ![]() |
| ||||
http://www.clubdelphi.com/ -> creo que hay de todo lo que preguntas Un ejemplo:
Código:
unit UniGraficoMejorado; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, OleCtrls, Menus, ExtCtrls, ArrowCha, Series, TeEngine, Spin, TeeProcs, Chart; type TPrincipal = class(TForm) Grafico: TChart; SE_1: TSpinEdit; SE_6: TSpinEdit; SE_2: TSpinEdit; SE_7: TSpinEdit; SE_3: TSpinEdit; SE_8: TSpinEdit; SE_4: TSpinEdit; SE_9: TSpinEdit; SE_5: TSpinEdit; SE_10: TSpinEdit; Series1: TPieSeries; Series2: TPieSeries; Series3: TBarSeries; Series4: TBarSeries; Series5: TLineSeries; Series6: TAreaSeries; Series7: TPointSeries; MM_Opciones: TMainMenu; MI_Titulos: TMenuItem; MI_Salir: TMenuItem; MI_TipoGrafico: TMenuItem; MI_Pastel2: TMenuItem; MI_Pastel3: TMenuItem; MI_Barras2: TMenuItem; MI_Barras3: TMenuItem; MI_Lineas: TMenuItem; MI_Areas: TMenuItem; MI_Puntos: TMenuItem; Acercade: TMenuItem; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; Label9: TLabel; Label10: TLabel; Panel1: TPanel; Archivos1: TMenuItem; Abrir1: TMenuItem; Guardar1: TMenuItem; OpenDialog1: TOpenDialog; SaveDialog1: TSaveDialog; procedure MI_SalirClick(Sender: TObject); procedure MI_TitulosClick(Sender: TObject); procedure FormCreate(Sender: TObject); {Declaramos este procedimiento propio para asociarlo al evento OnClick de todas las opciones de Tipo de gráfico.} procedure MI_GraficoClick(Sender: TObject); {Declaramos este procedimiento propio para asociarlo al evento OnChange de todos los componentes de tipo SpinEdit.} procedure SEChange(Sender: TObject); procedure AcercadeClick(Sender: TObject); procedure Abrir1Click(Sender: TObject); procedure Guardar1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Principal: TPrincipal; implementation uses uniAcercade1, uniTitulos; {Se declara la unidad que se crea y se invoca en esta ventana.} {$R *.DFM} procedure TPrincipal.MI_SalirClick(Sender: TObject); begin close; end; {Procedimiento que se ejecuta al arrancar el programa: al crearse la forma principal, se ejecuta el evento OnClick de la opción MI_Grafico enviando como parámetro el valor de la primera opción del menú Tipo de gráfico.} procedure TPrincipal.FormCreate(Sender: TObject); begin MI_GraficoClick(MI_Pastel2); end; {Procedimiento que ejecuta el evento OnClick de la opción "Títulos".} procedure TPrincipal.MI_TitulosClick(Sender: TObject); begin {Se crea aquí la forma donde se preguntan los títulos.} Application.CreateForm(TF_Titulos,F_Titulos); {"con la forma Títulos hacer lo siguiente".} with F_Titulos do begin {Si el gráfico tiene algún texto escrito en su propiedad Text de Title, asignamos este texto al Edit Título Superior.} if Grafico.Title.Text.Count>0 then E_Superior.Text:=Grafico.Title.Text[0]; {Si el gráfico tiene algún texto escrito en su propiedad Text de Foot (pié), asignamos este texto al Edit Título Inferior.} if Grafico.Foot.Text.Count>0 then E_Inferior.Text:=Grafico.Foot.Text[0]; {A continuación, mostramos la ventana de los títulos (ShowModal) y si, al volver, se ha pulsado el botón De acuerdo)...} if ShowModal=mrOK then begin {Se borra el texto del título y del pié del gráfico.} Grafico.Title.Text.Clear; Grafico.Foot.Text.Clear; {Si se ha escrito algo en la ventana de los títulos, se añaden al título y al pié del gráfico.} if (E_Superior.Text<>'') then Grafico.Title.Text.Add(E_Superior.Text); if (E_Inferior.Text<>'') then Grafico.Foot.Text.Add(E_Inferior.Text); // Se vuelve a dibujar el gráfico. Grafico.Repaint; end; {Se libera de la memoria esta forma de los títulos.} Free; end; end; {Procedimiento de usuario MI_GraficoClick. Todos los eventos OnClick de las opciones del menú Tipo de gráfico se asocian a este procedimiento.} procedure TPrincipal.MI_GraficoClick(Sender: TObject); var j:word; begin {¿Cómo sabemos qué opción del menú es la que se ha pulsado? Poniendo en tiempo de diseño a cada una un número Tag diferente. Asignamos a j el número de Tag de la opción pulsada. sender as TMenuItem es la opción que se ha pulsado.} j:=(sender as TMenuItem).Tag; {Asignamos a la propiedad Caption de P_Panel1 la Caption da opción pulsada.} //P_Panel1.Caption:=(sender as TMenuItem).Caption; {Activamos, es decir, asignamos el valor True a la serie que corresponde al tipo de gráfico que queremos dibujar.} Series1.Active:=(j=1); Series2.Active:=(j=2); Series3.Active:=(j=3); Series4.Active:=(j=4); Series5.Active:=(j=5); Series6.Active:=(j=6); Series7.Active:=(j=7); {Hacemos que quede marcada la opción que hemos activados antes.} MI_Pastel2.Checked:=Series1.Active; MI_Pastel3.Checked:=Series2.Active; MI_Barras2.Checked:=Series3.Active; MI_Barras3.Checked:=Series4.Active; MI_Lineas.Checked:=Series5.Active; MI_Areas.Checked:=Series6.Active; MI_Puntos.Checked:=Series7.Active; {Cuando se trata de un gráfico de tres dimensiones, como 3D Pastel o 3D Barras, activamos esta propiedad cuando se haya pulsado una de esas dos opciones.} Grafico.View3d:=(j=2) or (j=4); Grafico.View3dwalls:=(j=2) or (j=4); end; {Procedimiento de usuario SE_Change. Todos los eventos OnChange de los SpinEdit se asocian a este procedimiento.} procedure TPrincipal.SEChange(Sender: TObject); var i:integer; begin {Si la propiedad Text de los SpinEdit no tiene nada, asignamos el valor 0 a la propiedad Value de los mismos.} { if SE_1.Text='' then SE_1.Value:=0; if SE_2.Text='' then SE_2.Value:=0; if SE_3.Text='' then SE_3.Value:=0; if SE_4.Text='' then SE_4.Value:=0; if SE_5.Text='' then SE_5.Value:=0; if SE_6.Text='' then SE_6.Value:=0; if SE_7.Text='' then SE_7.Value:=0; if SE_8.Text='' then SE_8.Value:=0; if SE_9.Text='' then SE_9.Value:=0; if SE_10.Text='' then SE_10.Value:=0; } Última edición por dogduck; 09/05/2006 a las 12:36 |
| |||
Respuesta: Graficas Con Delphi Soy estudiante de ingeniería y se que es mucha molestia, bastante has hecho con subir este valioso código fuente, pero no logro compilar el programa, llevo varias semanas en él. los principales problemas son que no me acepta (E_Inferior.Text:=Grafico.Foot.Text[0];) y no se de donde sacas (procedure TPrincipal.SeChange(Sender: TObject); ) Podrías subir el código pero en delphi?, junto con todos sus archivos (.dfm .pas .dpr .dcu, etc) Gracias. Última edición por alexju; 10/06/2009 a las 20:41 |