Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   DBChart (https://www.clubdelphi.com/foros/showthread.php?t=45131)

Caro 23-06-2007 17:11:46

DBChart
 
Hola a Todos

Me podrian indicar, como puedo hacer funcionar un DBChart, quiero probar con un ejemplo simple, digamos que tenga 2 tablas una de colegio(codigo, descripcion) y alumnos(codigo,nombre,ci,sexo,codigoColegio)
me gustaria poder graficar en un TDBChart (Pie->Torta), cuantos alumnos hay por colegio o tambien saber el porcentaje de mujeres y hombres de todos los colegios.

He visto que existe una pestaña dentro de Series -> DataSource, donde puedes escoger el dataSet, le asigne un query pero nada no aparece ningun campo para seleccionar en labels, que tipo de consultas debo hacer, no estoy entendiendo como funciona, me podrian indicar por favor muchisimas gracias por adelantado.

Saludos y que tengan un bonito dia

ContraVeneno 23-06-2007 18:10:40

Vamos a ver. Según entiendo, ya tienes un TQuery con la consulta que te muestra los datos que necesitas, este query asignado a un dataset. Un DBChart con una serie (supongamos que es tipo pastel, de entrada la serie se llamaría Series1 y sería del tipo TPieSeries).

Hasta ahí todo bien... ahora, según he visto, el problema es que siempre tratan de hacer la asignación al TDBChart, cuando realmente se debería trabajar con la serie. Al TDBChart solo se le enlaza el dataset y ya, todo el trabajo se hace sobre la serie.

Seleccionando la serie en el inspector de objetos, deberás establecer las propiedades XLabelSource para determinar el nombre de cada valor. Y en la propiedad PieValues, encontrarás una que se llama ValueSource, en esta es donde le asignas el campo que representa el valor que quieres mostrar.

Tambien encontrarás una propiedad llamada "Marks" y dentro de esta, una que se llama Style, donde defines que tipo de valor quieres, si es como porcentaje, el valor simple, etc, etc.

Y en si, eso es todo.

¿alguna duda?

Caro 25-06-2007 04:45:14

Hola ContraVeneno, perdon por responder recien pero no tenia Internet.
La verdad es que si estaba volando con esto del DBChart, ahora me queda mas claro, hare pruebas y si me surge otra duda te pregunto.

Muchisimas Gracias

tenporal 25-06-2007 06:43:26

no se puso el codigo como deberia
 
aqui va otra vez el codigo, espero que salga bien presentable.....

Código Delphi [-]
procedure Tform1.Button4Click(Sender: TObject);
var
   ejex,ejey:real; // el eje x y el eje y
   InputString: string; //para pedir un valor que luego lo convierto a numero
   error1,vi,vf, CICLO :integer; 
   // error1 es una variable que se ocupa cuando conviertes una 
   // cadena a numero y si se realizo tendra un cero.
   //vi es el valor inicial para graficar
   // vf es el valor final para graficar
   // ciclo es la variable de control para un ciclo de repeticiones
begin
     SERIES1.CLEAR; // limpio la serie 1 de mi grafico
     InputString:= InputBox('Teclee por favor', 'Valor inicial para X', '-50');
     // pido al usuario un valor inicial o le asigno por default -50
     VAL(inputstring,vi,ERROR1);
     // convierto la respuesta del usuario en numero y la guardo en vi
     if error1 = 0 then 
        begin
        // si es un numero pido el segundo numero
            InputString:= InputBox('Teclee por favor', 'Valor Final para X', '50');
            // pido al usuario un valor final o le asigno por default 50
            VAL(inputstring,vf,ERROR1);
            // convierto la respuesta en un numero y la guardo en vf
           if error1 = 0 then
            begin
            // si vf es un numero verifico que vi es menor que vf
                if vf <= vi then
                     SHOWMESSAGE('VALOR FINAL NO PUEDE SER MENOR O IGUAL QUE VALOR INICIAL')
               ELSE
                   BEGIN
                        // si vi < vf realizo un ciclo desde el vi hasta el vf
                        FOR CICLO := VI TO VF DO
                            BEGIN
                                EJEX := CICLO; // al eje x le asigno el valor de ciclo

                                EJEY := (NUMA*CICLO)*(NUMA*CICLO)+(NUMB*CICLO)+(NUMC); 
                                // eje y tiene la ecuacion de segundo grado, ciclo es mi variable x
                                SERIES1.AddXY( EJEX , EJEY , ' ' , clBlue );
                                // a la serie 1 del chart le adiciono los datos x, y
                         END;
                         CHART1.Visible := TRUE
                         // hago visible el chart que en un inicio tiene la propiedad
                        // visible en false
                     END // fin de la decision vf <= vi
                END // fin de convertir el segundo numero 
           ELSE
               SHOWMESSAGE('VALOR FINAL DEBE SER NUMERICO');
           END // fin de convertir el primer numero
      ELSE
           SHOWMESSAGE('VALOR INICIAL DEBE SER NUMERICO');
end; // fin del boton graficar

Otro ejemplo de dar valores a una serie en un grafico
Código Delphi [-]
With Series1 do
   Begin
      AddXY( 15.2 , 25.4 , 'Barcelona' , clBlue );
      Add(  40, 'Lapiz' , clRed ) ;
      Add(  60, 'Papel',  clBlue ) ;
      Add(  30, 'Tinta', clGreen ) ;
end;

waly2k1 27-10-2007 08:50:35

Problema similar (No refresca)
 
Hola muchascos, los molesto una vez mas
No me refresca el DBChart, logré que refresque con un datasource y refrescando el datasource, el tema es que yo tengo los colores predefinidos y son solo 4 items en la torta. Si asigno los colores en tiempo de diseño no me refresca los valores, si no asigno colores funciona, pero con los colores mas feos que encuentra en la paleta de colores del Win3.1 mas o menos.

Como cambio los colores una vez haya refrescado el componente???
Saludos y muchas gracias!!!


La franja horaria es GMT +2. Ahora son las 10:00:05.

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