PDA

Ver la Versión Completa : Como crear una rejilla automática con base de datos


mizzard
02-05-2011, 23:12:01
Hola a todos, os comento mi duda.

Resulta que tengo creada una base de datos con access (la conexión me funciona perfectamente).

El caso es que me gustaría crear una especie de rejilla (no se si con un DBGrid podría hacerse).

La idea es coger de una de las tablas las imágenes de unos productos y mostrarlos como si fuera una matriz (no uno debajo de otro como sería en una tabla).

El objetivo de esto es que al iniciar el programa lea los productos que hay y cargue las imágenes de forma automática, de tal forma si hay que realizar cambios en la base de datos, se actualice automáticamente en el programa.

No se si me he explicado bien, pero mi duda sería si ésto se podría hacer y como podría hacerse, porque no tengo claro por donde empezar.

Cualquier duda estaré encantado de resolverla.

Muchas gracias a todos, un saludo!

_cero_
03-05-2011, 04:54:27
Que quieres decir con matriz? Algo como esto (http://i1004.megapix.com/34546543f18649b3b621ede3a6dd593eba67a1fdb7a3e130.jpg), porque si es así es cosa difícil (hacerlo uno mismo, claro está), si quieres facilitarte la vida tendrás que conseguirte componentes de terceros, los de la imagen son los “Berg Component Suite” de pago, aunque por ahí a dé haber unos libres sería cuestión de buscar.

mizzard
03-05-2011, 08:42:13
Hola, la imagen que has puesto no la puedo ver. Cuando me refiero a una matriz me refiero a una serie de cuadriculas con imágenes tanto en filas como en columnas, algo como la imagen q pongo.

Y no sabes si existe algun otro componente para hacer lo mismo?? (con botones o de alguna otra forma?)

Gracias y un saludo!

_cero_
03-05-2011, 08:54:42
Perdón no puse bien el enlace pero es este:

http://www.megapix.com/?p=23LE1XCN.jpg

En cualquier caso sí sé que es una matriz, pero en el DBGrid ya aparecen los datos en matriz, es decir en filas y columnas por eso no entiendo. Lo que muestro en la imagen es lo que quieres hacer?

newtron
03-05-2011, 09:31:06
Hola, no conozco ningún componente que te haga eso por lo que podrías pensar en crear una serie de botones usando algún componente en el que puedas poner una imagen y creando los que necesites en lineas y filas según el tamaño que desees que tenga la imagen.

Aunque no para esto yo he hecho algo parecido para una impresión de etiquetas en la que se crea una matriz de botones de N etiquetas por ancho x M filas y que permite picar en cualquiera de ellos, por si te sirve de ejemplo te paso el código a continuación.

procedure TFormPideNumEti.LLamaNumEti(var NumEti: SmallInt;Filas,Columnas,Ancho,Alto: SmallInt);
var
Left,Top,EtiLin,EtiCol,N: SmallInt;
begin
FormPideNumEti := TFormPideNumEti.Create(Application);
try
SetLength(ArrayBotones,0);
EtiLin:=0;EtiCol:=0;
Top:=50;Left:=24;
T:=Columnas*Filas;
for N := 0 to T-1 do begin
Setlength(ArrayBotones,Length(ArrayBotones)+1);
ArrayBotones[N]:=tdsFancybutton.Create(nil);
ArrayBotones[N].Name:='Boton_'+IntToStr(N);
ArrayBotones[N].Left:=Left;
ArrayBotones[N].Top:=Top;
ArrayBotones[N].Width:=Ancho;
ArrayBotones[N].Height:=Alto;
ArrayBotones[N].Parent:=FormPideNumEti;
ArrayBotones[N].Font.Size:=20;
ArrayBotones[N].Caption:=IntToStr(N+1);
ArrayBotones[N].OnClick := BotonClick;
ArrayBotones[N].Tag := N+1;
if EtiLin=Filas-1 then begin
Top:=Top+Alto;
Left:=24;
EtiLin:=0;
end else begin
EtiLin:=EtiLin+1;
Left:=Left+Ancho;
end;
end;

FormPideNumEti.ShowModal;
NumEti := FormPideNumEti.NumEti;

finally
FormPideNumEti.Destroy;
end;

end;


Saludos

mizzard
03-05-2011, 09:55:37
Hola _cero_, no es exáctamente lo que busco (perdona por la imagen de antes que aporta poca informacion), la idea final es hacer algo tal que asi (he encontrado otra imagen mejor "matriz2").

newtron, el problema que tengo es q a cada imagen (alojada en una base de datos) va asociado un identificador, el cual necesito para poder obtener el resto de los datos de esa imagen en concreto.

Entonces si lo hiciese con botones, ¿seria posible crear en un panel tantos botones como elementos hayan en la base de datos y a cada uno asignarle su imagen? ¿Seria posible crear todos los botones y si no caben que salga una barra de scroll?

¿Como podria indicar cuando se crean los botones automáticamente el elemento al que pertenece cada uno de ellos si modifico la base de datos (con el programa cerrado)?

Bufff perdon por tanta pregunta, pero es que no se por donde tirar....


Muchas gracias!

newtron
03-05-2011, 10:12:16
Hola de nuevo.

Me huelo que lo que quieres hacer es una pantalla de ventas táctil. ¿Es así?

mizzard
03-05-2011, 10:13:26
Si, algo parecido...

mizzard
03-05-2011, 10:22:39
He estado mirando en los componentes y he encontrado el buttongroup y tiene buena pinta.

¿Alguien ha trabajado con él? Lo comento pq ahora lo q me faltaría es asignarle a cada boton que se genere la imagen correspondiente y el identificador para saber los datos que tengo que obtener de ese producto.

Un saludo!

newtron
03-05-2011, 10:29:07
Pues si quieres hacer algo medianamente profesional te lo vas a tener que currar a pelo.

http://s2.subirimagenes.com/fondosycapturas/previo/thump_6347071dibujo.jpg

Si te fijas en esta imagen verás que hay dos paneles, uno de 3x4 botones a la izquierda que son para las familias y otro a la derecha para los artículos de esa familia, también verás abajo unos botones de izquierda/derecha para ir pasando imágenes adelante o atrás. Todo está hecho con botones fijos que se van rellenando según vayas pulsando los botones de izquierda/derecha.

Espero haberte dado algo de luz sobre el tema pero tiene faena programar una cosa de estas.

Saludos

Neftali [Germán.Estévez]
03-05-2011, 10:49:34
Creo que el compoente TSimpleGraph (http://www.delphiarea.com/products/delphi-components/simplegraph/)te puede ayudar (facilitarte el trabajo de "pintar" elementos gráficos), pero la carga de datos vas a tener que hacerla tú desde Base de Datos.

mizzard
03-05-2011, 16:19:35
Hola a todos, finalmente lo he hecho con el componente ButtonGroup.

Una vez cargada la BBDD, utilizo diferentes querys en funcion de lo que busco y con los DBText y usando las opciones de moverme por los registros obtengo lo que buscaba. :D

Muchas gracias a todos y cualquier duda estaré encantado de colaborar!


Un saludo!

defcon1_es
03-05-2011, 18:39:00
Hola.
Tambien podrías usar el gran desconocido TDBCtrlGrid.

Puedes ver aqui (http://www.conta5.com/videos/16tpv/51EntradaTactil/5_ModuloTPV_Entrada_Tickets_Tactil.htm) como queda en la aplicación para TPV que desarrollo en la empresa donde trabajo

José Luis Garcí
03-05-2011, 18:41:50
Mizzard as probado con el componente del Club, TCCDDBImageGrid, te lo recomiendo para temas de Tpv, Tengo un amigo al que se lo recomendé y le quedo un tpv, muy vistoso y para los artículos usa este componente, lo que hizo fue usar sentencias Sql, según la familia para seleccionar el producto, aparte de la base de datos Familia, Claro.