Componente TPanelMiniaturas v.1.1110
TPanelMiniaturas es un componente pensado para gestionar una lista o colección de miniaturas, que enlazan con una lista de imágenes. Está pensado para gestionar la colección tanto en diseño como en ejecución.
Permite añadir imágenes de forma individual, en bloque (mediante una carpeta) y arrastrándolas desde el explorador.
Diferentes opciones para personalizar la lista de miniaturas.
Además permite gestionar de forma automática un «pase de diapositivas»; Se configura la velocidad de visualización y automáticamente el componente realiza un pase en «loop» por todas las imágenes almacenadas en la colección.
IMPORTANTE: Esta primera versión del componente no tiene en cuenta el consumo de memoria, algo que sí está previsto para las posteriores versiones, así que no es aconsejable utilizaro con un gran número de imágenes ni que tengan gran tamaño.
La autoría de este componente es compartida. De un ejemplo generado en mi web, Salvador Jover (Delphi básico) tuvo la idea de generar un componente; Creó la estructura básica utilizando colecciones y a partir de ahí, casi sin comerlo ni beberlo, fuimos añadiendo propiedades y características hasta generar esta primera versión. ;-D
Tanto en mi web, como en la suya iremos publicando más cosas sobre el componente, así que si te interesa puedes estar atento a ambas. Igualmente aceptamos sugerencias, correcciones, modificaciones,… y cualquier otra que sirva para mejorarlo y enriquecerlo. El código está disponible para uso libre. Si realizáis cambios o mejoras os agradeceríamos que nos los comuniquéis para añadirlos al componenete.
Diseño de clases del componente (Click para agrandar).
Puedes descargar tanto los fuentes completos del componente como las demos compiladas, por si te interesa probarlo sin necesidad de instalarlo, en los siguientes enlaces:
AÑADIDO(22/11): En el blog de Salvador podéis consultar una lista de Tarea/Bugs/Mejoras/… tanto de esta primera versión, como las propuestas para las próximas. Algo así como el «estado actual» y el «libro de ruta» de este pequeño proyecto.
Un saludo.
Embarcadero MVP.
Analista y Programador de Sistemas Informáticos.
Estudios de Informática (Ingeniería Técnica Superior) en la UPC (Universidad Politécnica de Barcelona).
Llevo utilizando Delphi desde su versión 3. Especialista en diseño de componentes, Bases de Datos, Frameworks de Persistencia, Integración Continua, Desarrollo móvil,…
Un componente muy interesante.
Aunque como advertiste hay que tener cuidado con el tamaño y la cantidad de las imágenes, lo he probado con una carpeta de 100MB de imágenes y se ha quedados sin recursos.
Saludos
Hola Domingo.
Tienes toda la razón, de ahí que esta primera versión es funcional «hasta cierto punto».
Todo esto empezó como un experimento y poco a poco vimos (Salvador y yo) que podía salir algo más definitivo y útil, así que nos propusimos publicarlo. Pero está claro que para que sea realmente útil le faltan un par de detalles importantes. Uno de ellos la gestión memoria, como has comentado, y el otro un mejor tratamiento de los formatos de archivos (imágenes).
Pero bueno, había que dejar algo para la siguiente versión, sino se nos acababa el trabajo demasiado pronto… ;-)
Un saludo.
Hola Domingo:
Añadir a lo dicho por Germán,nuestra invitación a discutir todos los detalles que se quieran, de forma que cualquier compañero sea libre de opinar y aportar.
A mi, particularmente, me preocupaba no ya que fuera enteramente funcional, que lo será sin duda, sino que pudiara brindar una oportunidad de que la comunidad participara y no fuera exclusivamente un proyecto de Salvador o de Germán. Si un componente sirve para que todos avancemos y nuestra comunidad siga adelante, valdrá la pena el esfuerzo, de lo contrario, será simplente un proyecto mas, entre tantos que existen, sin mas pena ni gloria. :-)
El tema del rendimiento ha sido uno de los que mas lineas nos han dedicado, en los correos que hemos podido cruzar Germán y yo y finalmente, pensamos que valia la pena, como bien ha dicho él, presentar esta primera versión y recoger todos los comentarios y aportaciones para evaluarlo y mejorar su funcionalidad.
Un saludo,
Salvador
Hola Neftali!
Sigo tu interesante blog y tus intervenciones en Clubdelphi. Muy bueno el componente!
Me preguntaba, se crees que es fácil permitir que se carguen imágenes en otros formatos como gif, png. No se si utilizando un añadido como GraphicEX, seria posible hacerlo de forma sencilla?
Un saludo,
Silvestre.
Hola Silvestre.
Creo que lo más sencillo sería utilizar las últimas versiones de Delphi y el soporte nativo para estos formatos que traen.
Versiones como D2010 o XE soportan PNG o JPG tan sólo añadiendo la unit correspondiente.
Si puedes usarlas, creo que sería muy fácil adaptar el componente. Si usas versiones antiguas, en ese caso habría que utilizar librerías de terceros,
Un saludo.
Estoy usando Delphi 7, probaré a ver sin con alguna librería gráfica externa como GraphicEX o Imaging de Vampyre fuera posible, aunque no soy muy lego en el tema gráfico.
Gracias Neftali!
Estoy usado delphi xe, como instalo las fuentes? gracias Soy nuevo en esto
Hola dcp.
Descarga los fuentes del componente.
Dentro del directorio src, existen 2 ficheros con extensión DPK (Delphi Package).
Abre primero en el diseño (src\PanelMiniaturasD.dpk) desde el IDE e instálalo.
Luego abre el de «runtime» (src\PanelMiniaturas.dpk) e instálalo.
Con eso debería estar todo.
Un saludo.
@Germán Estévez
Gracias Neftali
Lo hice asi, bueno, primero hice un build, y despues intente hacer el install, pero tanto el primer build como el install me dan error: Required package «PanelMinuaturas» not foud.
Despues intente hacer build del runtime y de este sime dejo hacerlo, pero aunque vuelvo a hacer el build e intento instalar el de Diseño me sigue danto el error.
Un saludo
@dpc
Hola dcp.
Cometí un error en el orden en te te dije que cargaras los packages.
Primero debes cargar el de runtime y luego el de diseño:
imagen: http://img801.imageshack.us/img801/4467/imagen1316.png
Compilar ambos y luego instalar el segundo:
imagen: http://img217.imageshack.us/img217/5771/imagen1317.png
Si todo va bien, debería instalarse sin problemas:
imagen: http://img191.imageshack.us/img191/8678/imagen1318.png
Un saludo.
@Germán Estévez
Hola Neftali, gracias por tus respuestas.
Creo que se quedo algo mal, he borrado y vuelto a descargar las fuentes y haciendo primero el de runtime y despues el de diseño he conseguido instalarlo.
no se si querias contestar a mi siguiente pregunta.
Intento hacer algo parecido a un documento power point.
Es decir, tengo una base de datos con los datos de los productos y un directorio (en una unidad de red) con las imagenes de estos productos.
Con Quickreport imprimo el catalogo sin problemas haciendo el correspondiente qry.
Pero mi idea es hacer un pase de diapositivas con los datos y las imagenes de los productos, para que este activo en una pantalla de un equipo.
Este componente que tan generosamente dejais a nuestra disposicion podria servime para esto, o Podrias darme alguna idea al respecto.
Gracias por tus respuestas e interes.
Saludos
Hola dpc.
El componente está pensado para gestionar las miniaturas de las imágenes, no se si eso es lo que estás buscando. Para mostrar un pase de imágenes, si no necesitas las miniaturas, tal vez sea demasiado; Con un TImage y una lista de las imágenes sería bastante.
Ten en cuenta también (tal y como se comenta) que es un componente que no tiene en cuenta el consumo de memoria, en esta primera versión.
Si vas a trabajar con muchas imágenes tal vez esto pueda darte problemas.
Un saludo.
Hola Neftali, sigo tu sitio desde hace tiempo y me resulta muy interesante. estoy enredado con una cuestion sumado a mi pobre conocimiento de la materia. Estuve viendo algunos de tus ejemplos, pero no logro adaptarlos a mi necesidad, la cual se ajusta a diseñar un form que contenga 32 TShape rectangulares, cada uno dividido en 5 regiones, donde cada region pueda pintarse de azul o rojo mediante click con el boton derecho del mouse. Solo el/los shape pintados, deben guardarse en una bbdd. Como solucion alternativa, pense en editar un bmp y sectorizarlos para poder pintar, pero no se hacer esto. Tienes alguna sugerencia al respecto ?. Desde ya muchas gracias. Saludos Cordiales.
@polomagri
Hola polomagri
No es un problema sencillo y tal vez necesita de más explicación. Tampoco me queda claro dónde tienes los problemas a la hora de implementar.
Creo que la opción más sencilla pasa por utilizar TShape, ya que no tendrás que lidiar con los problemas de pintado.
te recomiendo que para estos temas uses los foros; Por ejemplo, el del clubdelphi (www.clubdelphi.com) donde hay más gente que podrá ayudarte con el problema, además de yo mismo.
Un saludo.
Gracias por responder. Justamente sigo por aca, ya que anduve recorriendo varios foros (no solo clubdelphi), y tu ejemplo «Seleccionar Shapes Visualmente» va encaminado a mi necesidad. Por un lado, indico con el marco rojo el shape seleccionado al hacer clic. Ire por partes a ver si lo podemos resolverlo. Ahora, dentro de los shapes, deberia dibujar otro rectangulo y entre el mas grande y el mas chico, dividirlo justo a la mitad en cada uno de sus lados. Por lo tanto, deberia quedar 4 esquinas y el Rectangulo mas pequeño.
Saludos cordiales.
Boa noite, belo componente.
Tem como eu passar uma lista que está num dataset, para este componente.
e Criar as miniaturas apenas das imagens que está em cada registro do dataset.
Seria muito interessante esta integração com banco de dados, pois muitos software tem produtos com imagens e poder gerar as miniaturas de visualizas sem ter que abrir um novo form, fica show.
@Osmano
Hola Osmano.
Gracias por el comentario, aunque no estoy seguro de si la estructura del componente está enfocada a estos cambios, pues no fue diseñada para tal efecto. Tal vez con los cambios apropiados y teniendo en cuenta el tema de consumo de memoria, del que ya he hablado sea posible añadir eta funcionalidad.
Un saludo.
@Germán Estévez
Boa boite, é realmente pode ter um consumo grande de memória, principalmente se o banco de dados estiver em um servidor.
Neftalí, ontem te enviei um email com uma dúvida, se puder me ajudar agradeço muito.
Abraços.