PDA

Ver la Versión Completa : DBGrid en tiempo de ejecución


iga
12-12-2007, 10:42:31
Hola, estoy intentando utilizar un DBChart con un TDataSource y TOraQuery pero necesito rellenar en tiempo de ejecución. Es decir, el DataSource y el OraQuery son definidos en ejecución:

with OraQuery2 do
try
Close;
SQL.Text := 'SELECT * FROM LINEA_PEDIDO';
Open;
DataSource2.DataSet := OraQuery2;
DBGrid2.DataSource := DataSource2;

finally;
ShowMessage('ok lineas de pedido!');
end;

Todo ello me funciona, es decir veo los datos en el DBGrid. Pero ahora como defino las propiedades del DBChart?

Por ejemplo el título ya lo he conseguido--> DBChart2.Title.Text.CommaText:='Lineas de pedidos';
Pero ahora necesito definir:
-las series:
-definir el tipo de serie:
-definir que columna va a ir en el eje x:
-definir que columna va a ir en el eje y:
-definir que va a ir en el label:

¿Alguien me puede ayudar diciendome cual es el códido?
¿Conoceis algún tutorial o algo parecido para DBChart? He intentado buscar y a su vez, he estado leyendo la ayuda de delphi, pero la verdad que no me ha servido demasiado.

Muchar gracias.

iga

g_rojo
12-12-2007, 18:07:58
Hola iga

Tu pregunta es la misma que yo hiciera en otro momento, y la línea de código para cambiar el título de un DBChart me resultaría útil, porque yo mismo me preguntaba acerca de esto mismo.

En mi caso, no encontré las propiedades o métodos a partir de los cuales se acceden a las "partes" de un DBChart : título de gráfico, títulos de series, de ejes, datos numéricos para las series, etc. Pero encontre otras alternativas que me ayudaron a resolver mi caso:

EN primer lugar, tengo Borland Delphi 5.0 enterprise
En segundo lugar, uso un TQRChart dentro de un TQuickRep (objeto informe)

La asignacion de las series de datos para graficar varias líneas en un sistema de coordenadas X-Y, la he hecho en tiempo de diseño; no he encontrado aún algún método o propiedad que me permita hacerlo durante tiempo de ejecución. Y HE COMPROBADO que en tiempo de diseño se pueden usar solamente TTables de un modulo de datos compartido para elegir sus campos como series de gráfico.

De todas formas, he fabricado una tabla TTable (en un módulo público) que está vacía y tiene los campos que necesito para graficar:
Por ejemplo, los campos de esta TTable vacía son serie eje X, 1era serie eje y, 2nda serie eje Y, 3era serie eje Y, etc,..; y cada campo puede venir de diferentes tablas.
La tabla vacía la lleno con un consulta de parámetros TQuery, que se ejecuta en tiempo de ejecución con unas líneas en su propiedad SQL: ACLARO que antes de llenar la tabla, uso una instrucción para vaciarla totalmente de registros, y evitar que me entren en el gráfico datos pertenecientes a consultas anteriores. Entonces, empieza a llenarse desde "cero" registros.
Y esta misma consulta TQuery es la que asigné desde un primer momento a la propiedad "dataSet" (tiempo diseño) del TQuickRep que contiene al TQRChart.

Que embrollo!!! Esto es para leerlo despacio y detenidamente


Con respecto al título: como mi TQRChart está dentro de un TQuickRep, quito definitivamente el título de la gráfica y lo reemplazo por un objeto TQRLabel (para informes), cuya propiedad "Caption" puede ser cambiada en tiempo de ejecución, de distintas maneras.


Espero esté suficientemente claro, y que mi idea te pueda servir de algo.

Saludos!

g_rojo
12-12-2007, 18:09:51
Hola iga

Tu pregunta es la misma que yo hiciera en otro momento, y la línea de código para cambiar el título de un DBChart me resultaría útil, porque yo mismo me preguntaba acerca de esto mismo.

En mi caso, no encontré las propiedades o métodos a partir de los cuales se acceden a las "partes" de un DBChart : título de gráfico, títulos de series, de ejes, datos numéricos para las series, etc. Pero encontre otras alternativas que me ayudaron a resolver mi caso:

EN primer lugar, tengo Borland Delphi 5.0 enterprise
En segundo lugar, uso un TQRChart dentro de un TQuickRep (objeto informe)

La asignacion de las series de datos para graficar varias líneas en un sistema de coordenadas X-Y, la he hecho en tiempo de diseño; no he encontrado aún algún método o propiedad que me permita hacerlo durante tiempo de ejecución. Y HE COMPROBADO que en tiempo de diseño se pueden usar solamente TTables de un modulo de datos compartido para elegir sus campos como series de gráfico.

De todas formas, he fabricado una tabla TTable (en un módulo público) que está vacía y tiene los campos que necesito para graficar:
Por ejemplo, los campos de esta TTable vacía son serie eje X, 1era serie eje y, 2nda serie eje Y, 3era serie eje Y, etc,..; y cada campo puede venir de diferentes tablas.
La tabla vacía la lleno con un consulta de parámetros TQuery, que se ejecuta en tiempo de ejecución con unas líneas en su propiedad SQL: ACLARO que antes de llenar la tabla, uso una instrucción para vaciarla totalmente de registros, y evitar que me entren en el gráfico datos pertenecientes a consultas anteriores. Entonces, empieza a llenarse desde "cero" registros.
Y esta misma consulta TQuery es la que asigné desde un primer momento a la propiedad "dataSet" (tiempo diseño) del TQuickRep que contiene al TQRChart.

Que embrollo!!! Esto es para leerlo despacio y detenidamente


Con respecto al título: como mi TQRChart está dentro de un TQuickRep, quito definitivamente el título de la gráfica y lo reemplazo por un objeto TQRLabel (para informes), cuya propiedad "Caption" puede ser cambiada en tiempo de ejecución, de distintas maneras.


Espero esté suficientemente claro, y que mi idea te pueda servir de algo.

Saludos!

iga
13-12-2007, 08:58:11
Gracias por coger tiempo y par escribir todos los pasos, he leido y lo voy a intentar, pero yo tengo que utilizar otros componentes! ¡Espero que me sirva!

Muchisimas gracias!

Lepe
13-12-2007, 12:23:41
iga: Al menos tienes 3 o cuatro hilos hablando del mismo tema, es imposible seguir las evoluciones, te recomiendo encarecidamente que leas la guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php).

En uno de ellos te he puesto un ejemplo de como empezar. Según he visto por encima, todo se puede hacer por código delphi.

Yo al menos, no voy a mirar todos los hilos para ver las evoluciones, ya es complejo de por sí, con un solo hilo.

Saludos.

iga
13-12-2007, 22:41:44
Hola lepe, perdona por abrir más de un tema. No era mi intención crear confusiones o molestias para aquellos que estais intentando ayudarnos.
De verdad, te agradezco que me hayas respondido y me hayas invitado a leer e la "guia de estilo". Ya me lo he leido e intentaré cumplir las normas!

Muchas gracias.

iga

Lepe
14-12-2007, 01:52:10
Gracias a tí, aquí estamos todos para ayudarnos los unos a los otros.

Saludos